# 累计充值追踪

## ADDED Requirements

### Requirement: 按卡/设备按系列累计

系统 SHALL 按照卡/设备在每个套餐系列下独立追踪累计充值金额。不同系列的累计互不影响。

#### Scenario: 同一卡在不同系列的累计
- **WHEN** IoT卡 A 在系列1下充值 100 元
- **AND** IoT卡 A 在系列2下充值 50 元
- **THEN** 系列1的累计金额 SHALL 为 100 元
- **AND** 系列2的累计金额 SHALL 为 50 元

#### Scenario: 同一卡在同一系列的累计
- **WHEN** IoT卡 A 在系列1下第一次充值 100 元
- **AND** IoT卡 A 在系列1下第二次充值 50 元
- **THEN** 系列1的累计金额 SHALL 为 150 元

### Requirement: 只有充值操作累计

系统 SHALL 只累计"充值到钱包"的操作，直接购买套餐（不经过钱包）SHALL NOT 累计。

#### Scenario: 直接充值累计
- **WHEN** 客户选择充值 100 元到钱包
- **AND** 支付成功
- **THEN** 累计金额 SHALL 增加 100 元

#### Scenario: 直接购买不累计
- **WHEN** 客户直接购买 100 元套餐（余额足够）
- **AND** 系统从钱包扣款
- **THEN** 累计金额 SHALL 保持不变

#### Scenario: 强充购买累计
- **WHEN** 客户通过强充购买套餐
- **AND** 强充金额为 200 元
- **AND** 套餐价格为 100 元
- **THEN** 累计金额 SHALL 增加 200 元（充值部分）
- **AND** 钱包余额增加 200 后扣除 100

### Requirement: 首充状态按系列追踪

系统 SHALL 按照卡/设备在每个套餐系列下独立追踪首充状态。一个系列触发首充后，其他系列的首充状态不受影响。

#### Scenario: 首次在系列下充值
- **WHEN** IoT卡 A 从未在系列1下充值过
- **AND** IoT卡 A 进行充值操作
- **THEN** 系统 SHALL 标记该卡在系列1下的首充状态为"已触发"

#### Scenario: 非首次在系列下充值
- **WHEN** IoT卡 A 已在系列1下触发过首充
- **AND** IoT卡 A 再次充值
- **THEN** 系统 SHALL 不触发首充返佣
- **AND** 首充状态保持"已触发"

#### Scenario: 不同系列首充独立
- **WHEN** IoT卡 A 已在系列1下触发过首充
- **AND** IoT卡 A 首次在系列2下充值
- **THEN** 系统 SHALL 触发系列2的首充返佣（如果规则启用）

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

每张卡/设备在每个套餐系列下，一次性佣金（无论首充还是累计充值）SHALL 只触发一次。触发后不再重复触发。

#### Scenario: 累计充值达标后不再触发
- **WHEN** 系列规则为累计充值 200 返 40
- **AND** IoT卡 A 累计充值达到 200 元
- **AND** 系统触发一次性佣金 40 元
- **AND** IoT卡 A 继续充值 100 元（累计 300 元）
- **THEN** 系统 SHALL 不再触发一次性佣金
