fujian_water_biz_doc/docs/evidence/rev004-prestorage-formal-table-dev-db-apply-2026-04-16.md
tangweijie ee78477e8f Record prestorage formal-table rollout evidence for REV004
This documents the prestorage formal-table rollout status, including test DB
DDL application, HTTP smoke evidence, cleanup proof, and the updated
formal-table status matrix for REV004.

Constraint: Documentation must stay scoped to prestorage formal-table evidence and status updates only
Rejected: Fold unrelated REV004 evidence backlog into this commit | would dilute the deliverable and review scope
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: When process/attachments become strict formal-first, update the status matrix and evidence instead of replacing this rollout record
Tested: Evidence file cross-checked against backend compile/test/DB/HTTP smoke outputs
Not-tested: No independent docs rendering/export verification performed
2026-04-17 10:52:11 +08:00

7.4 KiB
Raw Blame History

REV004 prestorage formal-table 已应用到 application-dev 测试库2026-04-16

目标库

依据:

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

解析结果:

  • Host192.168.10.130
  • Port5436
  • DBsw_system
  • Usersw_system

即当前 application-dev 指向的测试数据库为: jdbc:postgresql://192.168.10.130:5436/sw_system

已执行脚本

  • sql/rev004/REV004_prestorage_formal_tables_deploy.sql

执行命令:

PGPASSWORD='Em@123456' \
psql -h 192.168.10.130 -p 5436 -U sw_system -d sw_system \
  -v ON_ERROR_STOP=1 \
  -f sql/rev004/REV004_prestorage_formal_tables_deploy.sql

执行结果

结果:PASS

执行输出显示:

  • biz_prestorage_adjust_seq 创建成功
  • biz_prestorage_adjust_detail_seq 创建成功
  • biz_prestorage_adjust 创建成功
  • biz_prestorage_adjust_detail 创建成功
  • 主表索引、明细表索引创建成功
  • 外键 fk_biz_prestorage_adjust_detail_main 创建成功

回读校验

已确认存在:

  • biz_prestorage_adjust
  • biz_prestorage_adjust_detail

序列

已确认存在:

  • biz_prestorage_adjust_seq
  • biz_prestorage_adjust_detail_seq

关键索引

已确认存在:

  • uk_biz_prestorage_adjust_no
  • idx_biz_prestorage_adjust_source
  • idx_biz_prestorage_adjust_target
  • idx_biz_prestorage_adjust_type
  • idx_biz_prestorage_adjust_status
  • idx_biz_prestorage_adjust_executed_at
  • idx_biz_prestorage_adjust_detail_main
  • idx_biz_prestorage_adjust_detail_type
  • idx_biz_prestorage_adjust_detail_charge
  • idx_biz_prestorage_adjust_detail_bill_month

外键

已确认存在:

  • fk_biz_prestorage_adjust_detail_main
    • biz_prestorage_adjust_detail(prestorage_adjust_id) -> biz_prestorage_adjust(id)

Smoke 验证

1. 代码层最小验证

执行:

mvn -pl sw-business/sw-business-server -DskipTests compile
mvn -pl sw-business/sw-business-server -Dtest=AccountingAdjustProcessServiceImplTest,AccountingAdjustPrestorageProcessServiceImplTest test

结果:PASS

说明:

  • prestorage submit / revoke 接线后的 Java 编译通过
  • AccountingAdjustProcessServiceImplTest 通过13/13
  • AccountingAdjustPrestorageProcessServiceImplTest 通过4/4
  • 合计目标测试:17/17 通过

2. 数据库 transactional smoke

执行:在测试库开启事务后,插入一笔 biz_prestorage_adjust 主表记录 + 一笔 biz_prestorage_adjust_detail 明细记录,随后回读计数,再 ROLLBACK

验证点:

  • 主表可写
  • 明细表可写
  • 外键约束正常
  • 回读可见
  • 回滚后不污染测试库

实际结果:

  • main_count=1
  • detail_count=1
  • 回滚后再次检查 adjustment_no='SMOKE-REV004-PRE-001' 计数为 0

结果:PASS

当前结论

application-dev 指向的测试数据库现在已经具备 REV004 prestorage formal-table 结构,可直接用于:

  1. 预存退款 / 预存转账 formal-table 双写
  2. prestorage page/detail/stat formal-table 优先投影联调
  3. 后续真实接口 smoke / canary 验证

真实 HTTP smoke补充于 2026-04-16 18:00 +08:00

