fetch(add): 订单管理-企业设备
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 3m30s
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 3m30s
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
# Shop Package Allocation (单套餐分配) Specification
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: 单套餐分配列表查询
|
||||
|
||||
系统 SHALL 提供单套餐分配记录的查询功能。
|
||||
|
||||
#### Scenario: 查询所有单套餐分配
|
||||
|
||||
- **WHEN** 管理员访问单套餐分配管理页面
|
||||
- **THEN** 系统显示单套餐分配列表
|
||||
- **AND** 每条记录包含:分配ID、套餐ID、套餐编码、套餐名称
|
||||
- **AND** 显示被分配的店铺ID和店铺名称
|
||||
- **AND** 显示覆盖的成本价(cost_price,单位:分)
|
||||
- **AND** 显示原计算成本价(calculated_cost_price,供参考)
|
||||
- **AND** 显示关联的系列分配ID
|
||||
- **AND** 显示状态、创建时间、更新时间
|
||||
- **AND** 支持分页,每页最多100条记录
|
||||
|
||||
#### Scenario: 按店铺筛选
|
||||
|
||||
- **WHEN** 管理员选择特定店铺ID筛选
|
||||
- **THEN** 系统返回该店铺的所有单套餐分配记录
|
||||
|
||||
#### Scenario: 按套餐筛选
|
||||
|
||||
- **WHEN** 管理员选择特定套餐ID筛选
|
||||
- **THEN** 系统返回该套餐的所有分配记录
|
||||
|
||||
#### Scenario: 按状态筛选
|
||||
|
||||
- **WHEN** 管理员选择状态(启用/禁用)筛选
|
||||
- **THEN** 系统返回符合状态条件的分配记录
|
||||
|
||||
### Requirement: 创建单套餐分配
|
||||
|
||||
系统 SHALL 允许管理员为店铺分配特定套餐并设置成本价。
|
||||
|
||||
#### Scenario: 成功创建单套餐分配
|
||||
|
||||
- **WHEN** 管理员选择套餐ID、店铺ID
|
||||
- **AND** 设置覆盖的成本价(必填,最小值为0)
|
||||
- **AND** 提交分配
|
||||
- **THEN** 系统创建单套餐分配记录
|
||||
- **AND** 计算并保存原计算成本价(基于系列分配规则)
|
||||
- **AND** 返回创建的分配详情,包括关联的系列分配ID
|
||||
|
||||
#### Scenario: 重复分配检查
|
||||
|
||||
- **WHEN** 管理员为同一店铺分配已分配过的套餐
|
||||
- **THEN** 系统返回错误提示"该套餐已分配给此店铺"
|
||||
|
||||
#### Scenario: 店铺和套餐验证
|
||||
|
||||
- **WHEN** 管理员使用不存在的店铺ID或套餐ID
|
||||
- **THEN** 系统返回错误提示"店铺或套餐不存在"
|
||||
|
||||
### Requirement: 查看单套餐分配详情
|
||||
|
||||
系统 SHALL 允许管理员查看单个分配记录的详细信息。
|
||||
|
||||
#### Scenario: 查询存在的分配记录
|
||||
|
||||
- **WHEN** 管理员通过分配ID查询详情
|
||||
- **THEN** 系统返回该分配记录的完整信息
|
||||
- **AND** 包含套餐完整信息、店铺信息、定价信息
|
||||
|
||||
#### Scenario: 查询不存在的分配记录
|
||||
|
||||
- **WHEN** 管理员查询不存在的分配ID
|
||||
- **THEN** 系统返回404错误
|
||||
|
||||
### Requirement: 更新单套餐分配
|
||||
|
||||
系统 SHALL 允许管理员更新单套餐分配的成本价。
|
||||
|
||||
#### Scenario: 成功更新成本价
|
||||
|
||||
- **WHEN** 管理员修改覆盖的成本价
|
||||
- **AND** 提交更新
|
||||
- **THEN** 系统更新成本价
|
||||
- **AND** 返回更新后的分配详情
|
||||
|
||||
#### Scenario: 成本价验证
|
||||
|
||||
- **WHEN** 管理员设置成本价小于0
|
||||
- **THEN** 系统返回验证错误"成本价必须大于等于0"
|
||||
|
||||
### Requirement: 删除单套餐分配
|
||||
|
||||
系统 SHALL 允许管理员删除单套餐分配记录。
|
||||
|
||||
#### Scenario: 成功删除分配
|
||||
|
||||
- **WHEN** 管理员删除单套餐分配记录
|
||||
- **THEN** 系统删除该分配记录
|
||||
- **AND** 该店铺将无法再以此定价售卖该套餐
|
||||
- **AND** 返回成功状态
|
||||
|
||||
#### Scenario: 删除正在使用的分配
|
||||
|
||||
- **WHEN** 管理员删除正在被订单使用的分配记录
|
||||
- **THEN** 系统可能返回警告或阻止删除(根据业务规则)
|
||||
|
||||
### Requirement: 单套餐分配状态管理
|
||||
|
||||
系统 SHALL 支持单套餐分配的启用/禁用状态管理。
|
||||
|
||||
#### Scenario: 启用分配
|
||||
|
||||
- **WHEN** 管理员将禁用状态的分配切换为启用
|
||||
- **THEN** 系统更新状态为启用(status=1)
|
||||
- **AND** 该店铺可以使用此定价售卖套餐
|
||||
|
||||
#### Scenario: 禁用分配
|
||||
|
||||
- **WHEN** 管理员将启用状态的分配切换为禁用
|
||||
- **THEN** 系统更新状态为禁用(status=2)
|
||||
- **AND** 该店铺将无法使用此定价售卖套餐
|
||||
|
||||
### Requirement: 成本价优先级规则
|
||||
|
||||
系统 SHALL 实现单套餐分配成本价覆盖系列分配规则。
|
||||
|
||||
#### Scenario: 单套餐分配优先
|
||||
|
||||
- **WHEN** 店铺同时拥有系列分配和单套餐分配
|
||||
- **THEN** 系统使用单套餐分配的成本价
|
||||
- **AND** 原计算成本价(calculated_cost_price)保存系列分配规则计算的价格,供参考
|
||||
|
||||
#### Scenario: 仅系列分配
|
||||
|
||||
- **WHEN** 店铺只有系列分配,没有单套餐分配
|
||||
- **THEN** 系统使用系列分配规则计算成本价
|
||||
|
||||
### Requirement: 关联系列分配追踪
|
||||
|
||||
系统 SHALL 追踪单套餐分配与系列分配的关联关系。
|
||||
|
||||
#### Scenario: 记录关联的系列分配
|
||||
|
||||
- **WHEN** 创建单套餐分配时
|
||||
- **THEN** 系统记录关联的系列分配ID(allocation_id)
|
||||
- **AND** 用于追溯定价来源
|
||||
|
||||
### Requirement: 权限控制
|
||||
|
||||
系统 SHALL 对单套餐分配管理功能实施权限控制。
|
||||
|
||||
#### Scenario: 未认证用户访问
|
||||
|
||||
- **WHEN** 未登录用户访问单套餐分配接口
|
||||
- **THEN** 系统返回401未认证错误
|
||||
|
||||
#### Scenario: 无权限用户访问
|
||||
|
||||
- **WHEN** 已登录但无权限的用户访问单套餐分配接口
|
||||
- **THEN** 系统返回403无权访问错误
|
||||
|
||||
#### Scenario: 仅管理员可操作
|
||||
|
||||
- **WHEN** 非管理员用户尝试创建、更新或删除单套餐分配
|
||||
- **THEN** 系统返回403无权访问错误
|
||||
Reference in New Issue
Block a user