From 29e2ae36a2e2fc3bf0685ac62422a5f05e5368a3 Mon Sep 17 00:00:00 2001 From: tangweijie <877588133@qq.com> Date: Fri, 17 Apr 2026 14:58:44 +0800 Subject: [PATCH] Refresh writtenoff formal-table smoke evidence after reliability patch This updates the REV004 writtenoff evidence with a fresh post-patch smoke run covering submit, detail/page query, approve/reject, DB writeback, cleanup, and runtime shutdown on port 48094. Constraint: Evidence must reflect the final backend patch set actually pushed for PR #77 Rejected: Leave the earlier pre-patch smoke as the last evidence point | weaker proof for the final transaction/fail-fast tightening Confidence: high Scope-risk: narrow Reversibility: clean Directive: If writtenoff smoke is rerun again, append a new dated subsection instead of overwriting this verification trail Tested: Fresh jar smoke on 48094 plus direct psql cleanup/readback verification on 2026-04-17 Not-tested: No separate document export/render pipeline run for this evidence refresh --- ...ff-formal-table-dev-db-apply-2026-04-17.md | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/docs/evidence/rev004-writtenoff-formal-table-dev-db-apply-2026-04-17.md b/docs/evidence/rev004-writtenoff-formal-table-dev-db-apply-2026-04-17.md index a97a1fc..d131f3b 100644 --- a/docs/evidence/rev004-writtenoff-formal-table-dev-db-apply-2026-04-17.md +++ b/docs/evidence/rev004-writtenoff-formal-table-dev-db-apply-2026-04-17.md @@ -100,3 +100,43 @@ smoke 完成后已删除: ## 当前未完成 - writtenoff formal-first 目前仍是最小实现,后续仍可优化 page 查询性能(避免 listAll + getView N+1); - 若需要更细的 charge_detail 差异映射到 formal 明细,可在后续补强。 + + +## 最终补丁后复核(2026-04-17 14:57 +08:00) +针对本轮补加的两个可靠性修正再次执行 fresh-jar smoke: +1. `createSoldAction(...)` 补 `@Transactional`,确保 synthetic `operat_log` 与 formal pending 记录同事务提交; +2. writtenoff approve/reject 缺失 formal 主记录时改为显式报错,避免静默跳过 formal 状态更新。 + +### fresh jar +- 端口:`48094` +- 启动方式:`/usr/bin/java -jar sw-business/sw-business-server/target/sw-business-server.jar --spring.profiles.active=dev --server.port=48094` +- `GET /actuator/health` 返回:`{"status":"UP"}` + +### smoke 数据 +- charge `992105`(approve) +- charge `992106`(reject) +- submit 返回调整单: + - `REV004-SLD-992105-20260417145725` + - `REV004-SLD-992106-20260417145726` + +### HTTP 结果 +- `sold-submit`:两笔均返回 `PENDING_APPROVAL / PENDING` +- `get?adjustmentNo=REV004-SLD-992105-20260417145725`:可返回 formal detail(核销金额、账务年月等) +- `page?objectType=WRITTENOFF_ADJUST`:可返回两笔 fresh smoke formal 记录 +- `approve`:返回 `APPROVED / SUCCESS / UPDATED` +- `reject`:返回 `REJECTED / FAIL / SKIPPED` + +### DB 回读 +`biz_writtenoff_adjust`: +- `REV004-SLD-992105-20260417145725 -> APPROVED | UPDATED | SUCCESS` +- `REV004-SLD-992106-20260417145726 -> REJECTED | SKIPPED | FAIL` + +`biz_writtenoff_adjust_detail`: +- approve 明细:`SUCCESS | APPROVE_EXECUTE | approve final smoke` +- reject 明细:`REJECTED | REJECT | reject final smoke` + +`biz_charge`: +- `992105 -> pay_state=2, extended_amount=0, discount_money=120, original_money=120` +- `992106 -> pay_state=1, extended_amount=88, discount_money=0, original_money=88` + +说明:最终补丁后,writtenoff submit / get / page / approve / reject 主链路再次通过,且回写结果与预期一致。