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