# 强充检查变更

## MODIFIED Requirements

### Requirement: 首充强充金额计算

当系列启用首充一次性佣金时，强充金额 SHALL 为 max(首充要求, 套餐售价)。

**变更说明**：明确首充强充金额的计算公式。

#### Scenario: 首充要求小于套餐价格
- **WHEN** 首充要求50元，套餐售价100元
- **THEN** 强充金额 = 100元（取套餐价格）

#### Scenario: 首充要求等于套餐价格
- **WHEN** 首充要求100元，套餐售价100元
- **THEN** 强充金额 = 100元

#### Scenario: 首充要求大于套餐价格
- **WHEN** 首充要求200元，套餐售价100元
- **THEN** 强充金额 = 200元（取首充要求）

---

### Requirement: 累计充值强充金额计算

当系列启用累计充值一次性佣金且启用强充时，系统 SHALL 支持两种强充金额计算方式：固定金额和动态差额。

**变更说明**：新增强充金额计算方式开关。

#### Scenario: 固定金额模式
- **WHEN** 强充配置 `force_calc_type = fixed`
- **AND** `force_amount = 10000`（100元）
- **THEN** 强充金额 = 100元（固定值）

#### Scenario: 动态差额模式
- **WHEN** 强充配置 `force_calc_type = dynamic`
- **AND** 累计要求200元
- **AND** 当前已累计80元
- **THEN** 强充金额 = 200 - 80 = 120元（差额）

#### Scenario: 动态差额已达标
- **WHEN** 强充配置 `force_calc_type = dynamic`
- **AND** 累计要求200元
- **AND** 当前已累计250元
- **THEN** 强充金额 = 0元（已达标，无需强充）

---

### Requirement: 强充流程

强充流程保持不变：先创建充值订单，支付成功后钱进入钱包，然后自动扣款购买套餐。

#### Scenario: 首充强充流程
- **WHEN** 客户购买套餐触发首充强充
- **AND** 强充金额200元，套餐售价100元
- **THEN** 创建充值订单200元
- **AND** 支付成功后钱包余额+200
- **AND** 标记首充状态为"已触发"
- **AND** 自动创建套餐购买订单并扣款100元
- **AND** 触发首充返佣（按链式分配）
- **AND** 钱包剩余100元

#### Scenario: 累计充值强充流程
- **WHEN** 客户购买套餐触发累计充值强充
- **AND** 强充金额120元，套餐售价100元
- **THEN** 创建充值订单120元
- **AND** 支付成功后钱包余额+120
- **AND** 累计金额 += 120
- **AND** 自动创建套餐购买订单并扣款100元
- **AND** 如果累计达标则触发返佣
- **AND** 钱包剩余20元
