## 1. API Contract And Types

- [ ] 1.1 将换货列表查询类型中的通用 `identifier` 替换为可选的 `old_asset_keyword` 与 `new_asset_keyword`。
- [ ] 1.2 扩展换货列表项类型，支持 `old_asset_type`、`old_asset_id`、`old_asset_identifier`、`new_asset_type`、`new_asset_id`、`new_asset_identifier`、`status` 和 `status_name`。

## 2. Exchange List Search

- [ ] 2.1 将换货管理列表筛选区的“资产标识符”替换为“旧资产”和“新资产”输入框。
- [ ] 2.2 查询、刷新和分页时保留并传递非空的 `old_asset_keyword`、`new_asset_keyword`，不再发送 `identifier`。
- [ ] 2.3 重置搜索条件时清空新旧资产关键词，后续请求不发送这两个参数。
- [ ] 2.4 保留用户输入的 ICCID、接入号、虚拟号、IMEI 或 SN 原始值，不在前端转换后再传递给后端。

## 3. Exchange List Display

- [ ] 3.1 增加旧资产类型、旧资产标识、新资产类型、新资产标识四个独立列表列。
- [ ] 3.2 根据后端资产类型显示“物联网卡”或“设备”，并原样显示对应后端资产标识。
- [ ] 3.3 状态列优先展示后端 `status_name`，缺失时显示稳定占位内容。
- [ ] 3.4 新资产字段在未分配时显示稳定占位内容，不与旧资产字段混用。

## 4. Verification

- [ ] 4.1 验证仅输入旧资产、仅输入新资产、同时输入新旧资产时，请求分别传递正确的关键词参数。
- [ ] 4.2 验证两个资产关键词均为空时不传筛选参数，重置后保持相同行为。
- [ ] 4.3 验证旧资产和新资产类型、标识符分别显示，IoT 卡显示 ICCID、设备显示设备号。
- [ ] 4.4 验证卡的 ICCID、接入号或虚拟号关键词均由后端按输入所在的旧/新资产条件命中，前端不转换输入值。
- [ ] 4.5 运行相关类型检查、lint 或构建验证。
