Files
junhong_cmp_fiber/openspec/specs/order-commission-snapshot/spec.md
huang d977000a66
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m40s
feat: 归档佣金计算触发和快照变更,同步规范文档
- 归档 OpenSpec 变更到 archive 目录
- 创建 2 个新的主规范文件:commission-trigger 和 order-commission-snapshot
- 实现订单佣金快照字段和支付自动触发
- 确保事务一致性,所有佣金操作在同一事务内完成
- 提取成本价计算为公共工具函数
2026-01-29 14:58:35 +08:00

2.6 KiB
Raw Blame History

order-commission-snapshot Specification

Purpose

TBD - created by archiving change fix-commission-calculation-trigger-and-snapshot. Update Purpose after archive.

Requirements

Requirement: 订单创建时填充佣金快照字段

系统 SHALL 在订单创建时填充佣金计算所需的关键字段快照,确保后续佣金计算不受配置变更影响。

快照字段

  • series_id:套餐系列 ID
  • seller_shop_id:售卖/收益归属店铺 ID
  • seller_cost_price:卖家成本价(用于成本价差佣金计算)

字段来源:基于购买校验结果(PurchaseValidationResult

  • series_idallocation.SeriesID
  • seller_shop_idallocation.ShopID
  • seller_cost_price ← 根据 allocation 的基础返佣规则从订单金额推导

Scenario: 订单创建时写入佣金快照

  • WHEN 用户购买套餐,订单创建成功,购买校验返回 allocation 数据
  • THEN 订单表中 series_idseller_shop_idseller_cost_price 字段已正确填充
  • AND 字段值来源于购买校验结果,而非订单提交参数

Scenario: 缺少 allocation 数据时的处理

  • WHEN 订单创建时购买校验结果中缺少 allocation 数据
  • THEN 系统记录警告日志,订单佣金快照字段保持 NULL 或默认值
  • AND 订单 commission_status 标记为 pending(待计算),允许后续补偿

Scenario: 后续佣金计算使用快照字段

  • WHEN 佣金计算任务执行时读取订单数据
  • THEN 系统使用订单表中的快照字段(series_idseller_shop_idseller_cost_price
  • AND 不再实时查询套餐配置或返佣规则,避免配置变更影响历史订单

Requirement: 成本价推导方法复用

系统 SHALL 提供统一的成本价推导方法,确保订单创建和佣金计算使用相同的计算口径。

方法职责

  • 输入订单金额、allocation 数据(包含返佣规则)
  • 输出卖家成本价seller_cost_price
  • 逻辑:与"成本价差佣金"计算保持一致

Scenario: 订单创建时调用成本价推导

  • WHEN 订单创建服务填充 seller_cost_price 字段
  • THEN 系统调用统一的成本价推导方法,基于订单金额和 allocation 数据计算
  • AND 推导结果写入订单表 seller_cost_price 字段

Scenario: 佣金计算时复用相同逻辑

  • WHEN 佣金计算服务执行成本价差计算
  • THEN 系统使用订单快照中的 seller_cost_price(已在创建时推导)
  • AND 避免重复推导,确保计算口径一致