# 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无权访问错误