# 一次性佣金触发变更

## MODIFIED Requirements

### Requirement: 一次性充值触发佣金

系统 SHALL 支持"首充"触发条件：当该卡/设备在该套餐系列下首次充值且金额 ≥ 配置阈值时触发一次性佣金。

**变更说明**：将 `single_recharge` 重命名为 `first_recharge`（首充），强调是"第一次"充值而非"单次"充值。

#### Scenario: 首充达到阈值
- **WHEN** IoT卡在该系列下首次充值 500 元
- **AND** 配置阈值 300 元
- **AND** 该卡在该系列下未触发过首充返佣
- **THEN** 系统按链式分配规则发放一次性佣金
- **AND** 标记该卡在该系列下的首充状态为"已触发"

#### Scenario: 首充未达到阈值
- **WHEN** IoT卡在该系列下首次充值 200 元
- **AND** 配置阈值 300 元
- **THEN** 系统不发放一次性佣金
- **AND** 首充状态保持"未触发"

#### Scenario: 非首次充值
- **WHEN** IoT卡在该系列下已触发过首充
- **AND** 再次充值 500 元（≥阈值）
- **THEN** 系统不发放一次性佣金

---

### Requirement: 累计充值触发佣金

系统 SHALL 支持"累计充值"触发条件：当卡/设备在该套餐系列下的累计充值金额 ≥ 配置阈值时触发一次性佣金。

**变更说明**：累计范围改为按"套餐系列"累计，而非全局累计。只有充值操作累计，直接购买套餐不累计。

#### Scenario: 累计达到阈值
- **WHEN** IoT卡在该系列下之前累计充值 200 元
- **AND** 本次充值 150 元
- **AND** 配置阈值 300 元
- **THEN** 系统更新该系列的累计充值为 350 元
- **AND** 累计 350 元 ≥ 300 元，系统按链式分配规则发放一次性佣金
- **AND** 标记该卡在该系列下已触发累计充值返佣

#### Scenario: 累计未达到阈值
- **WHEN** IoT卡在该系列下累计充值为 100 元
- **AND** 本次充值 100 元
- **AND** 配置阈值 300 元
- **THEN** 系统更新累计充值为 200 元
- **AND** 累计 200 元 < 300 元，系统不发放一次性佣金

#### Scenario: 直接购买不累计
- **WHEN** IoT卡直接购买套餐（不经过充值）
- **THEN** 该系列的累计充值金额不变

---

### Requirement: 一次性佣金只发放一次

每张卡/设备在每个套餐系列下，一次性佣金 SHALL 只发放一次，无论是首充还是累计充值触发。通过按系列追踪的状态字段控制。

**变更说明**：首充状态和累计充值触发状态改为按套餐系列追踪，不同系列互不影响。

#### Scenario: 首次触发
- **WHEN** 首次满足触发条件（首充或累计充值）
- **THEN** 按链式分配规则发放佣金
- **AND** 设置该系列的触发状态为 true

#### Scenario: 再次满足条件
- **WHEN** 再次满足触发条件
- **AND** 该系列的触发状态已为 true
- **THEN** 不发放佣金

#### Scenario: 不同系列独立
- **WHEN** IoT卡在系列1已触发一次性佣金
- **AND** IoT卡首次满足系列2的触发条件
- **THEN** 系统发放系列2的一次性佣金（如果规则启用）

---

### Requirement: 一次性佣金发放对象

一次性佣金 SHALL 按链式分配规则发放给代理链上的所有相关店铺。

**变更说明**：从"发放给直接归属店铺"改为"链式分配给代理链上所有店铺"。

#### Scenario: 链式发放
- **WHEN** IoT卡归属代理A1
- **AND** 代理链为 平台 → A → A1
- **AND** 触发一次性佣金（系列规则返20元）
- **AND** A能拿到20元，给A1设置10元
- **THEN** A1获得10元
- **AND** A获得20-10=10元

## RENAMED Requirements

### Requirement: single_recharge 触发类型
- **FROM**: `single_recharge`（单次充值）
- **TO**: `first_recharge`（首充）
