# 一次性佣金修复 - 实现任务

## 1. 配置落库（ShopSeriesAllocation）

- [x] 1.1 更新 `internal/service/shop_series_allocation/service.go`：在创建分配时处理 `EnableOneTimeCommission/OneTimeCommissionConfig` 并落库
- [x] 1.2 更新 `internal/service/shop_series_allocation/service.go`：在更新分配时支持更新一次性佣金配置并落库
- [x] 1.3 梯度配置：使用 `ShopSeriesOneTimeCommissionTierStore` 在创建/更新时写入 tiers（更新时先清理再重建）
- [x] 1.4 参数校验：启用一次性佣金时必须提供配置；fixed 必须有 mode/value；tiered 必须有 tiers

## 2. 累计触发逻辑修复

- [x] 2.1 更新 `internal/service/commission_calculation/service.go`：累计触发场景每次支付成功都写回累计金额
- [x] 2.2 达到阈值时仅发放一次，发放后标记 `FirstCommissionPaid=true`

## 3. 测试修复与补充

- [x] 3.1 修复 `tests/unit/my_commission_service_test.go`：将 `CommissionType` 调整为 `CommissionSource`
- [x] 3.2 新增测试：一次性佣金配置落库（含 tiered tiers 落库）
- [x] 3.3 新增测试：累计触发多次支付后达到阈值触发一次性佣金且不重复
- [x] 3.4 确保 Service 层测试覆盖率 ≥ 90%（核心业务逻辑）
- [x] 3.5 新增集成测试：完整的配置→支付→分佣发放流程（端到端验证）

## 4. 文档更新

- [x] 4.1 更新 API 文档：`ShopSeriesAllocation` 创建/更新接口的一次性佣金参数说明
- [x] 4.2 更新业务流程文档：累计触发逻辑流程图（如适用）
- [x] 4.3 同步更新 `docs/` 目录下的相关说明（如有专门的分佣文档）

## 5. 验证

- [x] 5.1 运行 `go test ./...` 确保通过

