Files
huang 79c061b6fa
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m24s
feat: 实现套餐管理模块,包含套餐系列、双状态管理、废弃模型清理
- 新增套餐系列管理 (CRUD + 状态切换)
- 新增套餐管理 (CRUD + 启用/禁用 + 上架/下架双状态)
- 清理 8 个废弃分佣模型及对应数据库表
- Package 模型新增建议成本价、建议售价、上架状态字段
- 完整的 Store/Service/Handler 三层实现
- 包含单元测试和集成测试
- 归档 add-package-module change
- 新增多个 OpenSpec changes (订单支付、店铺套餐分配、一次性分佣、卡设备系列绑定)
2026-01-27 19:55:47 +08:00

3.0 KiB
Raw Blame History

ADDED Requirements

Requirement: 批量设置设备的套餐系列

系统 SHALL 允许代理批量为设备设置套餐系列分配。只能设置当前店铺被分配且启用的套餐系列。

Scenario: 成功批量设置

  • WHEN 代理提交多个设备 ID 和一个有效的 series_allocation_id
  • THEN 系统更新这些设备的 series_allocation_id 字段

Scenario: 系列未分配给店铺

  • WHEN 代理尝试设置一个未分配给设备所属店铺的系列
  • THEN 系统返回错误 "该套餐系列未分配给此店铺"

Scenario: 系列分配已禁用

  • WHEN 代理尝试设置一个已禁用的系列分配
  • THEN 系统返回错误 "该套餐系列分配已禁用"

Scenario: 设备不存在

  • WHEN 提交的设备 ID 中有不存在的设备
  • THEN 系统返回错误,列出不存在的设备 ID

Scenario: 设备不属于当前店铺

  • WHEN 代理尝试设置不属于自己店铺的设备
  • THEN 系统返回错误 "部分设备不属于您的店铺"

Requirement: 清除设备的套餐系列关联

系统 SHALL 允许代理清除设备的套餐系列关联。

Scenario: 清除单设备关联

  • WHEN 代理将设备的 series_allocation_id 设为 0
  • THEN 系统清除该设备的套餐系列关联

Scenario: 批量清除关联

  • WHEN 代理批量提交设备 ID 列表series_allocation_id 为 0
  • THEN 系统清除这些设备的套餐系列关联

Requirement: 查询设备的套餐系列信息

系统 SHALL 在设备详情和列表中返回套餐系列关联信息。

Scenario: 设备详情包含系列信息

  • WHEN 查询设备详情
  • THEN 响应包含 series_allocation_id、关联的系列名称、佣金状态

Scenario: 设备列表支持按系列筛选

  • WHEN 代理按 series_allocation_id 筛选设备列表
  • THEN 系统只返回关联该系列的设备

Requirement: Device 模型新增字段

系统 MUST 在 Device 模型中新增以下字段:

  • series_allocation_id:套餐系列分配 ID
  • first_commission_paid:一次性佣金是否已发放(默认 false
  • accumulated_recharge:累计充值金额(默认 0

Scenario: 新设备默认值

  • WHEN 创建新设备
  • THEN series_allocation_id 为空first_commission_paid 为 falseaccumulated_recharge 为 0

Scenario: 字段在响应中可见

  • WHEN 查询设备信息
  • THEN 响应包含这三个新字段

Requirement: 设备级套餐购买优先级

设备购买套餐时 MUST 使用 Device.series_allocation_id 确定可购买的套餐系列,而非设备下单卡的 series_allocation_id。

Scenario: 设备有系列关联

  • WHEN 设备有 series_allocation_id且其下的卡也有各自的 series_allocation_id
  • THEN 设备级套餐购买使用设备的 series_allocation_id

Scenario: 设备无系列关联

  • WHEN 设备的 series_allocation_id 为空
  • THEN 该设备无法购买设备级套餐