Files
luo 4c6d871c35
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 7m2s
feat: 退款企微审批详情与业务处理状态
2026-07-24 16:30:58 +08:00

3.9 KiB

Context

退款申请由后台提交业务资料,审批过程在企微完成,后台只负责展示企微审批信息以及订单退款的业务处理结果。当前页面仍按本地审批模型展示通过、拒绝和退回操作,需要调整为只读状态展示并保留受限的重新申请能力。

Goals / Non-Goals

  • Goals: 让退款创建、列表和详情与企微审批及业务处理状态保持一致。
  • Goals: 展示可追溯的审批单号、参与人、意见、附件和时间线。
  • Goals: 明确区分审批状态与业务处理状态,并覆盖处理失败和自动重试提示。
  • Goals: 允许符合条件的退款重新申请,同时锁定订单、资产和提交人快照。
  • Non-Goals: 不在前端实现企微审批动作、审批回调或审批引擎。
  • Non-Goals: 不在后台执行非代理钱包的人工退款。
  • Non-Goals: 不根据本地旧状态推断企微审批状态或处理状态。

Decisions

  • Decision: 详情接口返回的 approval 对象作为企微审批信息的唯一数据源。

  • Rationale: 审批动作在企微完成,前端不应通过本地状态或额外请求重建审批过程。

  • Decision: processing_status 与审批状态独立展示,并使用后端返回的状态名称、失败摘要和业务处理结果。

  • Rationale: “审批通过”不等于退款处理完成,两个状态必须避免混用。

  • Decision: 创建和重新申请的附件统一使用 { file_key, file_name, file_size }[]

  • Rationale: 页面既要提交对象存储文件标识,也要在审批详情中保留可读的文件元数据。

  • Decision: 重新申请资格由后端最终校验,前端按已驳回、已撤销或已删除状态控制入口并处理接口拒绝。

  • Rationale: 状态可能被并发更新,前端展示控制不能替代服务端业务校验。

  • Decision: 移除本地通过、驳回、退回和人工退款确认入口及调用。

  • Rationale: 这些操作与企微审批职责冲突,继续保留会造成重复审批或错误退款。

Data Contract

  • Create request: refund amount, reason, remark and attachments.
  • Detail response: refund business data, approval object and processing_status.
  • Approval object: source, sp_no, status, status_name, template_version, applicant, approvers, comments, attachments, timeline, business_process_result.
  • Resubmit request: editable refund amount, attachments and reason; immutable order, asset and submitter snapshots.
  • Resubmit eligible statuses: rejected, revoked or deleted, using the backend status contract.

Risks / Trade-offs

  • Risk: 企微审批状态名称或时间线字段可能为空或增加新状态.

  • Mitigation: 保留后端原始字段,缺失时显示稳定占位,不在前端硬编码未知状态映射。

  • Risk: 审批通过后业务处理可能失败或进入重试.

  • Mitigation: 独立展示处理状态、失败摘要,并按后端结果显示系统重试或联系管理员提示。

  • Risk: 后端仍允许旧本地审批接口调用.

  • Mitigation: 前端移除入口和调用,同时由后端按新审批模式拒绝不适用的本地操作。

Migration Plan

  1. 确认退款创建、详情和重新申请接口的字段名称及状态枚举。
  2. 扩展退款类型和对象存储附件元数据类型。
  3. 更新创建退款表单和附件提交结构。
  4. 重构退款详情为业务信息、企微审批信息和业务处理结果三个区域。
  5. 移除本地审批及人工退款操作,保留并限制重新申请入口。
  6. 验证审批中、通过处理中、处理成功、驳回、撤销和通过后撤销异常状态。

Open Questions

  • processing_status 的完整枚举、展示名称和“系统重试中/联系管理员”的触发字段需要后端确认。
  • “已删除”是退款记录状态、审批状态还是业务处理状态,需要接口契约明确。
  • approval.attachments 是否与退款创建附件共用文件对象结构,需要联调确认。