Files
luo dd6bceeeb7
Some checks failed
构建并部署前端到测试环境 / build-and-deploy (push) Has been cancelled
feat: 系统配置
2026-07-25 14:13:49 +08:00

62 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## MODIFIED Requirements
### Requirement: 创建代理系列授权时提交初始套餐
系统 SHALL 在创建代理系列授权时要求提交 `packages`,且 `packages` 必须包含 1100 个套餐项;套餐 ID 不得重复。创建成功响应 SHALL 保持完整授权详情结构不变。
#### Scenario: 创建授权并提交有效初始套餐
- **WHEN** 用户提交 `shop_id``series_id` 和包含 1100 个不重复套餐项的 `packages`
- **THEN** 前端提交 `POST /api/admin/shop-series-grants`
- **AND** 每个套餐项携带必要的 `package_id`,新增或调价时携带 `cost_price`
- **AND** 页面按接口返回的完整授权详情刷新授权信息
#### Scenario: 创建授权未选择套餐
- **WHEN** 用户未选择任何初始套餐
- **THEN** 前端阻止提交并提示至少选择 1 个套餐
#### Scenario: 创建授权超过套餐数量上限或包含重复套餐
- **WHEN** 用户选择超过 100 个套餐或同一 `package_id` 重复出现
- **THEN** 前端阻止提交并提示套餐数量或重复项错误
### Requirement: 合并套餐候选与授权状态
系统 SHALL 在套餐列表和授权详情相关页面以 `package_id` 为唯一键合并套餐候选数据与授权详情中的 `packages[]`。已授权套餐即使不在当前候选搜索结果中,也 SHALL 保留并标记为已授权。
#### Scenario: 候选套餐与已授权套餐合并
- **WHEN** 套餐候选列表和授权详情均加载成功
- **THEN** 页面按 `package_id` 合并两者
- **AND** 详情中的套餐显示为已授权并保留其成本价、生效条件和状态字段
- **AND** 仅出现在候选列表中的套餐显示为未授权候选
#### Scenario: 候选搜索结果不包含已授权套餐
- **WHEN** 当前候选搜索结果缺少某个已授权套餐
- **THEN** 页面仍从授权详情保留该套餐
- **AND** 不将其误判为未授权或从当前编辑状态中删除
### Requirement: 后续套餐管理使用批量操作删除
系统 SHALL 使用 `PUT /api/admin/shop-series-grants/{id}/packages` 管理既有授权套餐。新增和调价提交套餐项,删除套餐授权 SHALL 提交对应套餐项的 `remove: true`;操作成功后 SHALL 按接口返回的完整授权详情刷新页面。
#### Scenario: 新增或调整授权套餐
- **WHEN** 用户在已有授权中新增套餐或调整成本价
- **THEN** 前端提交 `packages[]` 中对应的套餐项及成本价
- **AND** 不调用独立删除接口
#### Scenario: 删除授权套餐
- **WHEN** 用户删除已有授权套餐
- **THEN** 前端提交 `{ package_id, remove: true }`
- **AND** 页面使用接口返回的完整授权详情刷新套餐列表
#### Scenario: 套餐管理响应结构保持不变
- **WHEN** 套餐批量管理接口成功
- **THEN** 前端按详情响应读取授权基本信息、佣金配置、强充配置、`packages[]`、状态和时间字段
- **AND** 不要求后端返回新的响应包装结构