将所有 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>
6.1 KiB
6.1 KiB
任务列表: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 分钟