## 任务占用与边界 - 任务名称:财务分析开票费用与业绩明细违约赔付预览 - 实际开发者:yueyang - 任务来源/团队分工:负责人直接指定 - 目标结果:财务经营分析表按科目映射表拆分开票费用/不开票费用;业绩明细增加违约赔付(冲减收入)列并按指定顺序展示。 - 预计修改路径:业务 Pages Controller、财务分析视图、账单明细数据服务、业绩明细配置与相关测试。 - 将写入的公共契约:财务分析费用聚合、默认补偿预览命令、业绩明细列配置。 - 仅复用、明确不修改的公共契约:store_receipt_order_match_rows、ec_account_mapping_rules。 - 数据源、表/视图和字段:店铺收款账单镜像、store_receipt_order_match_rows、store_receipt_product_cost_rows、ec_account_mapping_rules。 - 明确不修改的范围:账单抓取与上游同步链路。 ## 开工碰撞检查 - [x] Codex 已执行 scripts/codex-task-preflight.ps1 - [x] 已检查最新 main 和远程任务分支 - [x] 已搜索主线既有页面、接口和数据服务 - [x] 已将写入和复用契约分开 - [x] 预检列出的残留分支均无开放 PR;当前 2 个开放 PR 与本任务无关,确认无活跃写入冲突 ## 实际改动 - 财务经营分析表增加“开票费用”“不开票费用”及合计;财务类型=费用,票据口径 0.06/0.09 归入开票,不开票归入不开票,金额按支出减收入净额。 - 费用聚合并入现有月度缓存,缓存键包含科目映射哈希,映射变化后自动失效。 - 业绩明细增加违约赔付(冲减收入)列,放在冲减金额后。 - CSV 导出列同步更新。 ## 验证证据 - 正常流程:2026-07/08/09 实库数据计算成功;2026-09 开票费用 3,896,538.65,不开票费用 81,377.62。 - 实际页面:2026-09 财务经营分析表 438 行,两列与合计正常展示。 - 性能:单月费用聚合 7.0–13.6 秒,PHP 峰值约 65.5 MB;页面结果缓存 5 分钟。 - 自动测试:NavigationTest 目标 2 条通过(35 assertions),StoreReceiptMappingPreviewOverrideTest 2 条通过(5 assertions)。 ## 风险检查 - [x] 不涉及数据库迁移或生产数据写入 - [x] 涉及金额口径,已用实库页面和固定总额核对 - [x] 未提交 .env、密码、Token、真实数据或构建产物 - [x] 前端符合 DESIGN.md 黑金表格样式 ## 合并前复查 - [x] 已基于最新 main 53bd1dc4 变基 - [x] 完整 diff 自审,无冲突标记 - [x] 目标测试通过 - [x] 负责人已授权 Squash merge 和发布 Reviewed-on: #480
CaiWuXiTong 财务系统
本项目基于 Akaunting 二次开发,包含统一系统设置、用户和侧边栏管理、多个只读云数据库来源,以及财务业务页面。
开发者快速开始
新人只需要做两件事:
- 启动 Docker Desktop;
- 在系统数据库页面输入负责人提供的系统数据库密码。
其余工作交给 Codex:拉取最新 main、执行 bash deploy/local-init.sh、处理本机引导库迁移、启动服务、清理缓存、打开 http://127.0.0.1:18088,并在连接后自动核对两套上游、数据字典和真实只读查询。初始化脚本会比较当前构建输入与镜像指纹,并校验必要静态资源;需要更新时自动重建,不再要求新人判断是否添加 --build。Codex 不得把这些命令、迁移或排错步骤转交给新人执行。
首次登录账号由初始化脚本生成并保存在本机私有凭据文件中。连接系统数据库成功后,临时登录会自动失效,改用系统数据库中属于自己的正式账号登录。
连接成功后,用户、侧边栏、系统设置、云数据库登记和共享快照会自动统一。不需要填写主机、端口、库名、账号、TLS、证书或两个云数据库密码,也不要复制生产环境或其他开发者的 APP_KEY、.env。
Codex 的接入验收不能只回答“成功”或“失败”,必须逐个来源报告:来源标识、数据库和 Schema、验证对象、读取字段、返回行数、耗时、数据状态及失败阶段。连接资料由系统自动处理,不属于新人操作项。
完整步骤和排错说明见 LOCAL_DEPLOY.md。需要在另一台电脑继续开发时,按 新电脑开发接续指南 操作;所有 Markdown 文档的入口见 文档索引。
数据库边界
- 本机 MySQL 只负责第一次启动和临时登录,不是团队业务数据源。
- 系统数据库统一保存应用用户、系统设置、侧边栏配置和云数据库连接记录。
- 云数据库属于只读上游。本地开发从系统数据库自动取得连接资料并执行固定只读查询;生产页面使用共享按需查询快照。
- 系统数据库保存查询登记、数据字典和生产共享快照,但不会执行 SQL,也不是 SQL Server 网络代理。
- 开发者需要新表或字段时,Codex 先通过共享数据字典和通用只读入口完成真实数据探索,再实现 Repository、生产范围和刷新器;新人不需要配置上游或执行探测命令。
- 不得把数据库密码、连接串、生产
APP_KEY、Token、SSH 私钥或runtime/.env提交到 Git。
开发和发布
- 新电脑接续指南:docs/新电脑开发接续指南.md
- 文档索引:docs/README.md
- 团队协作与安全规则:AGENTS.md
- 本地测试环境:LOCAL_DEPLOY.md
- 开发和正式部署:docs/开发与部署SOP.md
- 上游业务接入规范:docs/ecommerce-finance-development.md
- 视觉规范:DESIGN.md
正式发布只能使用已经合并的 main,并通过 scripts/deploy-from-workstation.ps1 在开发机构建提交 SHA 镜像。生产服务器只运行镜像,不执行源码构建。
技术基础
- PHP 8.3
- Laravel
- Vue
- Apache
- MySQL / MariaDB
- Docker
- Akaunting
上游 Akaunting 的版权和许可证信息见 LICENSE.txt。