Files
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

26 lines
1.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.
# 佣金计算链路修复:支付后自动入队 + 订单佣金字段快照
## Why
你确认的目标:**订单支付成功后自动触发佣金计算(异步任务)**,且佣金计算所需的关键字段应当来源于“购买校验结果”。
当前实现存在以下风险:
- 佣金计算依赖订单字段(如 `series_id/seller_shop_id/seller_cost_price`),但订单创建时未填充,可能导致计算错误或空指针风险。
- 佣金计算任务已定义,但缺少稳定触发入口,导致支付后佣金不计算或需要人工补偿。
## What Changes
- **订单创建时写入佣金快照字段**基于购买校验结果allocation/series填充订单的 `SeriesID/SellerShopID/SellerCostPrice` 等字段,确保后续计算稳定。
- **支付成功后自动入队佣金计算任务**在订单从待支付变为已支付的“首次成功支付”场景enqueue `commission:calculate` 异步任务,执行佣金计算。
- **计算事务一致性(可选但推荐)**:调整佣金计算服务的事务使用方式,确保“佣金记录 + 钱包入账 + 订单佣金状态更新”具备一致性。
- **补充测试**:新增/完善测试,避免回归。
## Impact
涉及模块(预期):
- 订单创建:`internal/service/order/service.go`
- 异步任务:`internal/task/commission_calculation.go`(触发入口)与队列注入
- 佣金计算:`internal/service/commission_calculation/service.go`
- 测试:`internal/service/order/service_test.go``internal/task/*` 或集成测试