Files
junhong_cmp_fiber/openspec/changes/reliable-order-commission-dispatch/proposal.md
break 7e7f1cbb67
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 53s
更新
2026-08-13 16:09:38 +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
资产钱包订单已支付并激活套餐后,佣金计算目前直接提交 Asynq退款审批后佣金回扣和资产处理则以裸 goroutine 执行。两类短暂异步故障都会遗留错误资金事实,且没有可追踪、可补偿的持久化事实。测试环境已出现已退款订单佣金未回扣,需将这些关键副作用纳入可靠投递链路。
## What Changes
- 在订单支付成功事务内写入唯一的佣金计算 Outbox 事件。
- Relay 将事件可靠投递到 `commission:calculate` 队列,并记录投递状态、重试与错误摘要。
- 为历史和异常遗留的“待计算”已支付订单提供幂等补偿扫描与可观察结果。
- 保持既有佣金计算、佣金记录和订单结果语义;重复投递或补偿不得重复发放佣金。
- 在退款审批事务内写入佣金回扣和资产后处理事件,替换裸 goroutine。
- 为已退款但佣金未回扣或资产未完成处理的退款单提供幂等补偿扫描。
## Capabilities
### New Capabilities
- `order-commission-delivery`: 已支付订单佣金计算的可靠投递、状态可见与幂等补偿。
### Modified Capabilities
- `agent-funds-commission`: 佣金计算和退款佣金回扣从尽力而为异步提交变更为可恢复的可靠副作用。
## Impact
- `internal/service/order``internal/service/refund`、佣金/退款任务、Outbox Relay/事件注册、Worker 启动补偿与审计。
- 新增数据库事件类型/可能的调度入口;不新增外部 API 和依赖。