# 任务列表：IoT 模型位置重构

## 准备工作

- [x] **TASK-001**: 确认 `internal/model/` 目录已存在且可写
  - 验证方法：`ls -la internal/model/`
  - 预期输出：目录存在，包含现有模型文件
  - **结果**: ✅ 已确认

- [x] **TASK-002**: 确认 `internal/iot/model/` 目录包含 11 个模型文件
  - 验证方法：`ls internal/iot/model/ | wc -l`
  - 预期输出：11
  - **结果**: ✅ 已确认 11 个文件

- [x] **TASK-003**: 搜索项目中所有引用 `internal/iot/model` 的代码
  - 验证方法：`rg "internal/iot/model" internal/ --type go`
  - 预期输出：无结果（当前已验证）
  - **结果**: ✅ 无 Go 代码引用

## 迁移执行

- [x] **TASK-004**: 移动运营商模型文件
  - 命令：`git mv internal/iot/model/carrier.go internal/model/`
  - 验证：`test -f internal/model/carrier.go && echo "成功"`
  - **结果**: ✅ 已完成

- [x] **TASK-005**: 移动佣金模型文件
  - 命令：`git mv internal/iot/model/commission.go internal/model/`
  - 验证：`test -f internal/model/commission.go && echo "成功"`
  - **结果**: ✅ 已完成

- [x] **TASK-006**: 移动流量使用记录模型文件
  - 命令：`git mv internal/iot/model/data_usage.go internal/model/`
  - 验证：`test -f internal/model/data_usage.go && echo "成功"`
  - **结果**: ✅ 已完成

- [x] **TASK-007**: 移动设备模型文件
  - 命令：`git mv internal/iot/model/device.go internal/model/`
  - 验证：`test -f internal/model/device.go && echo "成功"`
  - **结果**: ✅ 已完成

- [x] **TASK-008**: 移动财务记录模型文件
  - 命令：`git mv internal/iot/model/financial.go internal/model/`
  - 验证：`test -f internal/model/financial.go && echo "成功"`
  - **结果**: ✅ 已完成

- [x] **TASK-009**: 移动 IoT 卡模型文件
  - 命令：`git mv internal/iot/model/iot_card.go internal/model/`
  - 验证：`test -f internal/model/iot_card.go && echo "成功"`
  - **结果**: ✅ 已完成

- [x] **TASK-010**: 移动号卡模型文件
  - 命令：`git mv internal/iot/model/number_card.go internal/model/`
  - 验证：`test -f internal/model/number_card.go && echo "成功"`
  - **结果**: ✅ 已完成

- [x] **TASK-011**: 移动订单模型文件
  - 命令：`git mv internal/iot/model/order.go internal/model/`
  - 验证：`test -f internal/model/order.go && echo "成功"`
  - **结果**: ✅ 已完成

- [x] **TASK-012**: 移动套餐模型文件
  - 命令：`git mv internal/iot/model/package.go internal/model/`
  - 验证：`test -f internal/model/package.go && echo "成功"`
  - **结果**: ✅ 已完成

- [x] **TASK-013**: 移动轮询配置模型文件
  - 命令：`git mv internal/iot/model/polling.go internal/model/`
  - 验证：`test -f internal/model/polling.go && echo "成功"`
  - **结果**: ✅ 已完成

- [x] **TASK-014**: 移动系统配置模型文件
  - 命令：`git mv internal/iot/model/system.go internal/model/`
  - 验证：`test -f internal/model/system.go && echo "成功"`
  - **结果**: ✅ 已完成

## 清理工作

- [x] **TASK-015**: 验证 `internal/iot/model/` 目录已空
  - 验证方法：`ls internal/iot/model/`
  - 预期输出：无文件
  - **结果**: ✅ 目录为空

- [x] **TASK-016**: 删除空的 `internal/iot/model/` 目录
  - 命令：`rmdir internal/iot/model/`
  - 验证：`test ! -d internal/iot/model/ && echo "目录已删除"`
  - **结果**: ✅ 目录已删除

- [x] **TASK-017**: 检查 `internal/iot/` 目录是否还包含其他内容
  - 验证方法：`ls -la internal/iot/`
  - 如果为空，考虑删除 `internal/iot/` 目录
  - **结果**: ✅ 目录为空，但保留用于未来的 IoT Handler/Service/Store 层

## 验证工作

- [x] **TASK-018**: 再次搜索项目中所有引用 `internal/iot/model` 的代码
  - 验证方法：`rg "internal/iot/model" . --type go`
  - 预期输出：无结果
  - **结果**: ✅ 无 Go 代码引用

- [x] **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`

- [x] **TASK-020**: 运行 Go 代码格式检查
  - 命令：`go fmt ./...`
  - 预期输出：无需格式化（或格式化成功）
  - **结果**: ✅ 格式检查通过

- [x] **TASK-021**: 运行 Go 代码静态分析
  - 命令：`go vet ./...`
  - 预期输出：无错误
  - **结果**: ✅ 静态分析通过

- [x] **TASK-022**: 编译项目
  - 命令：`go build -o /tmp/junhong_cmp_fiber ./cmd/api`
  - 预期输出：编译成功，无错误
  - **结果**: ✅ 编译成功

- [x] **TASK-023**: 运行项目测试（如果存在）
  - 命令：`go test ./... -v`
  - 预期输出：所有测试通过（或无测试）
  - **结果**: ✅ 跳过（项目暂无测试）

## 文档更新

- [x] **TASK-024**: 检查是否需要更新项目文档
  - 验证方法：`rg "internal/iot/model" docs/ README.md CLAUDE.md 2>/dev/null`
  - 预期输出：无结果（或更新找到的文档）
  - **结果**: ✅ 已更新 `docs/iot-sim-management/表结构详细说明.md` 中的 25 处引用

- [x] **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 分钟**
