Files
junhong_cmp_fiber/openspec/changes/archive/2026-01-27-carrier-module-refactor/proposal.md
huang d104d297ca
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m16s
feat: 实现运营商模块重构,添加冗余字段优化查询性能
主要变更:
- 新增 Carrier CRUD API(创建、列表、详情、更新、删除、状态更新)
- IotCard/IotCardImportTask 添加 carrier_type/carrier_name 冗余字段
- 移除 Carrier 表的 channel_name/channel_code 字段
- 查询时直接使用冗余字段,避免 JOIN Carrier 表
- 添加数据库迁移脚本(000021-000023)
- 添加单元测试和集成测试
- 同步更新 OpenAPI 文档和 specs
2026-01-27 12:18:19 +08:00

1.7 KiB
Raw Blame History

Why

Carrier运营商模块目前只有 Model 定义,缺少管理接口。系统需要一套完整的 CRUD + 状态管理接口来创建和管理上游运营商渠道。同时,现有的 IotCard 等表通过 carrier_id 引用 Carrier每次查询都需要 JOIN且 Carrier 删除后历史数据会缺失。需要通过冗余字段实现"赋予时刻快照",让数据自包含。

What Changes

  • 新增 Carrier 管理 API增删改查 + 启用/禁用)
  • 简化 Carrier Model移除未使用的 channel_namechannel_code 字段
  • IotCard 新增冗余字段 carrier_typecarrier_name,导入时填充快照
  • IotCardImportTask 新增冗余字段 carrier_name(已有 carrier_type
  • 优化查询逻辑,移除不必要的 JOIN 操作
  • BREAKING: 移除 Carrier 表的 channel_namechannel_code 字段及相关索引

Capabilities

New Capabilities

  • carrier-management: 运营商管理功能,包含 CRUD 接口、状态管理、列表筛选

Modified Capabilities

  • iot-card-import: 导入时填充 carrier_type、carrier_name 冗余字段
  • iot-card-query: 查询响应直接使用冗余字段,无需 JOIN Carrier 表

Impact

  • Model 层: carrier.go(移除字段)、iot_card.go(新增字段)、iot_card_import_task.go(新增字段)
  • 新增文件: carrier_dto.gocarrier_store.gocarrier/service.gocarrier.go(handler)、carrier.go(routes)
  • 修改文件: iot_card/service.goiot_card_import/service.godevice/binding.go(移除 JOIN 逻辑)
  • Bootstrap: 注册新的 Store、Service、Handler
  • 数据库: 3 个迁移文件Carrier 简化、IotCard 冗余、ImportTask 冗余)
  • API: 新增 /api/admin/carriers 路由组