清理冗余的梯度返佣(TierCommission)配置
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m46s
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:
@@ -0,0 +1,17 @@
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: CommissionRecord 模型简化
|
||||
|
||||
系统 MUST 简化 CommissionRecord 模型,移除冻结相关字段。
|
||||
|
||||
#### Scenario: 新佣金记录字段
|
||||
- **WHEN** 创建佣金记录
|
||||
- **THEN** 包含:shop_id, order_id, iot_card_id, device_id, commission_source, amount, balance_after, status, released_at, remark
|
||||
|
||||
#### Scenario: 佣金来源类型
|
||||
- **WHEN** 创建佣金记录
|
||||
- **THEN** commission_source 为以下之一:cost_diff(成本价差)、one_time(一次性佣金)
|
||||
|
||||
#### Scenario: 不再支持梯度奖励来源
|
||||
- **WHEN** 尝试创建 commission_source = "tier_bonus" 的佣金记录
|
||||
- **THEN** 系统拒绝并返回错误 "不支持的佣金来源类型"
|
||||
@@ -0,0 +1,39 @@
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: 按佣金来源筛选
|
||||
|
||||
系统 SHALL 支持按佣金来源筛选佣金记录。
|
||||
|
||||
#### Scenario: 按成本价差筛选
|
||||
- **WHEN** 指定 commission_source 为 cost_diff
|
||||
- **THEN** 系统只返回成本价差类型的佣金记录
|
||||
|
||||
#### Scenario: 按一次性佣金筛选
|
||||
- **WHEN** 指定 commission_source 为 one_time
|
||||
- **THEN** 系统只返回一次性佣金类型的佣金记录
|
||||
|
||||
#### Scenario: 使用已废弃的佣金来源筛选
|
||||
- **WHEN** 指定 commission_source 为 tier_bonus
|
||||
- **THEN** 系统返回空列表或返回错误 "不支持的佣金来源类型"
|
||||
|
||||
---
|
||||
|
||||
### Requirement: 佣金统计
|
||||
|
||||
系统 SHALL 提供佣金统计功能,包含总收入和各来源占比。
|
||||
|
||||
#### Scenario: 查询总收入
|
||||
- **WHEN** 代理查询佣金统计
|
||||
- **THEN** 系统返回总收入金额(所有已入账佣金之和)
|
||||
|
||||
#### Scenario: 各来源占比
|
||||
- **WHEN** 代理查询佣金统计
|
||||
- **THEN** 系统返回各佣金来源的金额和占比(cost_diff、one_time)
|
||||
|
||||
#### Scenario: 统计响应不包含梯度奖励字段
|
||||
- **WHEN** 代理查询佣金统计
|
||||
- **THEN** 响应中不包含 tier_bonus_amount、tier_bonus_count、tier_bonus_percent 字段
|
||||
|
||||
#### Scenario: 按时间范围统计
|
||||
- **WHEN** 指定时间范围查询统计
|
||||
- **THEN** 系统只统计该时间范围内的佣金
|
||||
@@ -0,0 +1,47 @@
|
||||
## REMOVED Requirements
|
||||
|
||||
### Requirement: 配置梯度佣金
|
||||
|
||||
**原内容**: 系统 SHALL 允许代理为套餐系列分配配置梯度佣金。每个梯度包含:梯度类型(销量/销售额)、周期类型(月度/季度/年度)、阈值、达标后的返佣配置(返佣模式和返佣值)。
|
||||
|
||||
**Reason**: 整个店铺返佣梯度管理 capability 被废弃。梯度返佣功能与一次性梯度佣金功能重复,且梯度返佣从未实现实际的佣金计算逻辑。系统简化为只支持基础返佣(成本价差)和一次性佣金两种机制。
|
||||
|
||||
**Migration**:
|
||||
- 使用一次性佣金的梯度模式 (OneTimeCommissionConfig.type = "tiered") 替代
|
||||
- 一次性佣金支持按销售数量 (tier_type = "sales_count") 或销售金额 (tier_type = "sales_amount") 设置梯度
|
||||
- 一次性佣金每张卡/设备只触发一次,达到阈值后自动发放
|
||||
- 删除所有梯度佣金配置相关的 API 端点:
|
||||
- `POST /api/shop-series-allocations/:id/tiers` (添加梯度配置)
|
||||
- `GET /api/shop-series-allocations/:id/tiers` (查询梯度配置)
|
||||
- `PUT /api/shop-series-commission-tiers/:id` (更新梯度配置)
|
||||
- `DELETE /api/shop-series-commission-tiers/:id` (删除梯度配置)
|
||||
|
||||
---
|
||||
|
||||
### Requirement: 查询梯度佣金配置
|
||||
|
||||
**原内容**: 系统 SHALL 提供梯度佣金配置的查询功能,按分配 ID 查询,返回结果按阈值升序排列。
|
||||
|
||||
**Reason**: 随着梯度返佣功能的废弃,查询功能也一并移除。
|
||||
|
||||
**Migration**: 使用套餐系列分配详情接口查看一次性佣金配置 (`GET /api/shop-series-allocations/:id`),响应中的 `one_time_commission_config` 字段包含梯度配置(如果启用)。
|
||||
|
||||
---
|
||||
|
||||
### Requirement: 更新梯度佣金配置
|
||||
|
||||
**原内容**: 系统 SHALL 允许代理更新梯度配置的阈值和返佣配置。
|
||||
|
||||
**Reason**: 随着梯度返佣功能的废弃,更新功能也一并移除。
|
||||
|
||||
**Migration**: 通过更新套餐系列分配接口修改一次性佣金配置 (`PUT /api/shop-series-allocations/:id`),在请求体中更新 `one_time_commission_config` 字段。
|
||||
|
||||
---
|
||||
|
||||
### Requirement: 删除梯度佣金配置
|
||||
|
||||
**原内容**: 系统 SHALL 允许代理删除梯度配置。
|
||||
|
||||
**Reason**: 随着梯度返佣功能的废弃,删除功能也一并移除。
|
||||
|
||||
**Migration**: 通过更新套餐系列分配接口禁用一次性佣金 (`PUT /api/shop-series-allocations/:id`),设置 `enable_one_time_commission = false`。
|
||||
@@ -0,0 +1,49 @@
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: 为下级店铺分配套餐系列
|
||||
|
||||
系统 SHALL 允许代理为其直属下级店铺分配套餐系列。分配时 MUST 指定基础返佣配置(返佣模式和返佣值),MAY 启用一次性佣金。分配者只能分配自己已被分配的套餐系列。
|
||||
|
||||
#### Scenario: 成功分配套餐系列
|
||||
- **WHEN** 代理为直属下级店铺分配一个自己拥有的套餐系列,设置基础返佣为百分比200(20%)
|
||||
- **THEN** 系统创建分配记录
|
||||
|
||||
#### Scenario: 尝试分配未拥有的系列
|
||||
- **WHEN** 代理尝试分配自己未被分配的套餐系列
|
||||
- **THEN** 系统返回错误 "您没有该套餐系列的分配权限"
|
||||
|
||||
#### Scenario: 尝试分配给非直属下级
|
||||
- **WHEN** 代理尝试分配给非直属下级店铺
|
||||
- **THEN** 系统返回错误 "只能为直属下级分配套餐"
|
||||
|
||||
#### Scenario: 重复分配同一系列
|
||||
- **WHEN** 代理尝试为同一下级店铺重复分配同一套餐系列
|
||||
- **THEN** 系统返回错误 "该店铺已分配此套餐系列"
|
||||
|
||||
---
|
||||
|
||||
### Requirement: 更新套餐系列分配
|
||||
|
||||
系统 SHALL 允许代理更新分配的基础返佣配置和一次性佣金配置。更新返佣配置时 MUST 创建新的配置版本。
|
||||
|
||||
#### Scenario: 更新基础返佣配置时创建新版本
|
||||
- **WHEN** 代理将基础返佣从20%改为25%
|
||||
- **THEN** 系统更新分配记录,并创建新配置版本
|
||||
|
||||
#### Scenario: 更新不存在的分配
|
||||
- **WHEN** 代理更新不存在的分配 ID
|
||||
- **THEN** 系统返回 "分配记录不存在" 错误
|
||||
|
||||
## REMOVED Requirements
|
||||
|
||||
### Requirement: 梯度返佣配置
|
||||
|
||||
**原内容**: 分配时 MAY 启用梯度返佣
|
||||
|
||||
**Reason**: 梯度返佣 (TierCommission) 功能与一次性梯度佣金 (OneTimeCommission.tiered) 功能重复,且梯度返佣未实现实际计算逻辑,仅保留基础返佣和一次性佣金两种机制。
|
||||
|
||||
**Migration**:
|
||||
- 如果需要根据销售业绩给予额外奖励,请使用一次性佣金的梯度模式 (OneTimeCommissionConfig.type = "tiered")
|
||||
- 一次性佣金支持按销售数量或销售金额设置多个梯度档位
|
||||
- API 请求中删除 `enable_tier_commission` 和 `tier_config` 字段
|
||||
- API 响应中不再包含 `enable_tier_commission` 字段
|
||||
Reference in New Issue
Block a user