借款对账 S3:银行终态确认与释放(09-17-company-loan-principal-repayment)

迁移 20261008010000
- 银行终态证据单独成表(不进 OCR、不改付款状态、不计回单),只能作废一次,
  作废即令依赖事实失效;复核人可凭理由查看(审计、SHA-256 校验)
- 每次银行提交一条终态事实:书面终态证据,或流水号等于指令号的严格失败回单;
  同一指令的终态可了结该指令的处理中回单,其他提交不能代替
- 新终态 confirmed_not_paid;释放须清单已复核未变、每次提交有成立的终态事实、
  导出均关联提交、回单均有解释、等待期满、无历史汇总
- 最终取消在同一事务内重验(与新提交、晚到回单串行);两条释放路径都检查等待期
- 防挪用:指令号跨批次唯一(含撤回)、失败回单绑定本批次指令、一笔失败交易
  只支撑一个批次、同一书面证据不能用于两个批次、登记提交即离开“未发送”

验证:借款 HTTP 57 组、浏览器 7 组、77 迁移;server 4472;四轮同模型只读复核
阻断项均已修复,资金守卫变异测试均变红。

注意:界面未完成,不能单独部署;真实回单待验;补证后的恢复缺口尚未设计。
未推送、未部署。

Co-Authored-By: Claude Opus 5.5 <[email protected]>
这个提交包含在:
2026-10-07 16:50:17 +08:00
共同撰写人 Claude Opus 5.5
父节点 db28706177
当前提交 14aee82d5c
共修改 12 个文件,包含 1299 行新增和 81 行删除
+9
查看文件
@@ -29,6 +29,15 @@ export const ERROR_REASON_MESSAGES: Record<string, string> = {
"loan.voided_receipt_unresolved": "已作废的回单曾显示付款成功或处理中,须先查明该笔付款结果,当前不能确认失败。",
"loan.submission_export_invalid": "所选导出记录不属于本批次,或网银导入的提交未关联导出记录。",
"loan.submission_attestation_exists": "本批次已有待复核或已通过的提交清单确认,请勿重复提交。",
"loan.terminal_fact_invalid": "银行终态事实与提交、证据或回单不一致,或证据已作废、已变化,须重新登记。",
"loan.terminal_coverage_incomplete": "尚有银行提交没有经复核的终态事实,不能确认未付款或释放额度。",
"loan.export_unlinked": "有导出记录没有关联到已登记的银行提交,须先核实该次导出是否提交银行。",
"loan.receipt_unresolved_for_release": "本批次有银行回单尚未被终态事实覆盖,可能显示付款成功或处理中,不能释放额度。",
"loan.release_wait_period": "距最后一次导出未满内部等待期,暂不能确认未付款或释放额度。",
"loan.instruction_ref_conflict": "该银行指令号已登记在其他还款批次,请核对后重新登记。",
"loan.terminal_fact_exists": "该银行提交已有待复核或已通过的终态事实,请勿重复登记。",
"loan.terminal_evidence_invalid": "终态证据文件不符合要求,或已作废、不属于本批次。",
"loan.failure_evidence_reused": "该笔银行失败交易已作为其他还款批次的依据,不能重复使用。",
"config.enabled_query_invalid": "启用状态筛选无效,请重新选择后查询。",
"config.document_type_invalid": "单据类型标识不符合要求,请重新选择单据类型。",
"document_sequence.type_unsupported": "当前单据类型不支持编号,请联系管理员核对。",