## ADDED Requirements

### Requirement: 退款申请数据模型
系统 SHALL 提供 `tb_refund_request` 表存储退款申请，包含退款单号（唯一）、关联订单 ID、店铺 ID（数据权限过滤）、实收金额、申请退款金额、审批退款金额、状态、审批人、审批时间、佣金回扣标记、资产重置标记等字段。

#### Scenario: 创建退款申请
- **WHEN** 平台管理员提交退款申请，填写订单 ID、实收金额、申请退款金额、退款原因
- **THEN** 系统 SHALL 生成唯一退款单号（格式 RF+日期时间+随机数），创建 `status=1（待审批）` 的退款记录，`shop_id` 从关联订单自动读取

#### Scenario: 仅针对已支付套餐订单
- **WHEN** 管理员对非已支付订单或充值订单发起退款
- **THEN** 系统 SHALL 返回错误，拒绝创建

#### Scenario: 重复退款防护
- **WHEN** 管理员对已有待审批/已通过/已退回退款记录的订单再次发起退款
- **THEN** 系统 SHALL 返回错误，拒绝创建
- **WHEN** 管理员对仅有已拒绝退款记录的订单重新发起退款
- **THEN** 系统 SHALL 允许创建新的退款申请

### Requirement: 退款状态流转
退款单状态 SHALL 按以下规则流转：待审批(1) → 已通过(2)/已拒绝(3)/已退回(4)；已退回(4) → 待审批(1)。已通过和已拒绝为终态。

#### Scenario: 审批通过
- **WHEN** 审批人对待审批退款单执行通过操作
- **THEN** 状态 SHALL 变为 2（已通过），记录审批人和审批时间，异步触发资产处理和佣金回扣

#### Scenario: 审批拒绝
- **WHEN** 审批人对待审批退款单执行拒绝操作，填写拒绝原因
- **THEN** 状态 SHALL 变为 3（已拒绝），记录拒绝原因

#### Scenario: 退回重提
- **WHEN** 审批人退回退款申请，申请人修改后重新提交
- **THEN** 状态 SHALL 从 4（已退回）变回 1（待审批）

#### Scenario: 非法状态变更被拒绝
- **WHEN** 对已通过或已拒绝的退款单执行任何状态变更
- **THEN** 系统 SHALL 返回错误，状态不变

### Requirement: 仅平台账号可操作
退款的发起和审批 SHALL 限制为平台用户（user_type IN 1,2）。同一人可以既发起又审批。
