Files
junhong_cmp_fiber/openspec/changes/fix-approval-submission-failure-terminal/proposal.md
邹进 6298a9061f fix: 第1批 M8、M13、M14 审批提交失败终态与退款关闭类终态定位
- 审批核心在实例进入提交失败的同一事务内写 submission_failed 决策投递与终态事件,消费入口单独放行
- 核销(4)、退款(7)、扫码注册(3)、资料资格(4)、线下充值(7)、佣金提现(5)新增“审批提交失败”终态并释放预占/冻结
- 三处恢复入口不再重放提交失败;退款关闭类终态按审批尝试定位退款单(M13)
- 核销列表与详情批量返回审批提交状态;筛选、字段说明、状态名称、退款导出加入新状态
- 迁移 000239 放宽五张业务表状态约束与决策投递取值约束(测试库已执行 up/down/up)
- OpenSpec Change fix-approval-submission-failure-terminal:18/26,测试部署后端到端验证与存量补数据待完成
2026-10-12 00:03:46 +09:00

3.7 KiB
Raw Blame History

Why

企微明确拒绝提交审批时,审批核心只把审批实例改为“提交失败”,不通知业务模块,业务单永远停在待审批:核销申请的账单预占、佣金提现的冻结金额一直不释放。另外退款审批在企微被拒绝、撤销、删除时,关闭分支把审批尝试 ID 当成退款单 ID,退款单停在待审批(测试库退款单 511 已复现)。核销申请列表与详情的审批提交状态字段也从未赋值。依据为《第1批-8-9月迭代缺陷修复技术方案》第 3、7、8 节(M8、M13、M14)。

What Changes

  • 审批核心在实例变为“提交失败”的同一事务内,发出新的终态决策 submission_failed,带脱敏失败摘要;提交结果未知不发。六个业务决策消费者必须同时接入该决策。
  • 核销申请新增状态 4“审批提交失败”(终态),收到决策后释放全部预占;列表与详情一次批量返回审批提交状态(M8)。
  • 退款新增状态 7“审批提交失败”(终态);扫码注册代理新增 3、提现资料资格新增 4、线下充值新增 7、佣金提现新增 5,各自为终态并释放占用;佣金提现释放冻结金额(M14)。
  • 以上状态均不再提供“恢复审批”;核销、退款、扫码注册代理三处恢复入口对“提交失败”的重放分支改为拒绝。要再办理须在卡管重新发起,生成新的审批尝试与新的企微审批。
  • 退款审批在企微被拒绝、撤销、删除后,按审批尝试正确定位退款单并置为“已拒绝”(终态);企微侧重新提交产生的新单号不关联(M13)。
  • BREAKING 上述业务列表、筛选、导出出现新状态值;新增一组成对迁移,放宽五张表的状态 CHECK 约束。

Capabilities

New Capabilities

无。

Modified Capabilities

  • external-integration:审批提交失败作为终态决策通知业务模块。
  • employee-collection-bill:核销申请新增“审批提交失败”终态;列表与详情返回审批提交状态。
  • order-refund-exchange:退款新增“审批提交失败”终态;企微关闭类终态按审批尝试定位退款单;企微侧重新提交不关联;恢复入口不再重放提交失败。
  • agent-distribution-withdrawal:扫码注册代理、佣金提现、提现资料资格新增“审批提交失败”终态;注册恢复入口不再重放提交失败。
  • agent-funds-commission:线下代理充值新增“审批提交失败”终态。

Impact

  • 代码:pkg/constants/approval.go、internal/infrastructure/wecom/approval_context_repository.go、internal/infrastructure/approval/terminal_event.go;六个决策消费者(internal/application/employeecollection/approval_decision.go、internal/service/refund/approval_decision.go、internal/application/agentrecharge/approval_decision.go、internal/application/distributionwithdrawal/{registration,withdrawal,qualification}_approval.go);三处恢复入口;各业务状态常量、列表筛选、状态名称、导出格式化;internal/query/employeecollection/application.go。
  • 数据库:新增一组成对迁移(编号排在 238 之后),放宽 tb_employee_collection_application、tb_refund_request、tb_agent_distribution_registration、tb_withdrawal_qualification、tb_agent_recharge_record 的状态约束,更新列注释(含无约束的 tb_commission_withdrawal_request);放宽 tb_approval_decision_delivery 的决策取值约束,允许 submission_failed。
  • 接口:列表筛选与状态说明新增值;重新生成接口文档。
  • 运营:这些单据提交企微失败后需在卡管重新发起,不再“恢复审批”。