## MODIFIED Requirements

### Requirement: 换货迁移时更新个人客户资产绑定

系统 SHALL 在换货完成成功后，更新 `PersonalCustomerDevice` 的资产标识绑定关系：
- 若旧资产存在客户绑定，绑定中的 `virtual_no` MUST 更新为新资产资产绑定键
- 更新后客户对资产访问连续，不需重新登录即可看到新资产

该规则 MUST 同时适用于：
- `shipping` 流程完成换货
- `direct` 流程创建即完成

该规则 MUST NOT 仅依赖 `migrate_data=true` 才执行。

#### Scenario: 不迁移也要切换客户绑定
- **WHEN** 旧资产存在个人客户绑定且执行了 `migrate_data=false` 的换货完成
- **THEN** 系统 MUST 仍然将绑定记录的资产标识字段更新为新资产资产绑定键

#### Scenario: 迁移后客户绑定跟随新资产
- **WHEN** 旧资产存在个人客户绑定且执行了 `migrate_data=true`
- **THEN** 系统 MUST 将绑定记录的资产标识字段更新为新资产资产绑定键

---

### Requirement: 换货完成前的绑定承接校验

系统 SHALL 在换货完成前校验新资产是否可以承接现有个人客户绑定。

若旧资产存在 `PersonalCustomerDevice` 绑定，则系统 MUST 满足：
- 新资产存在可写入绑定的资产绑定键
- IoT 卡资产绑定键 MUST 使用新卡 `virtual_no`
- 设备资产绑定键 MUST 优先使用新设备 `virtual_no`，为空时 MAY 使用新设备 `imei`，与现有登录绑定规则保持一致
- 新资产绑定键当前不得存在 `status=1` 的 `PersonalCustomerDevice` 绑定记录
- 已禁用或软删除绑定记录不视为当前绑定冲突

若任一条件不满足，系统 MUST 拒绝完成换货并回滚整个事务。

#### Scenario: 新资产无法承接绑定时回滚
- **WHEN** 旧资产存在客户绑定，但新资产缺少可承接的资产绑定键
- **THEN** 系统 MUST 拒绝完成换货
- **AND** MUST 保持换货单未完成

#### Scenario: 新资产已有有效客户绑定时回滚
- **WHEN** 旧资产存在客户绑定，但新资产绑定键已经存在 `status=1` 的客户绑定记录
- **THEN** 系统 MUST 拒绝完成换货
- **AND** MUST 回滚整个完成事务

---

### Requirement: 转新时清除个人客户绑定

系统 SHALL 在 H7 转新时清除该资产在 `PersonalCustomerDevice` 中的绑定关系，避免旧客户继续访问新代际资产。

#### Scenario: 转新后旧客户需重新绑定
- **WHEN** 资产转新完成
- **THEN** 系统 MUST 删除或失效对应客户绑定，使旧客户再次访问时触发重新绑定流程
