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
7.4 KiB
7.4 KiB
REV004 prestorage formal-table 已应用到 application-dev 测试库(2026-04-16)
目标库
依据:
sw-business/sw-business-server/src/main/resources/application-dev.yaml
解析结果:
- Host:
192.168.10.130 - Port:
5436 - DB:
sw_system - User:
sw_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_adjustbiz_prestorage_adjust_detail
序列
已确认存在:
biz_prestorage_adjust_seqbiz_prestorage_adjust_detail_seq
关键索引
已确认存在:
uk_biz_prestorage_adjust_noidx_biz_prestorage_adjust_sourceidx_biz_prestorage_adjust_targetidx_biz_prestorage_adjust_typeidx_biz_prestorage_adjust_statusidx_biz_prestorage_adjust_executed_atidx_biz_prestorage_adjust_detail_mainidx_biz_prestorage_adjust_detail_typeidx_biz_prestorage_adjust_detail_chargeidx_biz_prestorage_adjust_detail_bill_month
外键
已确认存在:
fk_biz_prestorage_adjust_detail_mainbiz_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=1detail_count=1- 回滚后再次检查
adjustment_no='SMOKE-REV004-PRE-001'计数为0
结果:PASS
当前结论
application-dev 指向的测试数据库现在已经具备 REV004 prestorage formal-table 结构,可直接用于:
- 预存退款 / 预存转账 formal-table 双写
- prestorage page/detail/stat formal-table 优先投影联调
- 后续真实接口 smoke / canary 验证
真实 HTTP smoke(补充于 2026-04-16 18:00 +08:00)
为了避免命中本地旧 jar 进程,额外完成了以下动作:
- 使用最新代码重新执行
mvn -pl sw-business/sw-business-server -DskipTests package - 以
java -jar ... --server.port=48091启动一份隔离的新实例 - 通过
login-user头模拟管理员上下文,直连/admin-api/business/accounting-adjust/*接口做 smoke
smoke 前置数据
向测试库临时插入:
- 源客户:
REV004_PRE_SMOKE_SRC - 目标客户:
REV004_PRE_SMOKE_TGT - 源账户余额:
100.00 - 目标账户余额:
5.00
1. prestorage-submit(refund)
请求成功,返回:
adjustmentNo = REV004-PRF-990001-20260416180029resultStatus = SUCCESS
DB 回读确认:
biz_prestorage_adjust新增 1 条REFUNDbiz_prestorage_adjust_detail新增 1 条REFUND_RESULT- 源账户余额由
100.00 -> 90.00
2. prestorage-submit(transfer)
请求成功,返回:
adjustmentNo = REV004-PTR-990001-20260416180029resultStatus = SUCCESS
DB 回读确认:
biz_prestorage_adjust新增 1 条TRANSFERbiz_prestorage_adjust_detail新增 2 条:SOURCE_ACCOUNTTARGET_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 = 2resultStatus = SUCCESSwriteBackStatus = 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 = REVOKEDexecute_status = REVOKED
- 对应 detail 状态均变为:
detail_status = REVOKEDproc_type = REVOKE
- 账户余额恢复为:
- 源账户
90.00 - 目标账户
5.00
- 源账户
prestorage-page再查可见该 transfer 记录:workOrderStatus = 3canRevoke = false
测试数据清理
为避免污染测试库,smoke 完成后已执行清理:
- 删除临时
biz_operat_log / detail - 删除临时
biz_prestorage_adjust / detail - 删除临时
biz_account - 删除临时
biz_cust
回读结果:
formal_main_left = 0operat_log_left = 0cust_left = 0
当前仍未完全覆盖的点
- 本轮已经证明 HTTP submit/query/revoke 主链路可工作;
- 但
prestorage-process / prestorage-attachments目前仍不是 strict formal-first,而是依赖 unified/legacy 口径兜底; - 如果后续目标是“彻底以 formal-table 为唯一真值”,还需要继续收口这两条查询路径。
建议后续
- backend PR 可以先按 prestorage formal-table 独立批次提交;
- PR 描述中明确:
process/attachments当前可用,但仍保留 legacy/unified 查询兜底;- 后续可再开一批做 strict formal-first 收口;
- 保留
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,可直接基于该运行实例继续