All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m28s
- tb_iot_card 新增 device_virtual_no 字段,存储绑定设备的虚拟号快照 - 列表/详情接口响应新增 device_virtual_no 字段 - 列表接口 is_standalone 改为可选参数(不传返回全部卡) - 移除列表接口 virtual_no 查询参数 - 绑卡/解绑时同步更新 device_virtual_no 快照 - 设备导入时批量写入 device_virtual_no 快照 - 归档 feat-iot-card-device-virtual-no 变更提案 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
43 lines
2.1 KiB
Markdown
43 lines
2.1 KiB
Markdown
## Why
|
||
|
||
`/api/admin/iot-cards/standalone` 当前使用硬编码 `WHERE is_standalone = true` 过滤,导致已绑定设备的 IoT 卡完全不可见。运营人员无法在卡管列表中看到这些卡,也无法通过列表查询某张卡目前归属于哪台设备,造成管理盲区。
|
||
|
||
## What Changes
|
||
|
||
- **移除硬编码 `is_standalone = true` 过滤**:`is_standalone` 改为可选查询参数,不传时返回全部卡(含绑定设备的卡)
|
||
- **移除 `virtual_no` 列表过滤参数**:不再支持按卡虚拟号模糊搜索
|
||
- **新增 `device_virtual_no` 冗余快照字段**:在 `tb_iot_card` 表新增 `device_virtual_no` 列,记录当前绑定设备的虚拟号(无绑定时为空字符串)
|
||
- **响应新增 `device_virtual_no` 字段**:列表和详情接口均返回对应的设备虚拟号
|
||
- **写入时机快照**:BindCard / UnbindCard / 设备导入(device_import)时同步写入或清空该字段
|
||
|
||
## Capabilities
|
||
|
||
### New Capabilities
|
||
|
||
- `iot-card-device-snapshot`:IoT 卡列表展示绑定设备虚拟号的能力——包括 `device_virtual_no` 快照字段的数据库维护、列表/详情响应扩展、以及 `is_standalone` 可选过滤。
|
||
|
||
### Modified Capabilities
|
||
|
||
(无现有 spec 级别的行为变更,仅实现层调整)
|
||
|
||
## Impact
|
||
|
||
**数据库**
|
||
- `tb_iot_card` 新增列 `device_virtual_no VARCHAR(100) NOT NULL DEFAULT ''`
|
||
- 迁移时回填现有绑定数据
|
||
|
||
**API**
|
||
- `GET /api/admin/iot-cards/standalone`
|
||
- 查询参数:移除 `virtual_no`,新增 `is_standalone`(可选布尔)
|
||
- 响应:新增 `device_virtual_no` 字段
|
||
- `GET /api/admin/iot-cards/standalone/:iccid`(详情)
|
||
- 响应:新增 `device_virtual_no` 字段
|
||
|
||
**代码**
|
||
- `internal/model/iot_card.go`:新增字段
|
||
- `internal/model/dto/iot_card_dto.go`:修改 Request / Response DTO
|
||
- `internal/store/postgres/iot_card_store.go`:移除硬编码过滤,支持可选 `is_standalone` 条件
|
||
- `internal/service/iot_card/service.go`:传递新过滤参数,填充响应字段
|
||
- `internal/service/device/binding.go`:BindCard / UnbindCard 时更新卡字段
|
||
- `internal/task/device_import.go`:导入时批量写入 `device_virtual_no`
|