- 审批核心在实例进入提交失败的同一事务内写 submission_failed 决策投递与终态事件,消费入口单独放行 - 核销(4)、退款(7)、扫码注册(3)、资料资格(4)、线下充值(7)、佣金提现(5)新增“审批提交失败”终态并释放预占/冻结 - 三处恢复入口不再重放提交失败;退款关闭类终态按审批尝试定位退款单(M13) - 核销列表与详情批量返回审批提交状态;筛选、字段说明、状态名称、退款导出加入新状态 - 迁移 000239 放宽五张业务表状态约束与决策投递取值约束(测试库已执行 up/down/up) - OpenSpec Change fix-approval-submission-failure-terminal:18/26,测试部署后端到端验证与存量补数据待完成
34 lines
3.7 KiB
Markdown
34 lines
3.7 KiB
Markdown
## 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`。
|
||
- 接口:列表筛选与状态说明新增值;重新生成接口文档。
|
||
- 运营:这些单据提交企微失败后需在卡管重新发起,不再“恢复审批”。
|