diff --git a/docs/evidence/rev004-prestorage-strict-formal-first-2026-04-17.md b/docs/evidence/rev004-prestorage-strict-formal-first-2026-04-17.md new file mode 100644 index 0000000..440cc4a --- /dev/null +++ b/docs/evidence/rev004-prestorage-strict-formal-first-2026-04-17.md @@ -0,0 +1,94 @@ +# REV004 prestorage process/attachments strict formal-first(2026-04-17) + +## 目标 +收口: +- `GET /admin-api/business/accounting-adjust/prestorage-process` +- `GET /admin-api/business/accounting-adjust/prestorage-attachments` + +使其优先读取 prestorage formal-table,而不是继续主要依赖 legacy/unified fallback。 + +## 代码变更 +核心变更位于: +- `AccountingAdjustProcessServiceImpl` +- `AccountingAdjustProcessServiceImplTest` + +策略: +1. `getProcess(adjustmentNo)` 先尝试 `PrestorageFormalizationService.getView(adjustmentNo)` +2. 命中 formal view 时,直接组装 `AccountingAdjustProcessRespVO` +3. `getAttachments(adjustmentNo)` 先尝试读取 formal `attachmentRefs` +4. 仅在 formal 不存在时才回退到 synthetic / unified 口径 + +## 验证 +### compile +```bash +mvn -pl sw-business/sw-business-server -DskipTests compile +``` +结果:**PASS** + +### targeted tests +```bash +mvn -pl sw-business/sw-business-server -Dtest=AccountingAdjustProcessServiceImplTest,AccountingAdjustPrestorageProcessServiceImplTest test +``` +结果:**PASS** +- Tests run: 23 +- Failures: 0 +- Errors: 0 + +## fresh jar smoke(port 48098) +### health +- `GET /actuator/health` -> `{"status":"UP"}` + +### smoke 数据 +手工 seed: +- `adjustmentNo = REV004-PTR-993001-SEED` +- formal main:`biz_prestorage_adjust` +- formal detail:`biz_prestorage_adjust_detail` +- attachment refs:`101,proof-raw` + +### process +调用: +- `GET /admin-api/business/accounting-adjust/prestorage-process?adjustmentNo=REV004-PTR-993001-SEED` + +结果:**PASS** +返回关键字段: +- `objectType = LEGACY_PRESTORAGE_TRANSFER` +- `adjustType = TRANSFER` +- `actionAmount = 20.0` +- `resultStatus = SUCCESS` +- `approvalStatus = NOT_REQUIRED` +- `writeBackStatus = UPDATED` +- `attachmentRefs = ["101", "proof-raw"]` +- `applicant = 王五` +- `contactMobile = 13700000000` +- `latestMessage = 预存转账成功,目标户号=C-993002` + +说明:process 已命中 formal main,而不是再走 unified detail 兜底。 + +### attachments +调用: +- `GET /admin-api/business/accounting-adjust/prestorage-attachments?adjustmentNo=REV004-PTR-993001-SEED` + +结果:**PASS** +返回: +- ref=`101` -> 数值 ID 解析,当前附件实体不存在,返回 `resolved=false, message=附件不存在` +- ref=`proof-raw` -> 非数值引用,返回 `resolved=false, message=附件引用不是数值ID,保留原始引用` + +说明:attachments 已优先读取 formal `attachmentRefs`,并保留现有解析策略。 + +## 清理 +已删除: +- `biz_prestorage_adjust / detail` seed 数据 + +回读结果: +- `prestorage_main_left=0` +- `prestorage_detail_left=0` + +运行态: +- `48098` 已停止 + +## 当前结论 +本轮 prestorage 剩余查询缺口已完成 strict formal-first 收口: +1. `prestorage-process` 优先命中 formal +2. `prestorage-attachments` 优先命中 formal attachment refs +3. formal 缺失时仍可继续 fallback +4. 主链路 schema / 写路径无变更