## 0. 测试准备

- [x] 0.1 查询数据库中现有佣金记录的状态分布：`SELECT status, COUNT(*) FROM tb_commission_record GROUP BY status`
- [x] 0.2 确认现有状态值与常量定义的映射关系

## 1. 数据库迁移

- [x] 1.1 创建迁移文件：将 `tb_commission_record.status` 从旧值迁移到新值（1→3, 2→4）
- [x] 1.2 在测试环境执行迁移并验证：`SELECT status, COUNT(*) FROM tb_commission_record GROUP BY status`
- [x] 1.3 备份生产数据后执行迁移

## 2. 删除冲突常量

- [x] 2.1 删除 `internal/model/commission.go` 中的旧常量定义（第 40-46 行）
- [x] 2.2 更新 `internal/model/commission.go` 中 `CommissionRecord.Status` 字段的 GORM 注释：`1-已入账 2-已失效` → `1-已冻结 2-解冻中 3-已发放 4-已失效`

## 3. 替换常量引用

- [x] 3.1 修改 `internal/service/commission_calculation/service.go` 中的 4 处常量引用
  - [x] 3.1.1 第 151 行：`model.CommissionStatusReleased` → `constants.CommissionStatusReleased`
  - [x] 3.1.2 第 216 行：`model.CommissionStatusReleased` → `constants.CommissionStatusReleased`
  - [x] 3.1.3 第 517 行：`model.CommissionStatusReleased` → `constants.CommissionStatusReleased`
  - [x] 3.1.4 第 659 行：`model.CommissionStatusReleased` → `constants.CommissionStatusReleased`

- [x] 3.2 修改 `internal/service/refund/service.go` 中的 1 处常量引用
  - [x] 3.2.1 第 344 行：`model.CommissionStatusReleased` → `constants.CommissionStatusReleased`

- [x] 3.3 修改 `internal/service/recharge/service.go` 中的 1 处常量引用
  - [x] 3.3.1 第 664 行：`model.CommissionStatusReleased` → `constants.CommissionStatusReleased`

- [x] 3.4 修改 `internal/service/shop_commission/service.go` 中的 2 处常量引用
  - [x] 3.4.1 第 767 行：`model.CommissionStatusReleased` → `constants.CommissionStatusReleased`
  - [x] 3.4.2 第 749 行：`model.CommissionStatusInvalid` → `constants.CommissionStatusInvalid`

- [x] 3.5 修改 `internal/store/postgres/commission_record_store.go` 中的 2 处统计查询过滤条件（**注意：语义变更，不是简单替换常量**）
  - [x] 3.5.1 `GetStats`（第 123 行）：`Where("status = ?", model.CommissionStatusReleased)` → `Where("status NOT IN (?)", []int{constants.CommissionStatusInvalid, constants.CommissionStatusPendingReview})`
  - [x] 3.5.2 `GetDailyStats`（第 169 行）：同上，改为排除 status=4 和 status=99

## 4. 修复 commission-records 接口关联查询

- [x] 4.1 修改 `internal/store/postgres/commission_record_store.go` 的 `ListByShopID` 方法
  - [x] 4.1.1 添加 LEFT JOIN 关联查询（订单表、卡表、设备表）
  - [x] 4.1.2 实现 ICCID 过滤条件（模糊查询）
  - [x] 4.1.3 实现 OrderNo 过滤条件（精确查询）
  - [x] 4.1.4 实现 DeviceNo 过滤条件（模糊查询，通过 device_id JOIN device 表）

- [x] 4.2 修改 `internal/service/shop_commission/service.go` 的 `ListShopCommissionRecords` 方法
  - [x] 4.2.1 从查询结果中提取关联的 order_no、order_created_at
  - [x] 4.2.2 从查询结果中提取关联的 iccid
  - [x] 4.2.3 从查询结果中提取关联的 virtual_no
  - [x] 4.2.4 从查询结果中提取关联的 seller_shop_id

## 5. DTO 增强

- [x] 5.1 修改 `internal/model/dto/shop_commission_dto.go` 的 `ShopCommissionRecordItem` 结构体
  - [x] 5.1.1 新增 `SellerShopID uint` 字段
  - [x] 5.1.2 新增 `SellerShopName string` 字段

- [x] 5.2 更新 `ShopCommissionRecordItem` 的 JSON 标签和 description

## 6. Service 层填充销售店铺信息

- [x] 6.1 修改 `internal/service/shop_commission/service.go` 的 `ListShopCommissionRecords` 方法
  - [x] 6.1.1 批量查询销售店铺信息
  - [x] 6.1.2 填充 `SellerShopID` 和 `SellerShopName` 字段

## 7. 文档更新

- [x] 7.1 更新 `cmd/api/docs.go` 添加新字段说明（如有必要）
- [x] 7.2 更新 `cmd/gendocs/main.go` 如有必要
- [x] 7.3 更新 API 文档注释

## 8. 验证测试

- [x] 8.1 运行 `lsp_diagnostics` 检查所有修改文件的语法错误
- [x] 8.2 构建项目确认编译通过：`go build ./...`
- [x] 8.3 调用 `GET /api/admin/shops/:shop_id/commission-records` 接口验证返回数据
  - [x] 8.3.1 确认 OrderNo 有值
  - [x] 8.3.2 确认 ICCID 有值（单卡订单）
  - [x] 8.3.3 确认 VirtualNo 有值（设备订单）
  - [x] 8.3.4 确认 SellerShopID 和 SellerShopName 有值
  - [x] 8.3.5 确认状态名称正确（status=3 显示"已发放"）
- [x] 8.4 调用 `GET /api/admin/shops/:shop_id/commission-stats` 验证统计接口正常
