## 1. Contract And Types - [x] 1.1 按产品文档落地退款创建接口的金额、原因、备注和附件字段名称。 - [x] 1.2 按产品文档扩展退款详情响应中的 `approval`、`processing_status`、失败摘要和业务处理结果字段。 - [x] 1.3 按产品文档限制重新申请的可编辑字段、允许状态和不可变快照字段。 - [x] 1.4 扩展退款请求、响应和审批对象 TypeScript 类型,支持附件对象数组。 - [x] 1.5 更新退款 API service 类型及注释,移除不再适用的本地审批调用契约。 ## 2. Refund Creation - [x] 2.1 更新退款创建表单,提交退款金额、原因、备注和附件。 - [x] 2.2 复用现有对象存储上传流程,并将上传结果规范化为 `{ file_key, file_name, file_size }[]`。 - [x] 2.3 创建成功后明确提示已提交企微审批,创建后的申请金额不可在本地修改。 - [x] 2.4 验证附件上传中、上传失败、空附件和接口失败时不能提交错误数据。 ## 3. Refund List And Detail - [x] 3.1 退款详情拆分为退款业务信息、企微审批信息和业务处理结果三个区域。 - [x] 3.2 展示 `sp_no`、审批状态、申请人、审批人、意见、附件和审批时间线。 - [x] 3.3 展示 `processing_status`、失败摘要,以及系统重试中/联系管理员提示。 - [x] 3.4 退款列表和详情不显示本地通过、驳回、退回或人工退款确认按钮。 - [x] 3.5 保留既有退款业务信息和附件查看能力,不根据前端状态推导审批或处理结果。 ## 4. Resubmission - [x] 4.1 仅在已驳回、已撤销或已删除状态显示重新申请入口。 - [x] 4.2 重新申请允许修改退款金额、凭证和退款原因。 - [x] 4.3 重新申请禁止修改订单、资产和提交人快照。 - [x] 4.4 提交 `/api/admin/refunds/{id}/resubmit` 后刷新详情并展示新的企微审批状态。 - [x] 4.5 处理后端状态变化或无权限时的重新申请失败提示。 ## 5. Verification - [x] 5.1 验证审批中、通过处理中、处理成功、驳回、撤销和通过后撤销异常展示明确。 - [x] 5.2 验证审批信息与业务处理状态分区展示且互不推导。 - [x] 5.3 验证本地审批及人工退款操作入口和 API 调用均已移除。 - [x] 5.4 验证刷新、列表进入详情和重新申请后的数据来自后端最新响应。 - [x] 5.5 运行类型检查、lint、相关测试和构建。