fujian_water_biz_doc/docs/evidence/rev004-bad-debt-formal-table-dev-db-apply-2026-04-17.md
tangweijie cbecb60aed Record bad-debt formal-table rollout evidence for REV004
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
2026-04-17 12:33:27 +08:00

3.5 KiB
Raw Blame History

REV004 bad-debt formal-table 已应用到 application-dev 测试库2026-04-17

目标库

依据:

  • sw-business/sw-business-server/src/main/resources/application-dev.yaml

解析结果:

  • Host192.168.10.130
  • Port5436
  • DBsw_system
  • Usersw_system

已执行脚本

  • sql/rev004/REV004_bad_debt_formal_tables_deploy.sql

DDL 执行结果

结果:PASS

已确认存在:

  • biz_bad_debt_adjust
  • biz_bad_debt_adjust_detail
  • biz_bad_debt_adjust_seq
  • biz_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 smokefresh jar, port 48092

submit

  • unsold-bad-debt-submit on charge 991005REV004-991005-20260417121621
  • unsold-bad-debt-submit on charge 991006REV004-991006-20260417121622
  • 返回统一为:
    • objectType = BAD_DEBT_RECORD
    • approvalStatus = PENDING_APPROVAL
    • resultStatus = PENDING_APPROVAL
    • writeBackStatus = 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 detail
  • GET /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 已达到:

  1. DDL 可落库且可幂等重放;
  2. submit pending formal record 可落表;
  3. approve/reject 会同步 formal main/detail 状态;
  4. detail/page 对 BAD_DEBT_RECORD 已能返回 formal-first 结果;
  5. 日志链路继续保留兼容查询。

当前未完成

  • AccountingAdjustQueryServiceImpl 目前对坏账 formal-first 仅覆盖 detail/page 主路径,后续仍可继续补 stats/更细颗粒 read-model 一致性;
  • 本轮 smoke 数据尚未清理,需要在最终收口时删除临时 991005/991006 相关客户、账单、formal 记录与日志。

测试数据清理

HTTP smoke 完成后,已删除临时 bad-debt smoke 数据:

  • biz_operat_log / detailidentify_value = 991005, 991006
  • biz_bad_debt_adjust / detail
  • biz_charge991005, 991006
  • biz_custREV004_BD_SMOKE_A, REV004_BD_SMOKE_B

回读结果:

  • baddebt_main_left=0
  • operat_log_left=0
  • charge_left=0
  • cust_left=0

运行态清理

用于 fresh-jar HTTP smoke 的临时实例:

  • port 48092

已停止,当前无残留 LISTEN 进程。