yeg
2026-09-12 955ce2066f4e9769821e90c39fe7da94a3bd2365
refs
用户 yeg <1347747024@qq.com>
星期六, 九月 12, 2026 19:39 +0800
提交者 yeg <1347747024@qq.com>
星期六, 九月 12, 2026 19:45 +0800
提交955ce2066f4e9769821e90c39fe7da94a3bd2365
目录 5f70e15c69722ac4a8432407afe277bb55c242a1 目录 | zip | gz
parent d32e0dee609ab13220908ab28a11390bede07c84 查看 | 对比
test(merchant): 补齐自动提现全链路端到端验收

新增 AutoWithdrawalEndToEndAcceptanceTests,用真实服务从 submitOnboarding 一路走到提现
到账:进件与绑卡结果、微信商户配置、商户业务开通回调、收款能力快照、下单固定收款子商户、
支付预下单、验签回调落账、商户核销、次日日汇总、提交主动取现、异步通知与定时查询收敛、
商户端三状态展示。所有斗拱网关用 @MockitoBean 替换,链路零出网调用。

覆盖链路级异常与幂等:重复回调与重复核销不产生第二次业务变更、终态提现不被重复通知和迟到
结果改写、重复任务不重复出账、处理中由查询收敛且等待期内不查询、失败顺延到次日汇总、退款
在途与退款成功都排除出提现范围、已进入提现记录的订单不能再撤销核销或退款、未支付订单不能
核销也不能汇总、验签失败与金额被改动的回调都不履约、能力快照未确认不放行。

进件真实入口的验收暴露并修掉两个既有缺陷:

1. merchant_onboarding_application 缺列:submitOnboarding 建单时写入的注册地址编码、营业
执照有效期和 subject_cert_end_date 从未被任何迁移创建,商户第一次提交进件就以 Unknown
column 失败。补 V137、V138,并同步 MerchantOnboardingSchemaInitializer 的兜底加列。
2. 能力快照刷新自锁:进件审核回调在锁着进件记录的事务里触发快照刷新,而刷新用另一条连接
写同一行,行锁互等到 innodb_lock_wait_timeout 后失败,商户进件通过却永远不能收款。改为
注册 afterCommit 提交后再刷新,并去掉刷新路径上会把调用方行锁撞死的 for update。

另补 docs/automatic-withdrawal-acceptance.md:开关现状(通道开关在 yml 里默认开启且指向
prod,只有自动提现任务默认关闭)、哪些配置项支持环境变量覆盖、沙盒环境、不必等一天的汇总
触发方式、逐条验收清单、带自动化覆盖标注的异常构造表、受控真实极小金额的商户/银行卡/账号
白名单与金额笔数上限登记表,以及必须由沙盒给出结论的 5 项遗留。

工单里「沙盒验证」「提现页面只展示三种状态」「真实金额受白名单与上限约束」三项保持未勾选:
自动化只能覆盖服务端读接口与路由表,沙盒、真机页面和真实到账都还没有执行过。

全量 196 项测试仅剩 docs/agents/testing.md 记录的 3 项基线失败。
4个文件已添加
5个文件已修改
1312 ■■■■■ 已修改文件
.scratch/automatic-withdrawal/issues/06-e2e-acceptance.md 78 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
talent-card-server/docs/automatic-withdrawal-acceptance.md 216 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
talent-card-server/docs/huifu-payment-integration.md 24 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
talent-card-server/src/main/java/com/talentcard/server/business/merchant/MerchantOnboardingSchemaInitializer.java 11 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
talent-card-server/src/main/java/com/talentcard/server/business/merchant/MerchantPaymentReadinessService.java 10 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
talent-card-server/src/main/java/com/talentcard/server/business/merchant/MerchantSettlementService.java 25 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
talent-card-server/src/main/resources/db/migration/V137__merchant_onboarding_registration_columns.sql 30 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
talent-card-server/src/main/resources/db/migration/V138__merchant_onboarding_cert_end_date.sql 19 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史
talent-card-server/src/test/java/com/talentcard/server/business/merchant/AutoWithdrawalEndToEndAcceptanceTests.java 899 ●●●●● 对比 | 查看 | 原始文档 | blame | 历史