What to build: 在收不到第三方回调的环境里,把剩下几处「只有回调能推进」补齐查询路径;把两处会静默失效的配置收口;把后台已有但没接线的两个按钮接上;给开发环境一个走真实对账逻辑的加速入口。
本票的判定是 ADR 0004:**凡状态推进都必须存在一条不依赖回调的路径,回调只用于缩短收敛时间**。用户没有公网服务器,所以这条不只是开发便利——回调会丢(订单 520/521 的悬账根因就是回调没到达)。
补查询对等物(两处)
配置收口
后台按钮
开发环境
明确不做
Blocked by: 04
Status: 已验收 —— 2026-09-17 用户人工验收通过(真机走查;本轮新增回归见 Comments)
MerchantExistingOnboardingTests.anAddedBankCardConvergesThroughTheSameManualRefresh(confirmOriginalCard 推广为「该门店所有待处理的卡」,挂在已有的人工刷新路径与银行卡列表读路径上)。PaymentFundConfirmationTests.anInFlightRevertConvergesThroughTheRetryTask、aConfirmationClaimedTodayConvergesThroughTheConfirmationQuery(delaytrans.confirmquery 接上;reverting 进入扫描范围,重发幂等请求即它的查询对等物)。application.yml 补上 merchant-business-notify-url;HuifuCallbackUrlAudit 启动时逐个念一遍结论;PaymentSchedulingConfigurationTests.everyHuifuCallbackUrlIsReportedAndBlankOnesAreCalledOut。PaymentSchedulingConfigurationTests(同时断言 yml 里写明了 fixed-delay-ms,以及注解默认值就是 :true)。app.payment.fund-confirmation-retry.enabled 现在真的被读取,默认与代码一致。RefundRecordView 的「刷新退款」、MerchantOnboardingDetailView 的「查询通道状态」;talent-card-admin 的 vue-tsc -b 通过(两个接口原先都是零调用的)。POST /api/admin/management/payment-reconciliation/run,与定时任务调用同一个 PaymentReconciliationService.reconcile;对账间隔也可用 HUIFU_RECONCILIATION_FIXED_DELAY_MS 调短。scripts/run-server-tests.ps1:全量 348 项,仅那 3 项已知基线失败,无新增。PaymentFundConfirmationTests.aPendingConfirmationOfAVerifiedOrderIsRetriedWithoutAnotherVerification 现在先把自己之外的相关行移出扫描窗口,稳定通过;docs/agents/testing.md 的那一节已改写。在一个收不到任何回调的环境里依次走:进件通过 → 追加一张结算卡 → 人工刷新 → 卡变已批准;核销一笔团购券 → 撤销核销使资金进入回退中 → 等待补偿任务把它收敛;后台一键刷新一笔退款的状态。全程不依赖任何回调到达。
docs/agents/testing.md 的「环境相关失败」,机制与 04 要修的「最早 100 条」饥饿同源)。改动它时建议让该用例自己腾出窗口,把它从环境相关失败变成稳定通过。ready-for-human。除上面两项外还有一处顺带改动:补偿任务的取行改为「每单只看最新一笔成功支付」(原先 distinct o.id 会把旧 pending 与新 confirmed 混在一起,同一笔钱有两个答案)。MerchantOnboardingSchemaInitializer(商户域文件)也没有改——开发库的 V149/V150 改由 scripts/apply-sql-file.ps1 落地并实测。