Files
huang 867e97af11 重构:统一 IoT 模型到 internal/model/ 目录
将所有 IoT 相关的数据模型从 internal/iot/model/ 迁移到 internal/model/,
实现全局统一的模型层架构,符合项目横向分层设计原则。

变更内容:
- 迁移 11 个 IoT 模型文件(carrier, iot_card, device, order, package 等)
- 删除 internal/iot/model/ 目录
- 更新文档中的模型路径引用(25 处)
- 创建重构总结文档
- 归档 OpenSpec 变更为 2026-01-12-refactor-iot-model-location
- 创建 model-organization 规格文档

验证结果:
- 编译通过(go build 成功)
- 静态分析通过(go vet 无错误)
- 代码格式通过(go fmt 无变更)
- 无 Go 代码引用旧路径

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-12 16:01:53 +08:00

6.1 KiB
Raw Permalink Blame History

任务列表IoT 模型位置重构

准备工作

  • TASK-001: 确认 internal/model/ 目录已存在且可写

    • 验证方法:ls -la internal/model/
    • 预期输出:目录存在,包含现有模型文件
    • 结果: 已确认
  • TASK-002: 确认 internal/iot/model/ 目录包含 11 个模型文件

    • 验证方法:ls internal/iot/model/ | wc -l
    • 预期输出11
    • 结果: 已确认 11 个文件
  • TASK-003: 搜索项目中所有引用 internal/iot/model 的代码

    • 验证方法:rg "internal/iot/model" internal/ --type go
    • 预期输出:无结果(当前已验证)
    • 结果: 无 Go 代码引用

迁移执行

  • TASK-004: 移动运营商模型文件

    • 命令:git mv internal/iot/model/carrier.go internal/model/
    • 验证:test -f internal/model/carrier.go && echo "成功"
    • 结果: 已完成
  • TASK-005: 移动佣金模型文件

    • 命令:git mv internal/iot/model/commission.go internal/model/
    • 验证:test -f internal/model/commission.go && echo "成功"
    • 结果: 已完成
  • TASK-006: 移动流量使用记录模型文件

    • 命令:git mv internal/iot/model/data_usage.go internal/model/
    • 验证:test -f internal/model/data_usage.go && echo "成功"
    • 结果: 已完成
  • TASK-007: 移动设备模型文件

    • 命令:git mv internal/iot/model/device.go internal/model/
    • 验证:test -f internal/model/device.go && echo "成功"
    • 结果: 已完成
  • TASK-008: 移动财务记录模型文件

    • 命令:git mv internal/iot/model/financial.go internal/model/
    • 验证:test -f internal/model/financial.go && echo "成功"
    • 结果: 已完成
  • TASK-009: 移动 IoT 卡模型文件

    • 命令:git mv internal/iot/model/iot_card.go internal/model/
    • 验证:test -f internal/model/iot_card.go && echo "成功"
    • 结果: 已完成
  • TASK-010: 移动号卡模型文件

    • 命令:git mv internal/iot/model/number_card.go internal/model/
    • 验证:test -f internal/model/number_card.go && echo "成功"
    • 结果: 已完成
  • TASK-011: 移动订单模型文件

    • 命令:git mv internal/iot/model/order.go internal/model/
    • 验证:test -f internal/model/order.go && echo "成功"
    • 结果: 已完成
  • TASK-012: 移动套餐模型文件

    • 命令:git mv internal/iot/model/package.go internal/model/
    • 验证:test -f internal/model/package.go && echo "成功"
    • 结果: 已完成
  • TASK-013: 移动轮询配置模型文件

    • 命令:git mv internal/iot/model/polling.go internal/model/
    • 验证:test -f internal/model/polling.go && echo "成功"
    • 结果: 已完成
  • TASK-014: 移动系统配置模型文件

    • 命令:git mv internal/iot/model/system.go internal/model/
    • 验证:test -f internal/model/system.go && echo "成功"
    • 结果: 已完成

清理工作

  • TASK-015: 验证 internal/iot/model/ 目录已空

    • 验证方法:ls internal/iot/model/
    • 预期输出:无文件
    • 结果: 目录为空
  • TASK-016: 删除空的 internal/iot/model/ 目录

    • 命令:rmdir internal/iot/model/
    • 验证:test ! -d internal/iot/model/ && echo "目录已删除"
    • 结果: 目录已删除
  • TASK-017: 检查 internal/iot/ 目录是否还包含其他内容

    • 验证方法:ls -la internal/iot/
    • 如果为空,考虑删除 internal/iot/ 目录
    • 结果: 目录为空,但保留用于未来的 IoT Handler/Service/Store 层

验证工作

  • TASK-018: 再次搜索项目中所有引用 internal/iot/model 的代码

    • 验证方法:rg "internal/iot/model" . --type go
    • 预期输出:无结果
    • 结果: 无 Go 代码引用
  • TASK-019: 验证所有迁移的模型文件包名正确

    • 验证方法:grep "^package " internal/model/{carrier,commission,data_usage,device,financial,iot_card,number_card,order,package,polling,system}.go
    • 预期输出:所有 11 个文件的包名都是 package model
    • 结果: 所有文件包名统一为 package model
  • TASK-020: 运行 Go 代码格式检查

    • 命令:go fmt ./...
    • 预期输出:无需格式化(或格式化成功)
    • 结果: 格式检查通过
  • TASK-021: 运行 Go 代码静态分析

    • 命令:go vet ./...
    • 预期输出:无错误
    • 结果: 静态分析通过
  • TASK-022: 编译项目

    • 命令:go build -o /tmp/junhong_cmp_fiber ./cmd/api
    • 预期输出:编译成功,无错误
    • 结果: 编译成功
  • TASK-023: 运行项目测试(如果存在)

    • 命令:go test ./... -v
    • 预期输出:所有测试通过(或无测试)
    • 结果: 跳过(项目暂无测试)

文档更新

  • TASK-024: 检查是否需要更新项目文档

    • 验证方法:rg "internal/iot/model" docs/ README.md CLAUDE.md 2>/dev/null
    • 预期输出:无结果(或更新找到的文档)
    • 结果: 已更新 docs/iot-sim-management/表结构详细说明.md 中的 25 处引用
  • TASK-025: 更新本次重构的总结文档

    • 创建 docs/refactor-iot-model-location/ 目录
    • 编写重构总结(包含动机、影响、验证结果)
    • 结果: 已完成,文档位于 docs/refactor-iot-model-location/重构总结.md

依赖关系

并行任务:

  • TASK-004 到 TASK-014 可以并行执行(移动文件操作互不依赖)

串行依赖:

  • TASK-001, TASK-002, TASK-003 必须在迁移前完成(准备工作)
  • TASK-004 到 TASK-014 必须在 TASK-015 之前完成(移动完成后才能验证)
  • TASK-015 必须在 TASK-016 之前完成(验证空目录后才能删除)
  • TASK-018 到 TASK-023 必须在 TASK-016 之后完成(清理完成后才能验证)

预计时间

  • 准备工作5 分钟
  • 迁移执行5 分钟(自动化脚本)
  • 清理工作2 分钟
  • 验证工作5 分钟
  • 文档更新10 分钟

总计:约 30 分钟