7.4 KiB
7.4 KiB
Package Series Allocation Spec Delta
MODIFIED Requirements
Requirement: 套餐系列分配列表查询
系统 SHALL 提供套餐系列分配列表查询功能,支持按店铺、系列和状态筛选,返回包含新佣金配置的分配信息。
Scenario: 成功获取分配列表
- WHEN 用户请求套餐系列分配列表
- THEN 系统返回分配列表,每项包含:
- 基本信息: id, series_id, series_name, shop_id, shop_name
- 分配者信息: allocator_shop_id, allocator_shop_name
- 佣金配置: base_commission (mode, value), enable_tier_commission
- 状态和时间: status, created_at, updated_at
- AND 响应结构为:
{ list, page, page_size, total, total_pages }
Scenario: 按条件筛选分配列表
- WHEN 用户提供筛选条件 (shop_id, series_id, status)
- THEN 系统返回符合条件的分配列表
- AND 支持分页参数 (page, page_size)
Requirement: 创建套餐系列分配
系统 SHALL 允许用户创建套餐系列分配,配置基础返佣和可选的梯度返佣规则。
Scenario: 创建基础返佣分配
- WHEN 用户提交创建请求,包含:
- series_id: 套餐系列ID
- shop_id: 被分配的店铺ID
- base_commission: { mode: "fixed"/"percent", value: number }
- THEN 系统创建分配记录
- AND 返回完整的分配信息包含 allocator_shop_id 和 allocator_shop_name
Scenario: 创建带梯度返佣的分配
- WHEN 用户提交创建请求,包含:
- series_id, shop_id, base_commission (同上)
- enable_tier_commission: true
- tier_config: { period_type, tier_type, tiers[] }
- period_type: "monthly"/"quarterly"/"yearly"
- tier_type: "sales_count"/"sales_amount"
- tiers: [{ threshold, mode, value }]
- THEN 系统创建分配记录并保存梯度配置
- AND 梯度档位按阈值升序存储
Scenario: 验证梯度档位阈值递增
- WHEN 用户提交的梯度档位阈值不是递增的
- THEN 系统返回400错误
- AND 错误消息说明阈值必须递增
Requirement: 更新套餐系列分配
系统 SHALL 允许用户更新现有分配的佣金配置,包括基础返佣和梯度返佣。
Scenario: 更新基础返佣配置
- WHEN 用户提交更新请求,包含新的 base_commission
- THEN 系统更新分配记录
- AND 返回更新后的完整信息
Scenario: 启用或禁用梯度返佣
- WHEN 用户更新 enable_tier_commission 标志
- THEN 系统更新配置
- AND 如果启用,必须提供有效的 tier_config
- AND 如果禁用,tier_config 可以为空
Scenario: 更新梯度返佣配置
- WHEN 用户提交包含新 tier_config 的更新请求
- THEN 系统替换整个梯度配置
- AND 验证新档位阈值递增
- AND 返回更新后的信息
Requirement: 删除套餐系列分配
系统 SHALL 允许用户删除套餐系列分配记录。
Scenario: 成功删除分配
- WHEN 用户请求删除指定ID的分配
- THEN 系统删除该分配记录
- AND 返回成功响应 (200)
Scenario: 删除不存在的分配
- WHEN 用户请求删除不存在的分配ID
- THEN 系统返回404错误
- AND 错误消息说明分配不存在
Requirement: 获取套餐系列分配详情
系统 SHALL 提供单个分配记录的详细信息查询。
Scenario: 成功获取详情
- WHEN 用户请求指定ID的分配详情
- THEN 系统返回完整的分配信息,包括:
- 所有基本字段
- base_commission 对象
- enable_tier_commission 标志
- tier_config (如果启用了梯度返佣)
Requirement: 更新套餐系列分配状态
系统 SHALL 允许用户启用或禁用套餐系列分配。
Scenario: 切换分配状态
- WHEN 用户提交状态更新请求 (status: 1启用/2禁用)
- THEN 系统更新分配状态
- AND 返回成功响应
Scenario: 禁用分配后的行为
- WHEN 分配被禁用 (status: 2)
- THEN 该分配不再参与佣金计算 (由后端业务逻辑保证)
- AND 前端列表中状态显示为"禁用"
REMOVED Requirements
Requirement: 定价模式配置
Reason: 旧的定价模式 (pricing_mode, pricing_value) 已被新的佣金模型替代
Migration: 旧数据通过后端迁移脚本转换为基础返佣配置:
- pricing_mode="fixed" → base_commission.mode="fixed"
- pricing_mode="percentage" → base_commission.mode="percent"
- pricing_value → base_commission.value (需要单位转换)
Requirement: 一次性佣金配置
Reason: 一次性佣金配置 (onetime_commission*) 已被梯度返佣系统替代
Migration: 旧的一次性佣金通过以下方式迁移:
- 如果设置了一次性佣金,转换为单档位的梯度返佣
- trigger → tier_type mapping (first_activation → sales_count, cumulative_recharge → sales_amount)
- threshold → tiers[0].threshold
- amount → tiers[0].value (mode设为fixed)
Requirement: 计算成本价字段
Reason: calculated_cost_price 字段在新模型中不再使用
Migration: 该字段不再返回,成本计算由后端业务逻辑内部处理
ADDED Requirements
Requirement: 基础返佣配置
系统 SHALL 为每个分配提供基础返佣配置,包含返佣模式和返佣值。
Scenario: 固定金额返佣
- WHEN base_commission.mode = "fixed"
- THEN base_commission.value 表示固定返佣金额(单位:分)
- AND 每笔交易返佣该固定金额
Scenario: 百分比返佣
- WHEN base_commission.mode = "percent"
- THEN base_commission.value 表示返佣百分比的千分比 (如200表示20%)
- AND 每笔交易返佣 = 交易金额 * (value / 1000)
Requirement: 梯度返佣配置
系统 SHALL 支持可选的梯度返佣配置,根据周期内的销量或销售额分档返佣。
Scenario: 按销量分档返佣
- WHEN tier_config.tier_type = "sales_count"
- THEN 系统根据周期内的销售数量匹配档位
- AND 达到档位阈值后,该档位的返佣规则生效
Scenario: 按销售额分档返佣
- WHEN tier_config.tier_type = "sales_amount"
- THEN 系统根据周期内的销售金额(分)匹配档位
- AND 达到档位阈值后,该档位的返佣规则生效
Scenario: 月度返佣周期
- WHEN tier_config.period_type = "monthly"
- THEN 系统按自然月统计销量或销售额
- AND 每月初重置计数
Scenario: 季度返佣周期
- WHEN tier_config.period_type = "quarterly"
- THEN 系统按季度统计销量或销售额
- AND 每季度初重置计数
Scenario: 年度返佣周期
- WHEN tier_config.period_type = "yearly"
- THEN 系统按年度统计销量或销售额
- AND 每年初重置计数
Requirement: 梯度档位管理
系统 SHALL 支持多个返佣档位,每个档位有独立的阈值和返佣规则。
Scenario: 多档位返佣
- WHEN 配置了多个档位 (tiers数组)
- THEN 系统按阈值从低到高排列档位
- AND 当销量/销售额超过某档位阈值时,使用该档位的返佣规则
Scenario: 档位阈值唯一性
- WHEN 用户提交包含重复阈值的档位
- THEN 系统返回400错误
- AND 错误消息说明阈值必须唯一
Scenario: 档位返佣模式
- WHEN 档位的 mode = "fixed"
- THEN value 表示固定返佣金额(分)
- WHEN 档位的 mode = "percent"
- THEN value 表示返佣百分比的千分比