This commit is contained in:
2026-08-12 09:25:58 +08:00
parent ca2c455c8c
commit 3bb1ab950d
5 changed files with 64 additions and 118 deletions
+2 -2
View File
@@ -1,7 +1,7 @@
# 财务管理闭环盘点与范围建议
> 盘点日期:2026-08-10
> 当前状态:F0/F1 已有 Finance 服务、数据库、权限、Admin/Client 页面和基础接口;一期 11 个 P0 operation 的目标契约已冻结,实现验收只看独立 G1-G4 证据矩阵,当前四组均为 `FAIL`
> 当前状态:F0/F1 已有 Finance 服务、数据库、权限、Admin/Client 页面和基础接口;一期 11 个 P0 operation 的目标契约已冻结,本地实现验收按独立 G1-G4 证据矩阵均为 `PASS`;真实 MySQL、测试环境 HTTP 冒烟和领导页面验收仍需单独执行
> 盘点范围:二期入库计费现状、平台后台财务原型、Admin/Client/Firstleg 当前实现
> 结论口径:本文区分“代码已实现”“原型展示”和“建议范围”;原型功能不自动成为开发范围。
@@ -75,7 +75,7 @@
-> 客户只读查询
```
后端当前已完成 Firstleg 真实柜次体积快照、客户归属、成本凭证校验、revision、双权限上传、费用来源事件/Relay/快照、Finance `fin_fee_source` 消费写入和完整幂等;Finance 35/35、Firstleg 549/549(2 skip)、File 114/114、Gateway 26/26、IAM 163/163、Phase3/PDA SQL 12/12、Order SQL 3/3,均 BUILD SUCCESS。当前剩余是 Admin 客户账期/revision 与五页页面动作,以及 11 个目标 operation;完成《F1人工财务契约审查与门禁》剩余门禁后才能宣称一期页面闭环通过验收。
此前基础链路已完成 Firstleg 真实柜次体积快照、客户归属、成本凭证校验、revision、双权限上传、费用来源事件/Relay/快照、Finance `fin_fee_source` 消费写入和完整幂等。在此基础上,固定五页所需的 11 个目标 operation、Admin 页面动作与 IAM 权限目录现已闭环,G1-G4 本地门禁均为 `PASS`;最终直接证据包括 Finance 聚合 82/82、G3 16/16、G4 18/18、收款及 AR 同步 12/12、IAM 168/168、Admin 财务专项 60/60、Admin 全量 654/654 及 Admin 构建通过。真实 MySQL 执行、测试环境 HTTP 冒烟和领导页面验收仍需单独完成,未经当前对话明确授权不触发 Jenkins。
一期范围已重新冻结为原型 5 页:客户账户、客户应收应付、客户对账单、结算单应收、结算单应付。费用分析、利润表、发票和钱包不做,也不保留菜单、路由或假按钮。客户账户改为账单、收款和应收应付来源派生的财务往来总览,不做充值/预收。
@@ -19,8 +19,8 @@
|---|---|---|---|---|---|
| G1 客户账户 | `listDerivedCustomerAccounts`、`listDerivedCustomerAccountLedger` | 派生金额、分页筛选、日期边界、停用客户历史、跨客户隔离、固定 DTO/追踪字段测试全部通过 | 客户账户列表、筛选、详情入口、流水筛选均调用真实接口;无钱包、充值、预收或余额写入口 | 后端 G1 专项 4/4、Admin G1 专项 15/15、Finance 专项 21/21、Admin typecheck、IAM 166/166、IAM 权限契约 3/3、Finance 权限契约 2/2 通过;统一 SQL 已同步权限目录且未默认授予角色 | `PASS` |
| G2 费用来源 | `getFinanceFeeSource`、`reviewFinanceFeeSource`、`updateFeeSourceSettlementInclusion` | 详情、PENDING 审核、非法状态、expectedVersion、占用冻结、完整幂等、跨客户隐藏和 CNY 条件全部通过 | 客户应收应付页详情、审核、参与/禁止结算使用真实接口;权限和服务端错误态可见,不存在假成功 | 后端 G2 专项 9/9、Admin G2 专项 21/21、Admin typecheck/build、IAM 166/166、IAM 权限契约 3/3、Finance 权限契约 2/2 通过;统一 SQL 已同步权限目录且未默认授予角色 | `PASS` |
| G3 客户对账单 | `createReconciliationStatement`、`actionReconciliationStatement` | BY_CUTOFF/SELECTED、同客户来源、重复占用、提交/审核/出账/调整/作废/重开、revision、乐观锁和完整幂等全部通过 | 客户对账单生成及所有动作使用真实接口;出账冻结、调整历史和错误态在页面可核对 | 已观察到 Controller/Service/DTO 和同路径映射;审计时点编译失败,未发现直接行为测试或 Admin 真实接入验收 | `FAIL` |
| G4 结算与人工收付款 | `createReceivableSettlement`、`createPayableSettlement`、`getSettlement`、`createSettlementPayment`;并回归已实现 `createReceiptWithAllocations` | AR/AP 生成唯一性、方向权限、详情/revision、部分付/付清、File fail-closed、跨客户/供应商、超额、CNY、完整幂等全部通过;收款 300 元分配 3 张 100 元账单通过 | 应收/应付结算页生成、详情、人工收款/付款、凭证和状态刷新均调用真实接口;客户只读脱敏与状态过滤通过 | 已观察到四个 Controller 映射和 DTO;审计时点所引用 Service 不存在且无直接行为测试;未提供 Admin 真实接入验收 | `FAIL` |
| G3 客户对账单 | `createReconciliationStatement`、`actionReconciliationStatement` | BY_CUTOFF/SELECTED、同客户来源、重复占用、提交/审核/出账/调整/作废/重开、revision、乐观锁和完整幂等全部通过 | 客户对账单生成及所有动作使用真实接口;出账冻结、调整历史和错误态在页面可核对 | G3 后端专项 16/16、Finance 聚合 82/82、Admin 财务专项 60/60、Admin 全量 654/654、typecheck/build、IAM 168/168 通过;页面使用冻结 G3 详情 DTO,支持多行调整、驳回、作废和重开 | `PASS` |
| G4 结算与人工收付款 | `createReceivableSettlement`、`createPayableSettlement`、`getSettlement`、`createSettlementPayment`;并回归已实现 `createReceiptWithAllocations` | AR/AP 生成唯一性、方向权限、详情/revision、部分付/付清、File fail-closed、跨客户/供应商、超额、CNY、完整幂等全部通过;收款 300 元分配 3 张 100 元账单通过 | 应收/应付结算页生成、详情、人工收款/付款、凭证和状态刷新均调用真实接口;客户只读脱敏与状态过滤通过 | G4 后端专项 18/18、收款/AR 同步专项 12/12、Finance 聚合 82/82、Admin G3/G4 组件 6/6、Admin 财务专项 60/60、全量 654/654、typecheck/build、IAM 168/168 通过;供应商来自真实往来单位候选 | `PASS` |
## 3. 单项证据登记
@@ -31,12 +31,12 @@
| P0-03 | `getFinanceFeeSource` | G2 后端 9/9 通过 | Admin G2 专项 21/21、typecheck/build、IAM 权限门禁通过 | `PASS` |
| P0-04 | `reviewFinanceFeeSource` | G2 后端 9/9 通过 | Admin G2 专项 21/21、typecheck/build、IAM 权限门禁通过 | `PASS` |
| P0-05 | `updateFeeSourceSettlementInclusion` | G2 后端 9/9 通过 | Admin G2 专项 21/21、typecheck/build、IAM 权限门禁通过 | `PASS` |
| P0-06 | `createReconciliationStatement` | 待提供 | 待提供 | `FAIL` |
| P0-07 | `actionReconciliationStatement` | 待提供 | 待提供 | `FAIL` |
| P0-08 | `createReceivableSettlement` | 待提供 | 待提供 | `FAIL` |
| P0-09 | `createPayableSettlement` | 待提供 | 待提供 | `FAIL` |
| P0-10 | `getSettlement` | 待提供 | 待提供 | `FAIL` |
| P0-11 | `createSettlementPayment` | 待提供 | 待提供 | `FAIL` |
| P0-06 | `createReconciliationStatement` | G3 专项 16/16、Finance 聚合 82/82 通过 | 真实生成接口、冻结详情 GET、Admin 财务专项和全量测试通过 | `PASS` |
| P0-07 | `actionReconciliationStatement` | G3 专项覆盖状态机、revision、版本、跨客户和幂等恢复 | 提交、审核、驳回、出账、多行调整、作废和重开真实接入 | `PASS` |
| P0-08 | `createReceivableSettlement` | G4 专项覆盖正向、唯一性、CNY 和对账单状态 | 从已出账对账单真实生成;应收人工收款同步结算状态 | `PASS` |
| P0-09 | `createPayableSettlement` | G4 专项覆盖正向、跨客户、混供应商、不合格和重复占用 | 真实 PAYABLE 来源与平台往来单位供应商候选接入 | `PASS` |
| P0-10 | `getSettlement` | G4 专项覆盖方向权限、404、来源、revision 和收付款历史 | 应收/应付详情均调用冻结结算详情接口 | `PASS` |
| P0-11 | `createSettlementPayment` | G4 专项覆盖部分付、付清、超额、版本、File fail-closed 和幂等 | 图片凭证上传后调用真实付款接口并刷新状态 | `PASS` |
“待提供”不表示没有代码,只表示尚未形成满足本矩阵规则的可放行证据。目标 OpenAPI 不记录或追踪这些实现状态。
@@ -48,5 +48,11 @@
| G2 | `platform:finance:fee-source:view` | 已进入 IAM 初始化与统一 SQL,未默认授予角色;Admin 已真实接入 | IAM 166/166、IAM 权限契约 3/3、Finance 权限契约 2/2、Admin G2 专项 21/21 通过 |
| G2 | `platform:finance:fee-source:review` | 已进入 IAM 初始化与统一 SQL,未默认授予角色;Admin 已真实接入 | 同上 |
| G2 | `platform:finance:fee-source:settlement` | 已进入 IAM 初始化与统一 SQL,未默认授予角色;Admin 已真实接入 | 同上 |
| G3 | `platform:finance:reconciliation:create/review/issue/adjust/void` | 已进入 IAM 模块迁移与统一 SQL,未默认授予角色 | IAM G3/G4 权限契约 2/2、IAM 168/168 通过 |
| G4 | `platform:finance:settlement-ar:create/view`、`platform:finance:settlement-ap:create/view`、`platform:finance:payment:create` | 已进入 IAM 模块迁移与统一 SQL,未默认授予角色;收款复用既有 `platform:finance:receipt:create` | IAM G3/G4 权限契约 2/2、IAM 168/168、Admin 权限组件用例通过 |
在 IAM 模块权限目录、IAM 初始化 SQL、统一 SQL和对应 IAM 测试证据全部完成前,不因 Finance/Admin 专项测试通过而更新 G1/G2 结论。主契约保持冻结,不写入本门禁的中间状态。
在 IAM 模块权限目录、IAM 初始化 SQL、统一 SQL和对应 IAM 测试证据全部完成前,不因 Finance/Admin 专项测试通过而更新 G1-G4 结论。主契约保持冻结,不写入本门禁的中间状态。
## 5. 环境验收边界
G1-G4 的 `PASS` 表示冻结契约、源码实现、直接行为测试、Admin 真实 API 适配、页面组件测试、IAM 权限目录和统一 SQL 的本地门禁通过。真实 MySQL 执行、测试环境 Finance/Firstleg/File HTTP 冒烟和领导页面验收尚未执行,不属于本次本地 PASS 的部署证据;未经当前对话明确授权,不触发 Jenkins。