## ADDED Requirements

### Requirement: 代理为下级店铺批量分配套餐系列

系统 SHALL 允许代理通过指定套餐系列，批量为下级店铺分配该系列下的所有套餐。分配时 MUST 支持可选的批量加价配置（固定金额或百分比）和返佣配置（固定金额或百分比）。

#### Scenario: 成功批量分配套餐系列
- **WHEN** 代理为直属下级店铺分配套餐系列A，系列包含10个套餐
- **THEN** 系统创建1条系列分配记录和10条套餐分配记录

#### Scenario: 批量分配时应用百分比加价
- **WHEN** 代理分配时设置百分比加价10%，上级成本价为100元的套餐
- **THEN** 下级的成本价为110元（100 × 1.1）

#### Scenario: 批量分配时应用固定金额加价
- **WHEN** 代理分配时设置固定金额加价1000分（10元），上级成本价为100元的套餐
- **THEN** 下级的成本价为110元（100 + 10）

#### Scenario: 批量分配时不加价
- **WHEN** 代理分配时不提供加价配置，上级成本价为100元的套餐
- **THEN** 下级的成本价为100元（与上级相同）

#### Scenario: 尝试分配未拥有的系列
- **WHEN** 代理尝试分配自己未被分配的套餐系列
- **THEN** 系统返回错误 "您没有该套餐系列的分配权限"

#### Scenario: 尝试分配给非直属下级
- **WHEN** 代理尝试分配给非直属下级店铺
- **THEN** 系统返回错误 "只能为直属下级分配套餐"

#### Scenario: 重复分配同一系列
- **WHEN** 代理尝试为同一下级店铺重复分配同一套餐系列
- **THEN** 系统返回错误 "该店铺已分配此套餐系列"

---

### Requirement: 配置基础返佣（固定金额或百分比）

批量分配时 MUST 配置基础返佣，支持固定金额和百分比两种模式。基础返佣作为梯度返佣的起始值，未达标时使用基础返佣，达标后使用梯度返佣。

#### Scenario: 配置固定金额返佣
- **WHEN** 代理设置基础返佣为固定金额2000分（20元）
- **THEN** 下级客户充值100元时，返佣20元（固定）

#### Scenario: 配置百分比返佣
- **WHEN** 代理设置基础返佣为百分比200（20%）
- **THEN** 下级客户充值100元时，返佣20元（100 × 20%）

#### Scenario: 配置百分比返佣（不同充值金额）
- **WHEN** 代理设置基础返佣为百分比200（20%）
- **THEN** 下级客户充值200元时，返佣40元（200 × 20%）

---

### Requirement: 配置梯度返佣

批量分配时 MAY 配置梯度返佣。梯度返佣 MUST 包含统计周期（月度/季度/年度）、梯度类型（销量/销售额）、阈值和达标后的返佣配置（固定金额或百分比）。一个系列分配 MAY 配置多个梯度档位。

#### Scenario: 配置月度销量梯度返佣
- **WHEN** 代理配置月度销量梯度：销量达100件，返佣提升到30%
- **THEN** 下级店铺月销量达到100件后，后续充值按30%返佣

#### Scenario: 配置多个梯度档位
- **WHEN** 代理配置3个梯度档位：100件30%，200件40%，500件50%
- **THEN** 系统创建3条梯度配置记录

#### Scenario: 配置季度销售额梯度返佣
- **WHEN** 代理配置季度销售额梯度：销售额达100000分（1000元），返佣提升到固定3000分（30元）
- **THEN** 下级店铺季度销售额达到1000元后，后续充值返佣固定30元

#### Scenario: 不配置梯度返佣
- **WHEN** 代理分配时设置 enable_tier_commission = false
- **THEN** 系统不创建梯度配置，所有充值按基础返佣计算

---

### Requirement: 批量分配使用事务保证原子性

批量分配操作 MUST 在单个数据库事务中完成，确保要么全部成功，要么全部失败。

#### Scenario: 部分套餐分配失败时回滚
- **WHEN** 批量分配100个套餐时，第50个套餐因唯一约束冲突失败
- **THEN** 系统回滚所有已创建的分配记录，返回错误信息

#### Scenario: 成功分配后提交事务
- **WHEN** 批量分配100个套餐全部成功
- **THEN** 系统提交事务，所有分配记录持久化

---

### Requirement: 批量分配使用 CreateInBatches 优化性能

批量创建套餐分配记录时 MUST 使用 GORM 的 CreateInBatches 方法，每批不超过500条，避免单次插入过多数据。

#### Scenario: 分配1000个套餐时分批插入
- **WHEN** 批量分配1000个套餐
- **THEN** 系统分为2批插入（500 + 500）

#### Scenario: 分配200个套餐时单批插入
- **WHEN** 批量分配200个套餐
- **THEN** 系统使用单批插入
