# 设备导入槽位映射手工验收样例

本文档用于 `fix-device-import-slot-mapping` 提案的手工验收准备，覆盖“保留原始槽位”和“超出最大槽位失败”两类场景。

## Excel 表头

请在本地新建 `.xlsx` 文件，并使用以下固定表头顺序：

| virtual_no | device_name | device_model | device_type | imei | manufacturer | max_sim_slots | iccid_1 | iccid_2 | iccid_3 | iccid_4 |
|------------|-------------|--------------|-------------|------|--------------|---------------|---------|---------|---------|---------|

所有列必须设置为文本格式。

## 样例 1：仅填写卡2/卡3，保留原始槽位

预期：导入成功后，绑定关系仍然写入槽位 2 和槽位 3，不得前移为槽位 1 和槽位 2。

| virtual_no | device_name | device_model | device_type | imei | manufacturer | max_sim_slots | iccid_1 | iccid_2 | iccid_3 | iccid_4 |
|------------|-------------|--------------|-------------|------|--------------|---------------|---------|---------|---------|---------|
| SLOT-MAP-OK-001 | 槽位保留样机 | GT06N | GPS Tracker | 860000000000001 | Concox | 3 |  | `替换为已存在且未绑定的 ICCID_A` | `替换为已存在且未绑定的 ICCID_B` |  |

验收要点：
- 任务结果中该行应导入成功。
- 设备绑定结果中，`ICCID_A` 的 `slot_position = 2`。
- 设备绑定结果中，`ICCID_B` 的 `slot_position = 3`。

## 样例 2：填写槽位超出最大 SIM 槽数

预期：该行导入失败，失败原因为“卡槽填写超出最大SIM槽数”。

| virtual_no | device_name | device_model | device_type | imei | manufacturer | max_sim_slots | iccid_1 | iccid_2 | iccid_3 | iccid_4 |
|------------|-------------|--------------|-------------|------|--------------|---------------|---------|---------|---------|---------|
| SLOT-MAP-FAIL-001 | 越界槽位样机 | GT06N | GPS Tracker | 860000000000002 | Concox | 2 |  | `替换为已存在且未绑定的 ICCID_C` | `替换为已存在且未绑定的 ICCID_D` |  |

验收要点：
- 任务结果中该行应计入失败。
- 失败明细中的 `reason` 应为“卡槽填写超出最大SIM槽数”。
- 该设备不应创建任何绑定记录。

## 执行前检查

- 准备的 ICCID 必须已存在系统中。
- 准备的 ICCID 必须未绑定其他设备。
- 上传前确认文件扩展名为 `.xlsx`。

## 结果核对建议

- 任务详情页核对成功数、失败数和失败原因。
- 设备详情页或绑定列表接口核对 `slot_position`。
- 如需进一步确认，可直接查询 `tb_device_sim_binding.slot_position`。
