38 lines
2.2 KiB
Markdown
38 lines
2.2 KiB
Markdown
# Change: 增加退款原审批恢复
|
|
|
|
## Why
|
|
|
|
退款审批提交可能出现企业微信单号已生成但本地结果未知、原提交事件明确失败,或需要重新同步已有审批单的情况。当前退款页面只有历史记录的“补发审批”能力,无法安全地恢复同一审批尝试;运营人员也缺少提交状态、失败摘要和最近恢复时间,难以判断是否可以处理。
|
|
|
|
## What Changes
|
|
|
|
- 新增 `POST /api/admin/refunds/{id}/recover-approval`,无请求体,调用后恢复原审批提交事件或确认未知结果。
|
|
- 新增 `RefundService.recoverApproval(id)`,成功响应解析为更新后的退款详情。
|
|
- 扩展退款列表和详情模型,支持 `submission_status`、`submission_status_name`、`approval_recoverable`、`approval_failure_summary`、`approval_last_recovery_at`。
|
|
- 在退款列表和详情中,仅当后端返回 `approval_recoverable = true` 且当前账号具备退款管理权限及数据范围时显示“恢复审批”。
|
|
- 恢复成功后刷新当前列表/详情;遇到状态冲突时提示“当前退款审批状态不允许恢复”并重新加载后端状态。
|
|
- 恢复动作沿用退款管理权限和数据范围,不新增审批实例、审批尝试、审批材料、审批实例 ID 或企业微信单号输入,也不替代现有历史审批“补发”能力。
|
|
|
|
## Impact
|
|
|
|
- Affected specs:
|
|
- `refund-management`
|
|
- Affected code:
|
|
- `src/api/modules/refund.ts`
|
|
- `src/types/api/refund.ts`
|
|
- `src/views/finance/refund/index.vue`
|
|
- `src/views/finance/refund/detail.vue`
|
|
- API contract:
|
|
- `POST /api/admin/refunds/{id}/recover-approval`
|
|
- `GET /api/admin/refunds`
|
|
- `GET /api/admin/refunds/{id}`
|
|
- Dependencies:
|
|
- 后端返回 `approval_recoverable` 的最终资格判断,并在服务端保证幂等、并发状态校验和数据范围校验。
|
|
- 后端成功响应包含完整退款详情,失败响应遵循现有统一错误结构。
|
|
- Out of scope:
|
|
- 创建新的审批尝试或审批实例。
|
|
- 前端直接调用企业微信、传入审批实例 ID、审批材料或 `sp_no`。
|
|
- 修改退款金额、退款方式、审批结果或渠道退款流程。
|
|
- 批量恢复、自动轮询恢复或替代 `trigger-approval` 历史审批补发。
|
|
|