6.5 KiB
6.5 KiB
REV004 redink 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_redink_formal_tables_deploy.sql
DDL 执行结果
结果:PASS
已确认存在:
biz_redink_recordbiz_redink_record_detailbiz_redink_record_seqbiz_redink_record_detail_seq
已确认幂等重放通过:
- second apply 输出 existing/skip 结果
- 本轮顺手把 sequence 创建方式从
CREATE SEQUENCE IF NOT EXISTS收口为显式pg_class检查,规避 replay 时 sequence 级重复键异常
代码验证
compile
mvn -pl sw-business/sw-business-server -DskipTests compile
结果:PASS
targeted tests
mvn -pl sw-business/sw-business-server -Dtest=ChargeServiceAccountingAdjustTest,AccountingAdjustQueryServiceImplTest,RedinkFormalizationServiceTest test
结果:PASS
- Tests run: 34
- Failures: 0
- Errors: 0
fresh query smoke(fresh jar, port 48096)
health
GET /actuator/health->{"status":"UP"}
smoke 方式说明
REDINK_RECORD 当前依赖原交易定位 / bank follow-up 逻辑;本轮先采用:
- application-dev 手工 seed 一条 redink formal 主表/明细表记录;
- fresh jar 验证
get/page是否已 formal-first 命中; - 不在本轮直接伪造 live bank follow-up 交易。
seed 记录
adjustmentNo = REV004-RI-992305-SEEDchargeId = 992305- formal 主表状态:
approvalStatus = NOT_REQUIREDexecuteStatus = UPDATEDresultStatus = SUCCESS
- bank follow-up 样例:
BK-992305
get / page
GET /admin-api/business/accounting-adjust/get?adjustmentNo=REV004-RI-992305-SEED- 返回:
objectType = REDINK_RECORDresultStatus = SUCCESSapprovalStatus = NOT_REQUIREDwriteBackStatus = UPDATEDoriginalTranSeq = T-992305originalSysTranSeq = SYS-992305- detail 中包含:
bankTranSeqredinkAmountpayStateBeforepayStateAfter
- 返回:
GET /admin-api/business/accounting-adjust/page?...objectType=REDINK_RECORD- 返回 1 条 formal-first 记录
reasonCodeLabel已能解析为字典文本(如收费错误)
当前结论
本轮 redink formal-table 已达到:
- DDL 可落库且可幂等重放;
- 结果型 formal-table 主从表已建模;
- query detail/page 对
REDINK_RECORD已能返回 formal-first; - compile / targeted tests 通过;
- fresh jar query smoke 已验证 formal-first 查询链路可用。
当前仍未完全覆盖
- 尚未完成“真实 redink 执行成功后自动落 formal 结果”的 live HTTP smoke;
- 原因是当前红冲依赖原交易与 bank follow-up 外部链路,需要在下一轮补真实可复现数据后再做完整 execute smoke。
测试数据清理
已删除:
biz_redink_record / detailbiz_chargebiz_cust
回读结果:
redink_main_left=0redink_detail_left=0charge_left=0cust_left=0
运行态清理
用于 fresh-jar query smoke 的临时实例:
- port
48096
已停止,当前无残留 LISTEN 进程。
live execute smoke 阻塞证据(2026-04-17 16:50 +08:00)
本轮额外尝试了真实 redink 执行链路:
- fresh jar:
48097 - 请求:
POST /admin-api/business/charge/accounting-adjust objectType = REDINK_RECORDchargeId = 992306originalTranSeq = T-REDINK-NOPE
接口响应:
{"code":500,"data":null,"msg":"系统异常"}
从应用日志定位到的精确异常:
FeignException$ServiceUnavailable: [503]Load balancer does not contain an instance for the service business-bank-server- 失败位置:
TransactionApi#getTransactionByTranSeq(...)
结论:
- 当前 live execute smoke 未能完成的直接原因是 外部依赖
business-bank-server在当前环境无可用实例; - 这不是 redink formal-table 本身的 DDL / 查询接线问题。
因此本批已完成:
- compile
- targeted tests
- DDL apply / replay
- fresh query smoke
但“真实 redink 执行成功后自动落 formal”的端到端 smoke 仍需在 business-bank-server 可用时补跑。
live execute smoke 成功补证(2026-04-17 17:51 +08:00)
在本轮额外启动本地 business-bank-server(dev profile, port 48092)并向测试库预置原交易后,重新完成了 REDINK_RECORD 的真实端到端执行 smoke。
前置
- 本地启动
business-bank-server,并成功注册到 Nacos dev:business-bank-server 192.168.9.109:48092 register finished - 向
bk_transactionseed 原交易:tran_seq = T-REDINK-NOPEsys_tran_seq = SYS-REDINK-NOPEtran_type = PAYstatus = SUCCESScontract_no = 992306amount = 12000
- 准备已收费营业账:
chargeId = 992306
execute 请求
POST /admin-api/business/charge/accounting-adjust
{
"chargeId": 992306,
"objectType": "REDINK_RECORD",
"reasonCode": "1",
"reason": "redink execute smoke",
"originalTranSeq": "T-REDINK-NOPE"
}
execute 响应
结果:PASS
返回:
adjustmentNo = REV004-992306-20260417175109objectType = REDINK_RECORDresultStatus = SUCCESSapprovalStatus = NOT_REQUIREDwriteBackStatus = UPDATEDmessage = 冲正处理成功,bank流水号=RV9923062026041717511073C805
DB 回读
biz_redink_record:
adjustment_no = REV004-992306-20260417175109approval_status = NOT_REQUIREDexecute_status = UPDATEDresult_status = SUCCESSbank_tran_seq = RV9923062026041717511073C805original_tran_seq = T-REDINK-NOPE
biz_redink_record_detail:
detail_status = SUCCESSproc_type = EXECUTEpay_state_before = 1pay_state_after = 0redink_amount = 120.00
biz_charge:
pay_state = 0- 支付信息已清空为红冲后的未收费态
bk_transaction:
- 原交易
T-REDINK-NOPE状态变为REVERSED - 新增 follow-up:
tran_seq = RV9923062026041717511073C805tran_type = PAY_INVALIDstatus = SUCCESSoriginal_tran_seq = T-REDINK-NOPE
查询回读
GET /admin-api/business/accounting-adjust/get?adjustmentNo=REV004-992306-20260417175109-> formal-first 返回成功GET /admin-api/business/accounting-adjust/page?...objectType=REDINK_RECORD-> formal-first 返回成功
说明:至此,REDINK_RECORD 已补齐“真实执行 -> 自动落 formal -> formal-first 查询”的完整闭环证据。