## 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、相关测试和构建。
