rwadurian/backend/services/referral-service
hailin 5adcd023e6 fix(pricing): 修复 priceSupplement 在 Kafka 事件链中丢失的问题
## 问题描述

认种树动态定价涨价功能 (ed6b48562) 在 planting-service 的资金分配
中正确计算了 HQ_PRICE_SUPPLEMENT,但 priceSupplement 字段未随
Kafka 事件传递到 reward-service,导致 reward-service 的
calculateHqPriceSupplement 永远收到 priceSupplement=0,涨价部分
的总部奖励分配不会执行。

## 事件链路径 (修复前 → 修复后)

  planting-service (contract-signing.service.ts)
    ↓ contract.signed / contract.expired
    ↓ 修复前: 不含 priceSupplement 
    ↓ 修复后: 携带 order.priceSupplement 
  referral-service (contract-signing.handler.ts)
    ↓ planting.order.paid / planting.order.expired
    ↓ 修复前: 不含 priceSupplement 
    ↓ 修复后: 透传 eventData.priceSupplement || 0 
  reward-service (event-consumer.controller.ts)
    ↓ calculateHqPriceSupplement(priceSupplement)
    ↓ 修复前: 始终为 0,不分配 
    ↓ 修复后: 收到实际值,正确分配给 S0000000001 

## 修改文件

1. planting-service/src/infrastructure/kafka/event-publisher.service.ts
   - ContractSigningEventData 接口新增 priceSupplement?: number 字段

2. planting-service/src/application/services/contract-signing.service.ts
   - signContract(): publishContractSigned 时传递 order.priceSupplement
   - handleExpiredTasks(): publishContractExpired 时传递 order.priceSupplement

3. referral-service/src/application/event-handlers/contract-signing.handler.ts
   - ContractSigningEvent 接口新增 priceSupplement?: number 字段
   - publishOrderPaidEvent(): 透传 priceSupplement 到 planting.order.paid
   - publishOrderExpiredEvent(): 透传 priceSupplement 到 planting.order.expired

## 向后兼容

- priceSupplement 为可选字段 (?: number),默认 fallback 为 0
- 已存在的订单 priceSupplement=0,不影响现有分配逻辑
- reward-service event-consumer 已有 || 0 fallback 保护

## 验证方法

1. 设置 supplement > 0 后创建认种订单
2. 签署合同后检查 reward-service 日志是否有 HQ_PRICE_SUPPLEMENT 分配记录
3. 检查总部账户 S0000000001 是否收到 priceSupplement * treeCount 的入账

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 07:13:01 -08:00
..
prisma feat(pre-planting): 3171 预种计划 1.0 全量实现(纯新增,零侵入) 2026-02-18 05:06:03 -08:00
scripts refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
src fix(pricing): 修复 priceSupplement 在 Kafka 事件链中丢失的问题 2026-02-26 07:13:01 -08:00
test fix(authorization): 修复团队升级竞态条件,改用事件链模式 2025-12-24 00:13:39 -08:00
.dockerignore refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
.env.development refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
.env.example refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
.eslintrc.js refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
.gitignore chore: 添加 tsbuildinfo 到 .gitignore 2025-12-21 04:34:26 -08:00
.prettierrc refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
DEVELOPMENT_GUIDE.md refactor: 多项UI优化和品牌更名 2025-12-15 01:43:47 -08:00
Dockerfile fix: 添加 -m 参数创建用户home目录 2025-12-21 18:01:19 -08:00
Dockerfile.test refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
Makefile refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
deploy.sh fix: convert deploy.sh CRLF to LF and add executable permission 2025-12-07 07:01:13 -08:00
docker-compose.test.yml refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
nest-cli.json refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00
package-lock.json Revert "fix(mpc-service): don't block startup on Kafka consumer rebalance" 2025-12-09 03:26:05 -08:00
package.json feat: 添加 GENESIS 系统种子用户用于初始推荐码 2025-12-21 04:09:39 -08:00
tsconfig.build.json fix: 修复 referral-service 编译配置以支持 prisma seed.ts 2025-12-21 04:30:35 -08:00
tsconfig.json refactor(mpc-system): migrate to party-driven architecture with PartyID-based routing 2025-12-05 08:11:28 -08:00