## Why

佣金系统存在**状态常量定义冲突**和**接口数据不完整**两大问题：

1. **常量冲突**：`model/commission.go` 和 `pkg/constants/iot.go` 定义了两套不同的佣金状态常量，值 1 在 model 包表示"已入账"，在 constants 包表示"已冻结"，导致佣金记录显示错误
2. **接口缺陷**：`/commission-records` 接口返回的 ICCID、OrderNo、VirtualNo 等字段全部为空，且缺少销售来源店铺信息

这些问题导致：差价佣金被错误显示为"已冻结"、佣金明细无法关联到具体订单和卡、无法追溯佣金产生的销售来源。

## What Changes

### 1. 统一佣金状态常量
- 删除 `model/commission.go` 中的旧常量定义
- 统一使用 `pkg/constants/iot.go` 的四态定义（已冻结→解冻中→已发放→已失效）
- 迁移数据库中 status 值（1→3, 2→4）
- 修复 12 处引用旧常量的代码位置

### 2. 修复 commission-records 接口关联查询
- Store 层实现 JOIN 关联查询（订单表、卡表、设备表）
- 实现 ICCID、OrderNo、DeviceNo 的过滤条件
- Service 层正确填充 OrderNo、ICCID、VirtualNo、OrderCreatedAt 字段

### 3. 新增销售来源店铺信息
- DTO 新增 SellerShopID、SellerShopName 字段
- 关联查询订单的 `seller_shop_id` 显示销售来源

### 4. 修复佣金统计查询语义
- `GetStats` 和 `GetDailyStats` 的过滤条件从"精确匹配已发放（status=1）"改为"排除无效和待审（status NOT IN 4,99）"
- 使总佣金统计包含冻结中的佣金（面向未来的正确语义）

### 5. 数据迁移
- 编写数据库迁移脚本转换历史数据

## Capabilities

### New Capabilities
- `commission-record-query`: 佣金记录完整查询能力
  - 支持关联查询订单、卡、设备信息
  - 支持按 ICCID、订单号、设备号过滤
  - 显示销售来源店铺信息

### Modified Capabilities
- `commission-status`: 佣金状态定义
  - 状态值从二态（已入账、已失效）扩展为四态（已冻结、解冻中、已发放、已失效）

## Impact

### 受影响代码
| 文件 | 影响 |
|------|------|
| `model/commission.go` | 删除旧常量定义 |
| `pkg/constants/iot.go` | 确认常量定义正确 |
| `internal/service/commission_calculation/service.go` | 替换常量引用（3处） |
| `internal/service/shop_commission/service.go` | 替换常量引用 + 填充关联字段（2处） |
| `internal/service/refund/service.go` | 替换常量引用（1处） |
| `internal/service/recharge/service.go` | 替换常量引用（1处） |
| `internal/store/postgres/commission_record_store.go` | 实现过滤条件和 JOIN；修复统计查询语义 |
| `internal/model/dto/shop_commission_dto.go` | DTO 新增字段 |

### 受影响接口
- `GET /api/admin/shops/:shop_id/commission-records` - 返回值结构变更（新增字段）

### 数据库迁移
- `tb_commission_record.status`: 1→3, 2→4

### 依赖项
- 无新增外部依赖
