## ADDED Requirements

### Requirement: IoT 卡换货换出行为

系统 SHALL 在 IoT 卡作为旧资产完成换货后，将其视为“已被换出、不可继续作为当前客户资产使用”的资产。

系统 MUST 满足：
- 换货完成前旧卡必须 `asset_status=2`（已销售）
- 换货完成时旧卡 `asset_status -> 3`
- 旧卡 `generation` 在换货完成时保持不变
- 若后续执行 `renew`，才允许旧卡重新进入新一代库存

#### Scenario: shipping 完成后旧卡标记为已换货
- **WHEN** 一张 IoT 卡作为旧资产完成 `shipping` 换货
- **THEN** 系统 MUST 将该卡 `asset_status` 更新为 `3`

#### Scenario: direct 完成后旧卡标记为已换货
- **WHEN** 一张 IoT 卡作为旧资产完成 `direct` 换货
- **THEN** 系统 MUST 将该卡 `asset_status` 更新为 `3`

---

### Requirement: IoT 卡换货换入行为

系统 SHALL 在 IoT 卡作为新资产完成换货后，将其视为当前客户正在使用的资产。

系统 MUST 满足：
- 换货完成前新卡必须 `asset_status=1`（在库）
- 换货完成前新卡必须与旧卡 `shop_id` 一致，含二者同为平台库存 `NULL`
- 换货完成前新卡不得存在有效客户绑定或被其他进行中换货单占用
- 换货完成后新卡 `asset_status -> 2`
- 新卡 `generation` 在换货完成时保持不变
- 新卡来源旧卡关系 MUST 通过 `ExchangeOrder` 可追溯

#### Scenario: 新卡完成换货后切为已销售
- **WHEN** 一张 IoT 卡作为新资产完成换货
- **THEN** 系统 MUST 将该卡 `asset_status` 更新为 `2`

---

### Requirement: IoT 卡转新重置规则

系统 SHALL 在 H7 转新时对 IoT 卡执行以下重置：
- `generation = generation + 1`
- `asset_status = 1`（在库）
- 清空累计充值与首充触发相关状态（含 `AccumulatedRecharge`、系列累计/首充字段）
- 清除个人客户绑定关系
- 删除旧钱包并创建新空钱包

#### Scenario: 转新后进入新代际
- **WHEN** 对旧卡执行转新
- **THEN** 系统 MUST 使该卡进入新代际并以在库状态重新销售
