Files
junhong_cmp_fiber/openspec/specs/shop-series-allocation/spec.md
huang 1cf17e8f14
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m46s
清理冗余的梯度返佣(TierCommission)配置
- 移除 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") 替代
2026-01-30 14:57:24 +08:00

4.1 KiB
Raw Blame History

Capability: 店铺套餐系列分配管理

Purpose

本 capability 定义代理如何为下级店铺分配套餐系列,以及平台如何为一级代理分配。分配时需要配置基础返佣和可选的梯度返佣。

Requirements

Requirement: 为下级店铺分配套餐系列

系统 SHALL 允许代理为其直属下级店铺分配套餐系列。分配时 MUST 指定基础返佣配置返佣模式和返佣值MAY 启用一次性佣金。分配者只能分配自己已被分配的套餐系列。

Scenario: 成功分配套餐系列

  • WHEN 代理为直属下级店铺分配一个自己拥有的套餐系列设置基础返佣为百分比20020%
  • THEN 系统创建分配记录

Scenario: 尝试分配未拥有的系列

  • WHEN 代理尝试分配自己未被分配的套餐系列
  • THEN 系统返回错误 "您没有该套餐系列的分配权限"

Scenario: 尝试分配给非直属下级

  • WHEN 代理尝试分配给非直属下级店铺
  • THEN 系统返回错误 "只能为直属下级分配套餐"

Scenario: 重复分配同一系列

  • WHEN 代理尝试为同一下级店铺重复分配同一套餐系列
  • THEN 系统返回错误 "该店铺已分配此套餐系列"

Requirement: 查询套餐系列分配列表

系统 SHALL 提供分配列表查询,支持按下级店铺筛选、按套餐系列筛选、按状态筛选。

Scenario: 查询所有分配

  • WHEN 代理查询分配列表,不带筛选条件
  • THEN 系统返回该代理创建的所有分配记录

Scenario: 按店铺筛选

  • WHEN 代理指定下级店铺 ID 筛选
  • THEN 系统只返回该店铺的分配记录

Requirement: 更新套餐系列分配

系统 SHALL 允许代理更新分配的基础返佣配置和一次性佣金配置。更新返佣配置时 MUST 创建新的配置版本。

Scenario: 更新基础返佣配置时创建新版本

  • WHEN 代理将基础返佣从20%改为25%
  • THEN 系统更新分配记录,并创建新配置版本

Scenario: 更新不存在的分配

  • WHEN 代理更新不存在的分配 ID
  • THEN 系统返回 "分配记录不存在" 错误

Requirement: 删除套餐系列分配

系统 SHALL 允许代理删除分配记录。如果有下级依赖此分配MUST 禁止删除。

Scenario: 成功删除无依赖的分配

  • WHEN 代理删除一个没有下级依赖的分配记录
  • THEN 系统软删除该记录

Scenario: 尝试删除有下级依赖的分配

  • WHEN 代理尝试删除一个已被下级使用的分配(下级基于此分配又分配给了更下级)
  • THEN 系统返回错误 "存在下级依赖,无法删除"

Requirement: 启用/禁用套餐系列分配

系统 SHALL 允许代理切换分配的启用状态。禁用后下级 MUST NOT 能使用该分配购买套餐。

Scenario: 禁用分配

  • WHEN 代理将分配状态设为禁用
  • THEN 系统更新状态,下级无法基于此分配购买套餐

Scenario: 启用分配

  • WHEN 代理将禁用的分配设为启用
  • THEN 系统更新状态,下级可以继续使用

Requirement: 平台分配套餐系列

平台管理员 SHALL 能够为一级代理分配套餐系列。平台的成本价基准为 Package.suggested_cost_price。

Scenario: 平台为一级代理分配

  • WHEN 平台管理员为一级代理分配套餐系列
  • THEN 系统创建分配记录

REMOVED Requirements

Requirement: 梯度返佣配置

REMOVED - 此 requirement 已废弃

原内容: 分配时 MAY 启用梯度返佣

Reason: 梯度返佣 (TierCommission) 功能与一次性梯度佣金 (OneTimeCommission.tiered) 功能重复,且梯度返佣未实现实际计算逻辑,仅保留基础返佣和一次性佣金两种机制。

Migration:

  • 如果需要根据销售业绩给予额外奖励,请使用一次性佣金的梯度模式 (OneTimeCommissionConfig.type = "tiered")
  • 一次性佣金支持按销售数量或销售金额设置多个梯度档位
  • API 请求中删除 enable_tier_commissiontier_config 字段
  • API 响应中不再包含 enable_tier_commission 字段