借款失败回单归属与银行结果对账方案设计稿,未实施(09-17-company-loan-principal-repayment)
- 释放占用须有逐次银行提交的终态证据;区分制单导出与银行提交尝试 - 只导出未提交作为经特别复核的人工例外(全部证据加双人复核, 独立终态 confirmed_not_submitted),用户已确认支持 - 晚到成功按冻结快照核对、逐笔差额补记与待追回;补记不生成可导出指令 - 按原因冻结出借人,误报经独立复核关闭,全部原因关闭才解冻 - 线下对账只能查清事实,不能直接解除系统占用 设计稿,未实施;未推送。 Co-Authored-By: Claude Opus 5.5 <[email protected]>
这个提交包含在:
@@ -1,5 +1,154 @@
|
|||||||
## 2026-09-17 实施细化
|
## 2026-09-17 实施细化
|
||||||
|
|
||||||
|
## 2026-10-06 失败回单归属与银行结果对账方案(第 3 版,待用户审阅,未实施)
|
||||||
|
|
||||||
|
第 3 版补充:区分制单导出与银行提交尝试、“从未提交银行”的单独路径(待决)、按原因冻结及误报出口、补记不生成可导出指令。第 2 版根据审阅意见修订:未付款证据须证明指令终止、按付款尝试而非附件数判断、占用与已付分开且超额按差额逐笔计算、晚到成功按冻结快照核对并覆盖“已确认失败未释放”、冻结覆盖后续指令且追回须核实到账。
|
||||||
|
|
||||||
|
### 1. 要解决的问题(现状均已在合成测试或代码中确认)
|
||||||
|
|
||||||
|
| 编号 | 现状 | 后果 |
|
||||||
|
|---|---|---|
|
||||||
|
| R1 | 导出制单或上传回单后状态为 `unknown`,只有匹配的失败回单能转 `confirmed_failed` 再取消 | 未付款或网银导入即失败而无回单时,占用永久不释放,且因在途拦截冻结出借人维护 |
|
||||||
|
| R2 | 确认失败要求批次回单总数恰为 1(含作废) | 作废一次即永远无法确认失败;同时“附件数”本身也不能代表付款尝试次数 |
|
||||||
|
| R3 | 存在同金额候选时确认失败一律拒绝 | 等额分期任一期真实失败都无法释放 |
|
||||||
|
| R4 | 确认失败仍按付款前规则校验出借员工在职 | 出借员工离职后无法确认失败 |
|
||||||
|
| R5 | `confirmed_failed`/`confirmed_success` 为终态,已释放/已结清分配不可改;执行状态要求 `confirmed_success` | 失败结论之后银行晚到成功无处补记;同一本金可能被再次申请并付款 |
|
||||||
|
|
||||||
|
线下对账只能查清银行事实,**不能直接解除系统占用**。任何释放、补记、追回都必须走下述有依据、有独立复核、有审计的系统流程;不提供“管理员解除占用”,不直接改库。
|
||||||
|
|
||||||
|
C(同金额回单归属确认)只防止**错误核销**,不能防止银行**实际重复付款**;本方案另设事前冻结(3.5)。
|
||||||
|
|
||||||
|
### 2. 总体原则
|
||||||
|
|
||||||
|
1. 释放占用只能基于“银行对本批次每一次提交都已到达不再执行的终态”的正面证据;“暂时没看到付款”、对账单无支出、等待期届满都不能单独作为依据。唯一例外是 3.2a 的“人工确认未提交”:须满足全部证据与双人复核,记录和页面均标注为人工确认,与“银行确认指令终止”严格区分。
|
||||||
|
2. 每条银行事实绑定具体证据及其核验记录,由当前有资格、且不是登记人、导出人、证据上传人、批次创建人、提交人或出借员工的经理/总经理独立复核。
|
||||||
|
3. 银行事实登记属付款后环节:按**原批次冻结的收付款快照与历史审批身份**核对,不要求与出借人当前资料版本一致;只判断当前操作人的权限与独立性。
|
||||||
|
4. 历史只增不改:推翻先前结论时新增记录并标记原结论,不回写终态。
|
||||||
|
5. 无合格独立复核人时保持占用并显示业务阻塞原因,不降级为单人确认。
|
||||||
|
|
||||||
|
### 3. 方案
|
||||||
|
|
||||||
|
#### 3.1 付款尝试与银行事实记录
|
||||||
|
|
||||||
|
- **制单导出记录**:每次导出落一条记录(序号、时间、导出人、文件摘要、制单行客户方流水号 `批次号-R00n`、金额、收付款快照摘要)。重导出沿用同一客户方流水号,所以导出次数不等于向银行提交的次数:下载两次可能只提交一次,下载一次也可能被重复提交。现有 `payment_order_export_count` 只计数,需落表。
|
||||||
|
- **银行提交尝试**:由财务登记实际向银行提交的每一次指令(提交时间、渠道、所用导出记录、银行指令号或网银批次号、客户方流水号),并附银行凭据。一次提交关联一条导出记录;一条导出记录可以对应零次、一次或多次提交。登记清单本身也要经独立复核,确认“这就是全部提交”。
|
||||||
|
- **银行事实确认**:把 `loan_receipt_attributions` 扩为银行事实确认,新增 `kind` 与可选 `attempt_id`:
|
||||||
|
- `settlement`:现有归属确认,含义不变;
|
||||||
|
- `failure`:某次银行提交被拒绝或失败(失败回单),须写明覆盖哪些银行指令,并绑定交易指纹与证据;存在同金额候选时必须有已复核的 `failure`(R3);
|
||||||
|
- `terminated`:某次银行提交已撤销或拒绝、不再待执行(无回单时的指令终态证据,见 3.2);须写明覆盖的指令,不能以一条指令的终态推定其他提交已结束;
|
||||||
|
- `not_submitted`:导出后从未提交银行(见 3.2a,是否支持待用户决定);
|
||||||
|
- `late_success`:晚到成功,见 3.4。
|
||||||
|
- 以上沿用登记、独立复核、失效取代、证据绑定、历史只增不改。
|
||||||
|
|
||||||
|
#### 3.2 释放占用的证据门槛(R1、R2)
|
||||||
|
|
||||||
|
释放(`unknown` → 新终态 `confirmed_not_paid`,或沿用 `confirmed_failed` 后取消)必须同时满足:
|
||||||
|
|
||||||
|
1. **逐次提交有终态**:已复核的银行提交清单中,每一次提交都有已复核、且明确覆盖该指令的 `failure` 或 `terminated` 事实;每一条导出记录要么关联了已终止的提交,要么有已复核的 `not_submitted` 事实(3.2a)。
|
||||||
|
2. **终态证据须能唯一定位指令**:银行书面回复、网银“指令查询”的官方导出 PDF 等,须载明该尝试的客户方流水号(或银行指令号)及其终态(已拒绝、已撤销、已失败),并表明不再待执行。对账单只能作辅助核对,不能单独证明未付款。截图、口头说明、“网银查不到”一律不接受。
|
||||||
|
3. **无未解决的成功或待定事实**:作废附件只改变材料使用状态,不抹掉银行事实。曾核验为成功的回单直接阻断释放;曾为待定(处理中、受理)的,须由同一尝试后续的终态证据(失败或撤销)关闭后才不再阻断。
|
||||||
|
4. **内部等待期**:距最后一次导出满 N 个自然日(建议 3 日)。这只是内部谨慎期,不代表银行时限,也不能替代第 1、2 条。
|
||||||
|
5. **独立复核**:导出人、证据上传人、登记人不能复核。
|
||||||
|
6. 释放后系统禁止该批次再次导出;**但 OA 无法让已下载的制单文件在网银中失效**,页面仅作提示。此剩余风险由 3.4 晚到成功与 3.5 冻结兜底,不作技术保证表述。
|
||||||
|
|
||||||
|
#### 3.2a 只导出、从未提交银行(待用户决定)
|
||||||
|
|
||||||
|
这种情况下,银行可能根本没有可出具终态的指令。若本期坚持“银行终态是唯一释放依据”,这类批次将**仍然不能释放**,R1 只算部分解决。如需支持,规则单列如下,不视为满足银行终态条件:
|
||||||
|
|
||||||
|
- 证据(须全部具备):
|
||||||
|
- 网银“指令查询”官方导出 PDF,覆盖首次导出日至登记日,按该客户方流水号及收款账号、金额查询无结果;
|
||||||
|
- 同期付款账户对账单,经逐笔核对无对应支出;
|
||||||
|
- 导出人书面说明文件去向,以及未提交的原因。
|
||||||
|
- 内部等待期满。
|
||||||
|
- 双人复核:两名彼此不同、当前有资格的经理或总经理分别独立复核。两人都不能是登记人、导出人、证据上传人、批次创建人、提交人或出借员工。
|
||||||
|
- 定性:这是“查无提交”的人工谨慎结论,不是银行保证。数据上记为独立终态 `confirmed_not_submitted`(区别于银行确认终止的 `confirmed_not_paid`),页面显示“人工确认未提交”。之后若出现该流水号的成功回单,按 3.4 处理,并另记“未提交结论被推翻”。
|
||||||
|
- 实际限制:
|
||||||
|
- 需要两名额外的合格复核人,且都不能是登记人、出借人、导出人等相关人员。公司人数少,是否满足尚未核实;人员不足时,这条路径不可用,额度继续占用。
|
||||||
|
- 建设银行能否出具“查询无结果”的官方导出 PDF,尚未确认;拿不到时同样继续占用。因此不能宣称“只导出未提交”的所有情况都能解决。
|
||||||
|
|
||||||
|
#### 3.3 确认失败的修正(R4)
|
||||||
|
|
||||||
|
确认失败改按付款后规则:不要求出借员工当前在职,不要求出借人当前资料版本与提交时一致,改为核对批次冻结快照;当前操作人仍按当前资格与独立性校验。
|
||||||
|
|
||||||
|
#### 3.4 晚到成功:补记与差额计算(R5)
|
||||||
|
|
||||||
|
触发:已核验的成功回单属于某个已有失败或未付款结论的批次(无论是否已取消释放),并经 `late_success` 类独立复核确认归属;核对对象是该批次冻结的收付款快照、历史审批身份与交易唯一性认领。
|
||||||
|
|
||||||
|
处理步骤:
|
||||||
|
|
||||||
|
1. **推翻原结论**:新增事实记录,标记原批次结论“已被银行事实推翻”,并写审计,不回写原终态。
|
||||||
|
2. **即时冻结**:可信晚到成功一经登记(复核前即生效),冻结该出借人,见 3.5。
|
||||||
|
3. **逐笔分配计算**:按原批次的原借款分配逐笔处理。对每笔借款 L,设晚到付款分摊到 L 的金额为 a:
|
||||||
|
- 其他**已付并结清**的还款,在 L 上已结清 S;L 的未还本金为 O(已扣除 S)。
|
||||||
|
- L 上其他**未付款、仅占用**的申请属于占用冲突,不是超额。这些申请须先处理:未导出的可取消;已导出或待查证的按 3.2 举证或等待其事实。处理完毕前,L 的补记暂停。
|
||||||
|
- 冲突清除后,可补记结清额为 `min(a, O)`,差额 `a − min(a, O)` 列为对出借人的待追回款。
|
||||||
|
4. **补记方式**:由于原分配为终态(已释放)或原批次状态受限,补记生成一条关联原批次与该交易的“补记还款”,按上一步计算结果占用并立即结清。若原分配仍为占用(已确认失败但未取消),在同一事务内以“被晚到成功推翻”为原因释放,再由补记还款结清。整个过程受数据库约束“占用加结清不超过未还本金”保护。
|
||||||
|
- 数据边界:补记只记录已经发生的银行付款,**不生成付款批次、不可导出、不可再次付款**。即使整笔都是超额(可结清本金为零),也必须完整记录银行付款金额、交易指纹与待追回金额。
|
||||||
|
5. **示例**:本金 100 元,晚到成功 80 元。
|
||||||
|
- 另一笔新申请占用 70 元、尚未付款:这是占用冲突,暂停该申请的后续付款并处理该占用;处理后补记结清 80 元,剩余本金 20 元。
|
||||||
|
- 另一笔已付款并结清 60 元:剩余本金 40 元,补记结清 40 元,另 40 元列为待追回款。
|
||||||
|
|
||||||
|
#### 3.5 冻结与解冻
|
||||||
|
|
||||||
|
- **按原因冻结**:冻结以“原因记录”为单位,挂在出借人上。每条记录写明原因类型(晚到成功待确认、占用冲突、待追回款)、来源事件、状态(生效或已关闭)以及关闭依据。只要出借人仍有任一生效原因,就处于冻结状态。
|
||||||
|
- **冻结时机**:可信晚到成功登记时(复核前即生效),或产生占用冲突、待追回款时。
|
||||||
|
- **冻结范围**:该出借人的新还款申请、其他在途申请的复核与导出(含重新导出)一律拒绝。
|
||||||
|
- **不冻结**:已发生银行事实的登记、回单上传与核验、事实复核、对账与追回登记。
|
||||||
|
- **追回**:以银行到账证据(出借人退款入账回单)登记,须独立复核,支持部分追回,逐笔冲减待追回款。本期不支持冲抵后续本金。
|
||||||
|
- **原因的出口**:
|
||||||
|
- 确认为真实晚到成功:完成补记后,占用冲突与待追回款作为新的原因分别处理;晚到原因在补记完成时关闭。
|
||||||
|
- 确认为误关联或重复登记(例如回单传错批次、对应的交易已在别处登记):保留原登记记录,经独立复核、附依据后关闭该原因,不补记。
|
||||||
|
- 证据仍不确定:原因保持生效,继续冻结。
|
||||||
|
- 待追回款:全额实际到账并经复核后关闭;部分追回只冲减金额,不关闭。
|
||||||
|
- **解冻**:出借人的**全部生效原因都已关闭**才解冻。不因其中一笔处理完就整体放开;仅“登记了追回结果”也不能关闭原因。
|
||||||
|
|
||||||
|
#### 3.6 权限与离职
|
||||||
|
|
||||||
|
| 环节 | 操作人 | 复核人 |
|
||||||
|
|---|---|---|
|
||||||
|
| 登记付款尝试、失败、终态、晚到成功、追回到账 | 当前持财务角色和 `loan.manage` 的人员 | 当前经理或总经理,且不是登记人、导出人、证据上传人、批次创建人、提交人或出借员工 |
|
||||||
|
|
||||||
|
原审批人、出借员工离职,以及法人或银行停用、出借人资料事后合法变更,都不影响上述环节(均按冻结快照核对)。人员不足时,页面显示具体环节与缺少合格复核人的原因类别。
|
||||||
|
|
||||||
|
### 4. 页面
|
||||||
|
|
||||||
|
在还款详情的“银行结果”区,按付款尝试列出每次导出及其事实状态,只显示当前可做的动作:
|
||||||
|
|
||||||
|
- 待查证:登记失败或终态证据(显示内部等待期剩余天数);
|
||||||
|
- 全部尝试已终止:取消释放;
|
||||||
|
- 已推翻:晚到事件、逐笔补记结果与待追回款;
|
||||||
|
- 冻结中:说明原因与解冻条件,提供追回登记入口。
|
||||||
|
|
||||||
|
各表单写明证据要求:须能定位具体指令;对账单与时间吻合只能作辅助。
|
||||||
|
|
||||||
|
### 5. 验收(实施时转为 PRD AC)
|
||||||
|
|
||||||
|
1. 只导出未付款:无指令终态证据、也不满足 3.2a 特别复核例外时,等待期满也拒绝;有能定位指令的终态证据并经独立复核后可释放;满足 3.2a 全部证据并经双人复核后,可作为“人工确认未提交”释放,记录与页面显示为人工确认;仅对账单、截图或时间依据被拒;导出人、登记人自审被拒。
|
||||||
|
2. 导出与提交分开:多次导出、一次提交,或一次导出、多次提交,都按提交清单逐条举证;一条指令的终态不能证明其他提交已结束;提交清单未经复核即不能释放。若采纳 3.2a:只导出未提交须满足全部证据并经双人复核,否则继续保持占用。
|
||||||
|
3. 作废的成功回单持续阻断;作废的待定回单在同一尝试取得终态证据后不再阻断。
|
||||||
|
4. 存在同金额候选时,失败经 `failure` 归属确认后可以释放,否则保持占用。
|
||||||
|
5. 离职或出借人资料事后合法变更后,确认失败、终态、晚到成功仍可由当前合格人员完成,并按冻结快照核对。
|
||||||
|
6. 晚到成功覆盖四种情况:已释放、已确认失败但未释放、占用冲突(先暂停后补记)、已付冲突(按差额补记加待追回);多借款合并还款逐笔计算;同一笔交易不能用于两次补记或核销。
|
||||||
|
7. 冻结按原因管理:覆盖新申请和其他在途申请的复核与导出,但不阻止事实登记;误报的晚到成功经复核关闭原因后不补记;证据不确定时继续冻结;多个原因并存时,只关闭其中一个不会解冻;部分追回不解冻。
|
||||||
|
8a. 补记不生成可导出指令;整笔超额时补记结清为零,但仍完整记录银行付款与待追回金额。
|
||||||
|
8. 全部只增不改、审计完整,不存在单人释放路径;合成全流程测试含确定性并发(终态登记与晚到回单、补记与新申请、冻结与导出),每类关键守卫都有变异测试。
|
||||||
|
|
||||||
|
### 6. 不在本方案内
|
||||||
|
|
||||||
|
银行接口直连、对账单自动解析与 OCR、利息、冲抵后续本金、手机端专门优化(沿用共用组件)、生产存量处理(生产是否已有真实还款仍待核实)、部署。
|
||||||
|
|
||||||
|
### 7. 需要用户确认(采纳审阅建议作为默认)
|
||||||
|
|
||||||
|
| 问题 | 默认 |
|
||||||
|
|---|---|
|
||||||
|
| Q1 内部等待期 | 3 个自然日,仅作内部谨慎期 |
|
||||||
|
| Q2 证据 | 按内容判断:须唯一定位指令并证明终态;银行官方导出 PDF 可以;对账单只能辅助 |
|
||||||
|
| Q3 冻结 | 冻结新付款与未发出的后续指令,保留事实登记、对账、追回入口 |
|
||||||
|
| Q4 冲抵 | 本期只支持实际退款到账 |
|
||||||
|
| Q5 迁移 | 由最终数据设计决定(预计包括导出记录、银行提交尝试、事实记录扩展、补记还款、冻结原因、追回记录,以及 `confirmed_not_paid`、`confirmed_not_submitted` 两个状态);部署另行批准 |
|
||||||
|
| Q6 只导出未提交(3.2a) | 用户 2026-10-06 确认支持,作为经特别复核的人工例外(全部证据加双人复核);受合格复核人数和银行能否出具查询 PDF 限制,不满足时继续占用 |
|
||||||
|
|
||||||
|
|
||||||
`origin_reference`作为主体+出借人范围的原借入凭据唯一引用,防止更换幂等键重复登记。期初已还差额必须有adjustment证据。身份与账户分别版本控制,改账户同时撤销身份确认,旧未付快照失效。
|
`origin_reference`作为主体+出借人范围的原借入凭据唯一引用,防止更换幂等键重复登记。期初已还差额必须有adjustment证据。身份与账户分别版本控制,改账户同时撤销身份确认,旧未付快照失效。
|
||||||
|
|
||||||
新申请持lender→排序loan→日序号锁,只创建本事务尚未可见的新batch;所有既有batch路径先锁batch,核销沿receipt advisory→排序附件→lender/审批身份→排序loan,台账/身份维护不反向锁batch。取消保留旧申请和批次,不原位重提;一申请恰好一个保留批次。下载制单或上传回单转unknown,均不扣减本金。首期不能仅凭理由解除unknown。
|
新申请持lender→排序loan→日序号锁,只创建本事务尚未可见的新batch;所有既有batch路径先锁batch,核销沿receipt advisory→排序附件→lender/审批身份→排序loan,台账/身份维护不反向锁batch。取消保留旧申请和批次,不原位重提;一申请恰好一个保留批次。下载制单或上传回单转unknown,均不扣减本金。首期不能仅凭理由解除unknown。
|
||||||
|
|||||||
在新工单中引用
屏蔽一个用户