This adds the rollout evidence for REV004 bad-debt formal-table work, covering DDL application, targeted verification, fresh-jar HTTP smoke, and cleanup proof on the application-dev database. Constraint: Evidence scope stays limited to bad-debt formal-table rollout and should not absorb unrelated REV004 docs backlog Rejected: Wait to document until writtenoff/price-diff formalization lands | delays a completed bad-debt evidence slice Confidence: high Scope-risk: narrow Reversibility: clean Directive: If later bad-debt semantics expand beyond payState write-back, append a new evidence note instead of rewriting this rollout record Tested: Evidence content cross-checked against compile/test/DDL/HTTP smoke outputs captured in this session Not-tested: No doc export/render verification performed
3.5 KiB
3.5 KiB
REV004 bad-debt formal-table 已应用到 application-dev 测试库(2026-04-17)
目标库
依据:
sw-business/sw-business-server/src/main/resources/application-dev.yaml
解析结果:
- Host:
192.168.10.130 - Port:
5436 - DB:
sw_system - User:
sw_system
已执行脚本
sql/rev004/REV004_bad_debt_formal_tables_deploy.sql
DDL 执行结果
结果:PASS
已确认存在:
biz_bad_debt_adjustbiz_bad_debt_adjust_detailbiz_bad_debt_adjust_seqbiz_bad_debt_adjust_detail_seq
已确认幂等重放通过:
- second apply 输出
already exists, skipping - 无重复约束/重复索引异常
代码验证
compile
mvn -pl sw-business/sw-business-server -DskipTests compile
结果:PASS
targeted tests
mvn -pl sw-business/sw-business-server \
-Dtest=ChargeServiceAccountingAdjustTest,AccountingAdjustActionServiceImplTest,AccountingAdjustProcessServiceImplTest,AccountingAdjustQueryServiceImplTest,BadDebtFormalizationServiceTest test
结果:PASS
- Tests run: 55
- Failures: 0
- Errors: 0
HTTP smoke(fresh jar, port 48092)
submit
unsold-bad-debt-submiton charge991005→REV004-991005-20260417121621unsold-bad-debt-submiton charge991006→REV004-991006-20260417121622- 返回统一为:
objectType = BAD_DEBT_RECORDapprovalStatus = PENDING_APPROVALresultStatus = PENDING_APPROVALwriteBackStatus = PENDING
DB 回读
biz_bad_debt_adjust:
- approve 样例:
APPROVED|UPDATED|SUCCESS|approve smoke - reject 样例:
REJECTED|SKIPPED|FAIL|reject smoke
biz_bad_debt_adjust_detail:
- submit 后 detail 进入
PENDING_APPROVAL - 审批通过后 detail 进入
SUCCESS - 审批驳回后 detail 进入
REJECTED
query
GET /admin-api/business/accounting-adjust/get?adjustmentNo=...对 bad debt 已返回 formal detailGET /admin-api/business/accounting-adjust/page?...objectType=BAD_DEBT_RECORD已返回 formal-first 列表GET /admin-api/business/accounting-adjust/logs?adjustmentNo=...仍通过 legacy operat_log 返回完整轨迹
approve / reject
- approve:
/admin-api/business/accounting-adjust/approve- 返回
APPROVED/SUCCESS/UPDATED - 账单
pay_state被回写为UNCOLLECTIBLE(-2)
- 返回
- reject:
/admin-api/business/accounting-adjust/reject- 返回
REJECTED/FAIL/SKIPPED - 账单状态保持原值,不执行坏账回写
- 返回
当前结论
本轮坏账 formal-table 已达到:
- DDL 可落库且可幂等重放;
- submit pending formal record 可落表;
- approve/reject 会同步 formal main/detail 状态;
- detail/page 对
BAD_DEBT_RECORD已能返回 formal-first 结果; - 日志链路继续保留兼容查询。
当前未完成
AccountingAdjustQueryServiceImpl目前对坏账 formal-first 仅覆盖 detail/page 主路径,后续仍可继续补 stats/更细颗粒 read-model 一致性;- 本轮 smoke 数据尚未清理,需要在最终收口时删除临时
991005/991006相关客户、账单、formal 记录与日志。
测试数据清理
HTTP smoke 完成后,已删除临时 bad-debt smoke 数据:
biz_operat_log / detail(identify_value =991005,991006)biz_bad_debt_adjust / detailbiz_charge(991005,991006)biz_cust(REV004_BD_SMOKE_A,REV004_BD_SMOKE_B)
回读结果:
baddebt_main_left=0operat_log_left=0charge_left=0cust_left=0
运行态清理
用于 fresh-jar HTTP smoke 的临时实例:
- port
48092
已停止,当前无残留 LISTEN 进程。