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

70 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 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 的钱包