为了避免命中本地旧 jar 进程,额外完成了以下动作:

  1. 使用最新代码重新执行 mvn -pl sw-business/sw-business-server -DskipTests package
  2. java -jar ... --server.port=48091 启动一份隔离的新实例
  3. 通过 login-user 头模拟管理员上下文,直连 /admin-api/business/accounting-adjust/* 接口做 smoke

smoke 前置数据

向测试库临时插入:

  • 源客户:REV004_PRE_SMOKE_SRC
  • 目标客户:REV004_PRE_SMOKE_TGT
  • 源账户余额:100.00
  • 目标账户余额:5.00

1. prestorage-submitrefund

请求成功,返回:

  • adjustmentNo = REV004-PRF-990001-20260416180029
  • resultStatus = SUCCESS

DB 回读确认:

  • biz_prestorage_adjust 新增 1 条 REFUND
  • biz_prestorage_adjust_detail 新增 1 条 REFUND_RESULT
  • 源账户余额由 100.00 -> 90.00

2. prestorage-submittransfer

请求成功,返回:

  • adjustmentNo = REV004-PTR-990001-20260416180029
  • resultStatus = SUCCESS

DB 回读确认:

  • biz_prestorage_adjust 新增 1 条 TRANSFER
  • biz_prestorage_adjust_detail 新增 2 条:
    • SOURCE_ACCOUNT
    • TARGET_ACCOUNT
  • 源账户余额由 90.00 -> 70.00
  • 目标账户余额由 5.00 -> 25.00

3. prestorage-page / prestorage-detail

在 48091 新实例上验证:

  • prestorage-page 返回 2 条 smoke 数据
  • prestorage-detail?id=3 可正常返回 transfer formal 详情
  • transfer 记录状态为:
    • workOrderStatus = 2
    • resultStatus = SUCCESS
    • writeBackStatus = UPDATED

4. prestorage-process / prestorage-attachments

在 48091 新实例上验证:

  • prestorage-process?adjustmentNo=REV004-PTR-990001-20260416180029 返回成功
  • prestorage-attachments?... 返回空数组 []

说明:

  • 当前 process/attachments 仍主要经 unified/legacy 查询口径返回,但因为 submit 继续写 operat_log,链路可正常工作
  • 这两条在本轮已不构成阻塞性故障

5. prestorage-revoke

调用:

  • prestorage-revoke adjustmentNo=REV004-PTR-990001-20260416180029

返回:

  • message = 预存转账撤销成功
  • resultStatus = SUCCESS

DB 回读确认:

  • biz_prestorage_adjust 中该 transfer 主记录状态变为:
    • result_status = REVOKED
    • execute_status = REVOKED
  • 对应 detail 状态均变为:
    • detail_status = REVOKED
    • proc_type = REVOKE
  • 账户余额恢复为:
    • 源账户 90.00
    • 目标账户 5.00
  • prestorage-page 再查可见该 transfer 记录:
    • workOrderStatus = 3
    • canRevoke = false

测试数据清理

为避免污染测试库smoke 完成后已执行清理:

  • 删除临时 biz_operat_log / detail
  • 删除临时 biz_prestorage_adjust / detail
  • 删除临时 biz_account
  • 删除临时 biz_cust

回读结果:

  • formal_main_left = 0
  • operat_log_left = 0
  • cust_left = 0

当前仍未完全覆盖的点

  1. 本轮已经证明 HTTP submit/query/revoke 主链路可工作;
  2. prestorage-process / prestorage-attachments 目前仍不是 strict formal-first而是依赖 unified/legacy 口径兜底;
  3. 如果后续目标是“彻底以 formal-table 为唯一真值”,还需要继续收口这两条查询路径。

建议后续

  1. backend PR 可以先按 prestorage formal-table 独立批次提交;
  2. PR 描述中明确:
    • process/attachments 当前可用,但仍保留 legacy/unified 查询兜底;
    • 后续可再开一批做 strict formal-first 收口;
  3. 保留 REV004_prestorage_formal_tables_deploy.sql 作为测试库 / 联调库初始化脚本。

补充复核2026-04-16 17:36 +08:00

1. 部署脚本幂等重放

再次执行:

PGPASSWORD='Em@123456' psql -h 192.168.10.130 -p 5436 -U sw_system -d sw_system   -v ON_ERROR_STOP=1   -f sql/rev004/REV004_prestorage_formal_tables_deploy.sql

结果:PASS

关键输出:

  • existing sequence/table/index 均以 already exists, skipping 形式跳过
  • 没有出现失败或约束重复异常

说明:

  • REV004_prestorage_formal_tables_deploy.sql 具备测试库重放幂等性
  • 适合作为联调库/测试库初始化脚本继续使用

2. 本地服务存活验证

执行:

curl -sS http://127.0.0.1:48090/actuator/health

返回:

{"status":"UP"}

说明:

  • 当前本地 sw-business-server 进程存活
  • 后续若补真实 HTTP 接口 smoke可直接基于该运行实例继续