Files
junhong_cmp_fiber/openspec/specs/one-time-commission-trigger/spec.md
huang e87513541b
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m41s
feat: 实现一次性佣金功能
- 新增佣金计算服务,支持一次性佣金和返佣计算
- 新增 ShopSeriesOneTimeCommissionTier 模型和存储层
- 新增两个数据库迁移:一次性佣金表和订单佣金字段
- 更新 Commission 模型,新增佣金来源和关联字段
- 更新 CommissionRecord 存储层,支持一次性佣金查询
- 更新 MyCommission 服务,集成一次性佣金计算逻辑
- 更新 ShopCommission 服务,支持一次性佣金统计
- 新增佣金计算异步任务处理器
- 更新 API 路由,新增一次性佣金相关端点
- 归档 OpenSpec 变更文档,同步规范到主规范库
2026-01-29 09:36:12 +08:00

2.5 KiB
Raw Blame History

ADDED Requirements

Requirement: 一次性充值触发佣金

系统 SHALL 支持"一次性充值"触发条件:当单笔订单金额 ≥ 配置阈值时触发一次性佣金。

Scenario: 达到一次性充值阈值

  • WHEN 订单金额 500 元,配置阈值 300 元,该卡未发放过一次性佣金
  • THEN 系统发放一次性佣金,标记卡的 first_commission_paid 为 true

Scenario: 未达到阈值

  • WHEN 订单金额 200 元,配置阈值 300 元
  • THEN 系统不发放一次性佣金

Scenario: 已发放过一次性佣金

  • WHEN 订单金额 500 元,但卡的 first_commission_paid 已为 true
  • THEN 系统不重复发放一次性佣金

Requirement: 累计充值触发佣金

系统 SHALL 支持"累计充值"触发条件:当卡/设备的累计充值金额 ≥ 配置阈值时触发一次性佣金。

Scenario: 累计达到阈值

  • WHEN 卡之前累计充值 200 元,本次充值 150 元,配置阈值 300 元
  • THEN 累计 350 元 ≥ 300 元,系统发放一次性佣金

Scenario: 累计未达到阈值

  • WHEN 卡之前累计充值 100 元,本次充值 100 元,配置阈值 300 元
  • THEN 累计 200 元 < 300 元,系统不发放一次性佣金

Requirement: 一次性佣金只发放一次

每张卡/设备的一次性佣金 SHALL 只发放一次,通过 first_commission_paid 字段控制。

Scenario: 首次触发

  • WHEN 首次满足触发条件
  • THEN 发放佣金,设置 first_commission_paid = true

Scenario: 再次满足条件

  • WHEN 再次满足触发条件但 first_commission_paid 已为 true
  • THEN 不发放佣金

Requirement: 一次性佣金配置获取

一次性佣金的触发条件和金额 SHALL 从 ShopSeriesAllocation 配置获取。

Scenario: 获取触发条件和金额

  • WHEN 触发一次性佣金检查
  • THEN 系统从卡关联的 ShopSeriesAllocation 获取 one_time_commission_trigger触发类型、one_time_commission_threshold阈值、one_time_commission_amount金额

Scenario: 无一次性佣金配置

  • WHEN 卡关联的系列分配未配置一次性佣金one_time_commission_amount = 0
  • THEN 不发放一次性佣金

Requirement: 一次性佣金发放对象

一次性佣金 SHALL 发放给卡/设备的直接归属店铺。

Scenario: 发放给归属店铺

  • WHEN 卡归属店铺 A触发一次性佣金
  • THEN 佣金入账到店铺 A 的钱包