# 一次性佣金链式分配

## ADDED Requirements

### Requirement: 分配时设置下级一次性佣金金额

系统 SHALL 允许上级代理在分配套餐时设置给下级的一次性佣金金额。该金额 MUST 小于等于上级自己能拿到的一次性佣金金额，且 MUST 大于等于 0。

#### Scenario: 设置有效的下级佣金金额
- **WHEN** 代理A分配套餐给代理A1，设置一次性佣金金额为 10 元
- **AND** 代理A自己能拿到的一次性佣金为 20 元
- **THEN** 系统 SHALL 保存该配置
- **AND** 代理A1的一次性佣金金额记录为 10 元

#### Scenario: 设置超额的下级佣金金额
- **WHEN** 代理A分配套餐给代理A1，设置一次性佣金金额为 25 元
- **AND** 代理A自己能拿到的一次性佣金为 20 元
- **THEN** 系统 SHALL 拒绝该配置
- **AND** 返回错误"给下级的一次性佣金不能超过自己能拿到的金额"

#### Scenario: 设置零佣金（独吞）
- **WHEN** 代理A分配套餐给代理A1，设置一次性佣金金额为 0 元
- **THEN** 系统 SHALL 保存该配置
- **AND** 代理A1的一次性佣金金额记录为 0 元

### Requirement: 链式佣金分配计算

当一次性佣金触发时，系统 SHALL 沿代理链向上计算并分配佣金。每级代理实际获得的佣金 = 自己能拿到的金额 - 给下级的金额。

#### Scenario: 三级代理链佣金分配
- **WHEN** 代理链为 平台 → A → A1 → A2
- **AND** 系列规则：首充100返20元
- **AND** 平台给A设置：20元
- **AND** A给A1设置：8元
- **AND** A1给A2设置：5元
- **AND** A2的客户触发首充
- **THEN** A2 SHALL 获得 5 元
- **AND** A1 SHALL 获得 8 - 5 = 3 元
- **AND** A SHALL 获得 20 - 8 = 12 元
- **AND** 总分配金额 = 20 元

#### Scenario: 末端代理无下级
- **WHEN** 代理A1是末端代理（无下级）
- **AND** A1的客户触发首充
- **AND** A1能拿到的一次性佣金为 10 元
- **THEN** A1 SHALL 获得完整的 10 元

### Requirement: 代理只能看到自己的一次性佣金金额

代理查看套餐列表时，系统 SHALL 只返回该代理能拿到的一次性佣金金额，不得返回系列规则的总金额或其他代理的配置。

#### Scenario: 代理A查看套餐
- **WHEN** 代理A调用套餐列表接口
- **AND** 该套餐的系列规则为首充100返20元
- **AND** 平台给A设置的一次性佣金为 15 元
- **THEN** 返回的一次性佣金金额 SHALL 为 15 元
- **AND** 不得返回 20 元（总规则）

#### Scenario: 平台查看套餐
- **WHEN** 平台管理员调用套餐列表接口
- **THEN** 返回的一次性佣金 SHALL 显示完整规则（首充100返20元）
