Files
junhong_cmp_fiber/openspec/changes/archive/2026-01-24-fix-iccid-import-csv-format/tasks.md
huang 45aa7deb87
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m33s
feat: 添加环境变量管理工具和部署配置改版
主要改动:
- 新增交互式环境配置脚本 (scripts/setup-env.sh)
- 新增本地启动快捷脚本 (scripts/run-local.sh)
- 新增环境变量模板文件 (.env.example)
- 部署模式改版:使用嵌入式配置 + 环境变量覆盖
- 添加对象存储功能支持
- 改进 IoT 卡片导入任务
- 优化 OpenAPI 文档生成
- 删除旧的配置文件,改用嵌入式默认配置
2026-01-26 10:28:29 +08:00

1.5 KiB

1. CSV 解析改造

  • 1.1 修改 pkg/utils/csv.goCSVParseResult 结构体,添加 Cards []CardInfo 替代 ICCIDs []string
  • 1.2 修改 ParseICCIDFromCSV 函数为 ParseCardCSV,支持解析 ICCID + MSISDN 两列
  • 1.3 添加列数校验,单列 CSV 直接返回错误
  • 1.4 添加 ICCID/MSISDN 非空校验,空值记录为解析错误
  • 1.5 更新表头识别逻辑,支持 msisdn/接入号/手机号 关键字
  • 1.6 更新 pkg/utils/csv_test.go 测试用例

2. 导入任务模型改造

  • 2.1 创建数据库迁移:将 iccid_list 字段重命名为 card_list,类型保持 JSONB
  • 2.2 修改 internal/model/iot_card_import_task.go,定义 CardListJSON 类型为 []CardInfo{ICCID, MSISDN}
  • 2.3 更新 ImportResultItem 结构体添加 MSISDN 字段

3. 导入服务改造

  • 3.1 修改 internal/service/iot_card_import/service.go,调用新的 ParseCardCSV 函数
  • 3.2 将解析结果的 Cards 存入任务的 card_list 字段

4. 导入任务处理改造

  • 4.1 修改 internal/task/iot_card_import.gogetICCIDsFromTask 改为 getCardsFromTask
  • 4.2 修改 processBatch 函数,创建卡记录时同时填充 ICCIDMSISDN
  • 4.3 更新失败/跳过记录的结构,包含 MSISDN 信息
  • 4.4 更新 internal/task/iot_card_import_test.go 测试用例

5. API 文档更新

  • 5.1 更新路由注册中 CSV 文件字段的描述,说明必须包含 ICCID 和 MSISDN 两列
  • 5.2 重新生成 OpenAPI 文档