清理冗余的梯度返佣(TierCommission)配置
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m46s

- 移除 Model 层:删除 ShopSeriesCommissionTier 模型及相关字段
- 更新 DTO:删除 TierCommissionConfig、TierEntry 类型及相关请求/响应字段
- 删除 Store 层:移除 ShopSeriesCommissionTierStore 及相关查询逻辑
- 简化 Service 层:删除梯度返佣处理逻辑,统计查询移除 tier_bonus 字段
- 数据库迁移:创建 000034_remove_tier_commission 移除相关表和字段
- 更新测试:移除梯度返佣相关测试用例,更新集成测试
- OpenAPI 文档:删除梯度返佣相关 schema 和枚举值
- 归档变更:归档 remove-tier-commission-redundancy 到 archive/2026-01-30-
- 同步规范:更新 4 个主 specs,标记废弃功能并添加迁移指引

原因:梯度返佣功能与一次性梯度佣金功能重复,且从未实现实际计算逻辑
迁移:使用一次性佣金的梯度模式 (OneTimeCommissionConfig.type = "tiered") 替代
This commit is contained in:
2026-01-30 14:57:24 +08:00
parent 409a68d60b
commit 1cf17e8f14
39 changed files with 978 additions and 407 deletions

View File

@@ -0,0 +1,88 @@
## Why
当前套餐系列分配中存在两套梯度佣金配置:一个是 `TierCommission`(梯度返佣),另一个是 `OneTimeCommission.tiered`(一次性梯度佣金)。这两者功能高度重复,导致概念混淆。经过探索发现,`TierCommission` 仅有数据库表和 DTO 定义,但没有实际的计算逻辑实现,而系统实际需要的佣金机制是:**基础返佣(成本价差)+ 一次性佣金(固定或梯度)**。因此需要删除冗余的 `TierCommission` 相关代码,简化佣金配置模型。
## What Changes
- **删除数据库表和字段**
- 删除 `tb_shop_series_commission_tier` 表(梯度返佣配置表)
- 删除 `tb_shop_series_allocation.enable_tier_commission` 字段
- 删除 `tb_shop_series_allocation_config.enable_tier_commission` 字段(配置快照表)
- **删除 Model 和 DTO**
- 删除 `internal/model/shop_series_commission_tier.go` 模型
- 删除 `internal/model/dto/shop_series_allocation.go` 中的 `TierCommissionConfig``TierEntry` 类型
- 删除 `CreateShopSeriesAllocationRequest``UpdateShopSeriesAllocationRequest` 中的 `EnableTierCommission``TierConfig` 字段
- 删除 `ShopSeriesAllocationResponse` 中的 `EnableTierCommission` 字段
- **删除 Store 层**
- 删除 `internal/store/postgres/shop_series_commission_tier_store.go` 及其接口定义
- **删除常量和枚举**
- 删除 `internal/model/commission.go` 中的 `CommissionSourceTierBonus` 常量
- 更新佣金来源说明(从三种改为两种:`cost_diff``one_time`
- **更新统计和查询逻辑**
- 删除佣金统计中的 `TierBonusAmount``TierBonusCount``TierBonusPercent` 字段
- 更新 `internal/model/dto/commission.go` 中的 `CommissionStatsResponse`
- 更新 `internal/store/postgres/commission_record_store.go` 中的统计查询 SQL
- **删除相关测试**
- 删除 `tests/integration/shop_series_allocation_test.go` 中与 `enable_tier_commission` 相关的测试用例
- **创建数据库迁移**
- 创建 down migration 删除 `enable_tier_commission` 字段和 `tb_shop_series_commission_tier`
- **更新 API 文档**
- 更新 OpenAPI 规范,删除 `TierCommissionConfig` 相关的 schema 定义
## Capabilities
### New Capabilities
无新增 capability。
### Modified Capabilities
- `shop-series-allocation`: 删除梯度返佣配置要求,简化为只支持基础返佣和一次性佣金两种机制
- `shop-commission-tier`: **整个 capability 将被废弃**,因为梯度返佣功能完全移除
- `commission-calculation`: 删除 `tier_bonus` 佣金来源,明确只支持 `cost_diff``one_time` 两种佣金来源
- `commission-record-query`: 删除梯度奖励相关的统计字段(`tier_bonus_amount``tier_bonus_count``tier_bonus_percent`
## Impact
**受影响的代码模块**
- Handler: `internal/handler/shop_series_allocation_handler.go`(删除 tier_config 参数处理)
- Service: `internal/service/shop_series_allocation/service.go`(删除 tier 相关业务逻辑)
- Store: `internal/store/postgres/shop_series_commission_tier_store.go`(整个文件删除)
- Store: `internal/store/postgres/commission_record_store.go`(删除 tier_bonus 统计)
- Model: `internal/model/shop_series_commission_tier.go`(整个文件删除)
- DTO: `internal/model/dto/shop_series_allocation.go`(删除 TierCommissionConfig
- DTO: `internal/model/dto/commission.go`(删除 tier_bonus 统计字段)
**受影响的 API 端点**
- `POST /api/shop-series-allocations` - 请求体删除 `enable_tier_commission``tier_config` 字段
- `PUT /api/shop-series-allocations/:id` - 请求体删除 `enable_tier_commission``tier_config` 字段
- `GET /api/shop-series-allocations` - 响应删除 `enable_tier_commission` 字段
- `GET /api/shop-series-allocations/:id` - 响应删除 `enable_tier_commission` 字段
- `GET /api/my-commission/stats` - 响应删除 `tier_bonus_amount``tier_bonus_count``tier_bonus_percent` 字段
**数据库迁移**
- 需要创建新的 migration 删除 `tb_shop_series_commission_tier`
- 需要删除 `tb_shop_series_allocation``tb_shop_series_allocation_config` 表中的 `enable_tier_commission` 字段
**依赖关系**
- 删除 `ShopSeriesCommissionTierStore` 的依赖注入
**破坏性变更**
- **BREAKING**: API 请求/响应结构变更(删除字段)
- **BREAKING**: 数据库表结构变更
- **注**: 由于系统尚未上线,无历史数据兼容性问题
**测试影响**
- 需要更新集成测试用例,删除 `enable_tier_commission` 相关的测试场景
- 需要验证佣金计算逻辑仍然正常工作(只计算 cost_diff 和 one_time
**性能影响**
- 正面影响:简化数据模型,减少无用的表 JOIN 和查询
- 佣金统计查询性能提升(减少一个条件分支)