# 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**: 一次性佣金配置 (one*time_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 表示返佣百分比的千分比