160 lines
4.7 KiB
Markdown
160 lines
4.7 KiB
Markdown
# Package Management Specification
|
||
|
||
## ADDED Requirements
|
||
|
||
### Requirement: 套餐列表查询
|
||
|
||
系统 SHALL 提供套餐列表查询功能,支持分页和多条件筛选。
|
||
|
||
#### Scenario: 查询所有套餐
|
||
|
||
- **WHEN** 用户访问套餐管理页面
|
||
- **THEN** 系统显示套餐列表,包含套餐编码、套餐名称、系列ID、套餐类型、流量、价格、状态、上架状态等
|
||
- **AND** 支持按套餐名称模糊搜索
|
||
- **AND** 支持按系列ID筛选
|
||
- **AND** 支持按状态筛选(启用/禁用)
|
||
- **AND** 支持按上架状态筛选(上架/下架)
|
||
- **AND** 支持按套餐类型筛选(formal/addon)
|
||
- **AND** 支持分页,每页最多100条记录
|
||
|
||
#### Scenario: 多条件组合查询
|
||
|
||
- **WHEN** 用户同时使用多个筛选条件
|
||
- **THEN** 系统返回满足所有条件的套餐列表
|
||
|
||
### Requirement: 创建套餐
|
||
|
||
系统 SHALL 允许管理员创建新的套餐。
|
||
|
||
#### Scenario: 成功创建套餐
|
||
|
||
- **WHEN** 用户填写必填字段(套餐编码、套餐名称、套餐类型、套餐时长、套餐价格)
|
||
- **AND** 可选填写系列ID、流量信息、成本价、建议售价等
|
||
- **AND** 提交表单
|
||
- **THEN** 系统创建套餐,默认状态为启用,默认上架状态为下架
|
||
- **AND** 返回创建的套餐详情
|
||
|
||
#### Scenario: 套餐编码唯一性验证
|
||
|
||
- **WHEN** 用户使用已存在的套餐编码创建套餐
|
||
- **THEN** 系统返回错误提示"套餐编码已存在"
|
||
|
||
#### Scenario: 验证套餐时长范围
|
||
|
||
- **WHEN** 套餐时长小于1个月或大于120个月
|
||
- **THEN** 系统返回验证错误"套餐时长必须在1-120个月之间"
|
||
|
||
#### Scenario: 流量类型与流量额度关系
|
||
|
||
- **WHEN** 流量类型为真流量(real)
|
||
- **THEN** 真流量额度(real_data_mb)必须大于0
|
||
- **AND** 总流量额度(data_amount_mb)等于真流量额度
|
||
|
||
- **WHEN** 流量类型为虚流量(virtual)
|
||
- **THEN** 虚流量额度(virtual_data_mb)必须大于0
|
||
- **AND** 真流量额度和虚流量额度之和等于总流量额度
|
||
|
||
### Requirement: 查看套餐详情
|
||
|
||
系统 SHALL 允许用户查看单个套餐的详细信息。
|
||
|
||
#### Scenario: 查询存在的套餐
|
||
|
||
- **WHEN** 用户通过套餐ID查询详情
|
||
- **THEN** 系统返回该套餐的完整信息,包括所有字段
|
||
|
||
#### Scenario: 查询不存在的套餐
|
||
|
||
- **WHEN** 用户查询不存在的套餐ID
|
||
- **THEN** 系统返回404错误
|
||
|
||
### Requirement: 更新套餐
|
||
|
||
系统 SHALL 允许管理员更新套餐信息。
|
||
|
||
#### Scenario: 成功更新套餐
|
||
|
||
- **WHEN** 用户修改套餐的可变字段(名称、时长、价格、流量等)
|
||
- **AND** 提交更新
|
||
- **THEN** 系统更新套餐信息
|
||
- **AND** 返回更新后的套餐详情
|
||
|
||
#### Scenario: 套餐编码不可修改
|
||
|
||
- **WHEN** 用户尝试修改套餐编码
|
||
- **THEN** 系统忽略该字段,不允许修改
|
||
|
||
### Requirement: 删除套餐
|
||
|
||
系统 SHALL 允许管理员删除套餐。
|
||
|
||
#### Scenario: 成功删除套餐
|
||
|
||
- **WHEN** 用户删除未被使用的套餐
|
||
- **THEN** 系统删除该套餐
|
||
- **AND** 返回成功状态
|
||
|
||
#### Scenario: 删除被分配的套餐
|
||
|
||
- **WHEN** 用户删除已被分配给代理商的套餐
|
||
- **THEN** 系统返回错误提示"该套餐已被分配,无法删除"
|
||
|
||
### Requirement: 套餐状态管理
|
||
|
||
系统 SHALL 支持套餐启用/禁用状态管理。
|
||
|
||
#### Scenario: 启用套餐
|
||
|
||
- **WHEN** 用户将禁用状态的套餐切换为启用
|
||
- **THEN** 系统更新状态为启用(status=1)
|
||
|
||
#### Scenario: 禁用套餐
|
||
|
||
- **WHEN** 用户将启用状态的套餐切换为禁用
|
||
- **THEN** 系统更新状态为禁用(status=2)
|
||
- **AND** 该套餐将不可用于新的分配或充值
|
||
|
||
### Requirement: 套餐上架状态管理
|
||
|
||
系统 SHALL 支持套餐上架/下架状态管理。
|
||
|
||
#### Scenario: 上架套餐
|
||
|
||
- **WHEN** 用户将下架状态的套餐切换为上架
|
||
- **THEN** 系统更新上架状态为上架(shelf_status=1)
|
||
- **AND** 该套餐将对代理商可见
|
||
|
||
#### Scenario: 下架套餐
|
||
|
||
- **WHEN** 用户将上架状态的套餐切换为下架
|
||
- **THEN** 系统更新上架状态为下架(shelf_status=2)
|
||
- **AND** 该套餐将对代理商不可见
|
||
|
||
### Requirement: 套餐类型支持
|
||
|
||
系统 SHALL 支持两种套餐类型。
|
||
|
||
#### Scenario: 正式套餐
|
||
|
||
- **WHEN** 创建套餐类型为 formal 的套餐
|
||
- **THEN** 系统记录为正式套餐
|
||
|
||
#### Scenario: 附加套餐
|
||
|
||
- **WHEN** 创建套餐类型为 addon 的套餐
|
||
- **THEN** 系统记录为附加套餐
|
||
|
||
### Requirement: 权限控制
|
||
|
||
系统 SHALL 对套餐管理功能实施权限控制。
|
||
|
||
#### Scenario: 未认证用户访问
|
||
|
||
- **WHEN** 未登录用户访问套餐管理接口
|
||
- **THEN** 系统返回401未认证错误
|
||
|
||
#### Scenario: 无权限用户访问
|
||
|
||
- **WHEN** 已登录但无权限的用户访问套餐管理接口
|
||
- **THEN** 系统返回403无权访问错误
|