## ADDED Requirements

### Requirement: 创建线下充值订单时必须上传支付凭证

系统 SHALL 在 `POST /api/admin/agent-recharges` 接口中，当 `payment_method=offline` 时强制要求 `payment_voucher_key` 字段非空。凭证 key 为通过 `/storage/upload-url` 上传至对象存储后获得的文件标识符。当 `payment_method=wechat` 时，`payment_voucher_key` 字段忽略。

#### Scenario: 线下支付缺少凭证时拒绝创建

- **WHEN** 调用 `POST /api/admin/agent-recharges`，`payment_method=offline` 且 `payment_voucher_key` 为空或未传
- **THEN** 系统返回 400，错误码 `CodeInvalidParam`，消息"线下充值必须上传支付凭证"

#### Scenario: 线下支付有凭证时创建成功

- **WHEN** 调用 `POST /api/admin/agent-recharges`，`payment_method=offline` 且 `payment_voucher_key` 非空
- **THEN** 系统创建充值记录，凭证 key 写入 `tb_agent_recharge_record.payment_voucher_key`，返回 200

#### Scenario: 微信支付不需要凭证

- **WHEN** 调用 `POST /api/admin/agent-recharges`，`payment_method=wechat`，不传 `payment_voucher_key`
- **THEN** 系统正常创建充值记录，不做凭证校验，返回 200

### Requirement: 充值记录存储支付凭证

系统 SHALL 将 `payment_voucher_key` 持久化到 `tb_agent_recharge_record` 表的 `payment_voucher_key` 列，与充值记录创建在同一个数据库操作内完成。

#### Scenario: 凭证随记录创建写入

- **WHEN** `Create` 方法执行创建充值记录
- **THEN** `payment_voucher_key` 与其他字段一同写入数据库，不可分割

### Requirement: 充值记录响应包含凭证信息

系统 SHALL 在 `AgentRechargeResponse` 中返回 `payment_voucher_key` 字段，允许为空（历史记录及微信支付无凭证）。

#### Scenario: 已上传凭证的线下充值记录查询

- **WHEN** 查询已创建的线下充值记录
- **THEN** 响应 `payment_voucher_key` 字段返回非空的对象存储 key

#### Scenario: 微信支付记录无凭证字段

- **WHEN** 查询微信支付的充值记录
- **THEN** 响应 `payment_voucher_key` 字段为空字符串或 omitempty（前端不展示）
