## MODIFIED Requirements

### Requirement: 获取购买价格

系统 MUST 根据买家身份返回正确的购买价格，并且 MUST 使用生效售价，不得直接把未配置的建议零售价当成交价返回。个人客户、平台自营和自动购包路径 SHALL 以套餐生效售价为准；代理为店铺购买时 SHALL 以分配记录上的生效售价为准。

#### Scenario: 个人客户购买
- **WHEN** 个人客户购买一个普通可售套餐，且建议零售价未配置
- **THEN** 系统 SHALL 返回回退后的生效售价，金额等于成本价

#### Scenario: 代理为店铺购买
- **WHEN** 代理为自己店铺购买套餐
- **THEN** 系统 SHALL 返回该分配记录对应的生效售价

---

### Requirement: validatePackages() 价格累加与展示校验

系统 MUST 在 `validatePackages()` 中按渠道来源使用一致的生效售价进行累加计算，并在代理渠道保持价格展示可见性校验。未配置建议零售价时，累计金额 MUST 使用回退后的生效售价，而不是原始空值。

#### Scenario: 代理渠道累加使用生效售价
- **WHEN** `validatePackages()` 处理代理渠道的多套餐下单
- **THEN** 总价累加 MUST 基于各套餐的生效售价

#### Scenario: 平台渠道累加使用生效售价
- **WHEN** `validatePackages()` 处理平台渠道的多套餐下单
- **THEN** 总价累加 MUST 基于各套餐的生效售价

#### Scenario: 未配置价格不再触发错误展示
- **WHEN** 某个普通可售套餐的建议零售价未配置
- **THEN** 系统 SHALL 使用回退后的生效售价继续校验
- **THEN** 系统 MUST NOT 因原始建议零售价为空而把该套餐当成异常价格直接拦截

---

### Requirement: 赠送套餐禁止进入自购下单

系统 SHALL 拒绝任何用户通过自购路径购买赠送套餐。赠送加油包只能通过后台发放进入资产，不能通过 C 端或后台自助下单购买。

赠送场景 SHALL 仅允许使用显式配置的建议零售价 0，但该 0 价仅表示赠送语义，不能作为普通可售套餐的正常销售路径。

#### Scenario: C 端自购赠送套餐被拦截
- **WHEN** 个人客户尝试购买一个启用赠送语义的套餐
- **THEN** 系统返回不可购买错误，订单不创建

#### Scenario: 后台自助下单赠送套餐被拦截
- **WHEN** 后台操作者尝试通过普通购买接口创建赠送套餐订单
- **THEN** 系统 MUST 拒绝该订单
