Files
junhong_cmp_fiber/openspec/specs/package-series-management/spec.md
huang b52cb9a078
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m27s
fix: 修复梯度佣金档位字段缺失,补全授权接口响应字段及强充有效状态
- OneTimeCommissionTierDTO 补充 operator 字段映射
- GrantCommissionTierItem 补充 dimension/stat_scope 字段(从全局配置合并)
- 系列授权列表/详情补充强充锁定状态和强充金额的有效值计算
- 同步 OpenSpec 主规范并归档变更文档
2026-03-05 11:23:28 +08:00

5.5 KiB
Raw Blame History

ADDED Requirements

Requirement: 创建套餐系列

系统 SHALL 允许平台管理员创建套餐系列,包含系列编码、系列名称、描述信息。系列编码 MUST 全局唯一(排除已删除记录)。新创建的套餐系列默认为启用状态。

Scenario: 成功创建套餐系列

  • WHEN 管理员提交有效的套餐系列信息(系列编码、系列名称)
  • THEN 系统创建套餐系列记录,返回创建的套餐系列详情,状态为启用(1)

Scenario: 系列编码重复

  • WHEN 管理员提交的系列编码已存在(未删除)
  • THEN 系统返回错误 "系列编码已存在"

Scenario: 缺少必填字段

  • WHEN 管理员未提供系列编码或系列名称
  • THEN 系统返回参数验证错误

Requirement: 查询套餐系列列表

系统 SHALL 提供套餐系列列表查询功能,支持按系列名称模糊搜索、按状态筛选。结果 MUST 分页返回,按创建时间倒序排列。

Scenario: 查询所有套餐系列

  • WHEN 管理员请求套餐系列列表,不带筛选条件
  • THEN 系统返回所有未删除的套餐系列,分页显示

Scenario: 按名称搜索

  • WHEN 管理员提供系列名称关键字
  • THEN 系统返回名称包含该关键字的套餐系列

Scenario: 按状态筛选

  • WHEN 管理员指定状态筛选(启用/禁用)
  • THEN 系统只返回匹配状态的套餐系列

Requirement: 查询套餐系列详情

系统 SHALL 允许管理员查询单个套餐系列的详细信息。

Scenario: 查询存在的套餐系列

  • WHEN 管理员请求指定 ID 的套餐系列详情
  • THEN 系统返回该套餐系列的完整信息

Scenario: 查询不存在的套餐系列

  • WHEN 管理员请求不存在或已删除的套餐系列 ID
  • THEN 系统返回 "套餐系列不存在" 错误

Requirement: 更新套餐系列

系统 SHALL 允许管理员更新套餐系列的基本信息(系列名称、描述)。系列编码创建后 MUST NOT 允许修改。

Scenario: 成功更新套餐系列

  • WHEN 管理员提交有效的更新信息
  • THEN 系统更新套餐系列记录,返回更新后的详情

Scenario: 尝试修改系列编码

  • WHEN 管理员尝试修改系列编码
  • THEN 系统忽略系列编码字段,不进行修改

Scenario: 更新不存在的套餐系列

  • WHEN 管理员更新不存在的套餐系列
  • THEN 系统返回 "套餐系列不存在" 错误

Requirement: 删除套餐系列

系统 SHALL 允许管理员删除套餐系列(软删除)。

Scenario: 成功删除套餐系列

  • WHEN 管理员删除指定的套餐系列
  • THEN 系统软删除该记录,后续查询不再返回

Scenario: 删除不存在的套餐系列

  • WHEN 管理员删除不存在的套餐系列
  • THEN 系统返回 "套餐系列不存在" 错误

Requirement: 启用/禁用套餐系列

系统 SHALL 允许管理员切换套餐系列的启用状态。

Scenario: 启用套餐系列

  • WHEN 管理员将禁用的套餐系列设置为启用
  • THEN 系统更新状态为启用(1)

Scenario: 禁用套餐系列

  • WHEN 管理员将启用的套餐系列设置为禁用
  • THEN 系统更新状态为禁用(2)

Scenario: 状态未变化

  • WHEN 管理员设置的状态与当前状态相同
  • THEN 系统正常返回成功,不产生错误

Requirement: 套餐系列一次性佣金规则配置

系统 SHALL 在套餐系列层面配置一次性佣金的完整规则,包括触发条件、阈值、金额/梯度、时效、强充配置。梯度配置(commission_type=tiered)中每个档位 MUST 支持通过 operator 字段设置阈值比较运算符(>>=<<=),默认值为 >=

Scenario: 配置首充规则

  • WHEN 创建或更新套餐系列
  • AND 设置一次性佣金规则:trigger_type = first_rechargethreshold = 10000100元commission_amount = 200020元
  • THEN 系统保存该规则配置

Scenario: 配置累计充值规则

  • WHEN 创建或更新套餐系列
  • AND 设置一次性佣金规则:trigger_type = accumulated_rechargethreshold = 20000200元commission_amount = 400040元
  • THEN 系统保存该规则配置

Scenario: 配置梯度规则(含 operator

  • WHEN 创建或更新套餐系列,commission_type = tiered
  • AND 梯度配置包含 operator 字段:[{operator: ">=" , dimension: "sales_count", stat_scope: "self", threshold: 100, amount: 1000}, {operator: "<", dimension: "sales_count", stat_scope: "self", threshold: 50, amount: 500}]
  • THEN 系统保存完整梯度配置(含 operator
  • AND 查询详情时响应中 tiers 包含 operator 字段

Scenario: 配置梯度规则(不传 operator向后兼容

  • WHEN 创建或更新套餐系列,commission_type = tiered
  • AND 梯度配置未提供 operator 字段:[{dimension: "sales_count", stat_scope: "self", threshold: 100, amount: 1000}]
  • THEN 系统保存梯度配置,operator 存储为空值(计算引擎 fallback 到 >=
  • AND 查询详情时响应中 tiersoperator 字段不出现omitempty

Scenario: 查询系列详情包含规则

  • WHEN 查询套餐系列详情
  • THEN 返回完整的一次性佣金规则配置,梯度档位包含 operatordimensionstat_scopethresholdamount