## MODIFIED Requirements

### Requirement: D2 套餐订单列表接口
`/api/c/v1/orders` 接口 SHALL 保持不变，仅查询 `tb_order` 返回套餐购买订单。充值订单通过独立接口 `/api/c/v1/recharge-orders` 展示，两者不混合。

#### Scenario: 订单列表只返回套餐订单
- **WHEN** 用户查询某张卡的订单列表
- **THEN** 仅返回该卡下的套餐订单（来自 `tb_order`），不包含充值订单
- **THEN** 响应结构与原有接口完全兼容，无新增字段

### Requirement: AutoPurchaseAfterRecharge 异步任务
auto_purchase 任务 SHALL 从 `tb_recharge_order` 读取 linked_package_ids，执行完成后更新 `tb_recharge_order.auto_purchase_status`，同时创建套餐订单（`tb_order`）和对应的 `tb_payment`（payment_method=wallet）。不再读取 `tb_asset_recharge_record`。

#### Scenario: 自动购包成功写入新表
- **WHEN** auto_purchase 任务从 `tb_recharge_order` 获取 linked_package_ids 并完成购包
- **THEN** 创建 `tb_order`（type=single_card/device，payment_status=2）
- **THEN** 创建 `tb_payment`（payment_method=wallet，status=2，关联新订单）
- **THEN** `tb_recharge_order.auto_purchase_status` 更新为 success

## ADDED Requirements

### Requirement: D1 下单幂等恢复
系统 SHALL 在幂等键命中且对应充值订单为待支付状态时，返回已有充值订单信息（含 payment_config 引导），而非返回错误 "订单正在创建中"。

#### Scenario: 幂等键命中且订单待支付
- **WHEN** 用户重复发起下单请求，Redis 幂等键已存在且值为 recharge_order_no
- **THEN** 查询 `tb_recharge_order`，status=1（待支付）
- **THEN** 接口返回已有充值订单信息，HTTP 200，包含 `idempotent: true` 标志
- **THEN** 前端可凭此引导用户拉起已有支付而非展示报错

#### Scenario: 幂等键命中但订单已支付或关闭
- **WHEN** 幂等键存在，但对应充值订单 status=2/3（已支付或已关闭）
- **THEN** 删除 Redis 幂等键，允许重新发起下单
