修复在途还款被出借人维护卡死并按审批时资格登记付款后事实(09-17-company-loan-principal-repayment)
- A:出借人存在 reserved 额度占用时,身份关联与收款资料维护在出借人锁内 返回 409 loan.lender_in_flight;页面禁用并提示,修正账户弹窗误导文案 - B:回单 OCR 认领、人工回单参与人、核销按审批时资格认定,不再因原审批人 或出借员工事后离职/撤权、主数据停用而卡死;保留身份核实、版本与付款快照 一致、审批独立性及回单匹配校验;付款前环节仍校验当前资格 - 测试:隔离 PostgreSQL 合成全流程,含确定性并发交错、付款后独立性反例、 离职后经 OCR/人工复核核销、PC/手机按钮禁用;变异测试均变红 - 恢复手册:资金类数据恢复后先暂停付款,对照银行流水补齐并核对占用再开放 - design 按环节修订资格规则 注意:C(同金额回单传错批次错误核销)已复现但尚未修复,借款功能不具备 真实还款验收条件;未推送、未部署。 Co-Authored-By: Claude Opus 5.5 <[email protected]>
这个提交包含在:
@@ -80,7 +80,7 @@ async function claimReceiptJob(prisma) {
|
||||
return null;
|
||||
}
|
||||
if (batch.entity_type === "loan_repayment") {
|
||||
try { await require("../services/companyLoanPayments").validateLoanPayment(tx, batch); }
|
||||
try { await require("../services/companyLoanPayments").validateLoanPayment(tx, batch, { postPayment: true }); }
|
||||
catch (error) {
|
||||
if (!error?.details?.reasonCode?.startsWith("loan.")) throw error;
|
||||
await tx.paymentBatchReceiptAttachment.updateMany({
|
||||
|
||||
在新工单中引用
屏蔽一个用户