rwadurian/backend/services/contribution-service
hailin 817b7d3a9f fix(contribution): 算力分配时序保证 + bonus补发stale-read修复
4处改动确保部署清库重新同步后100%可靠:

1. contribution.scheduler.ts - CDC就绪门控
   注入CDCConsumerService,processUnprocessedAdoptions/publishRecentlyUpdatedAccounts/
   processContributionBackfill三个调度方法开头加isCdcReady()检查,
   确保用户+推荐+认种三阶段CDC同步全部完成后才开始处理。

2. contribution-calculation.service.ts - 推荐数据防护
   calculateForAdoption()中,userReferral为null时warn并return,
   不标记distributed,调度器下次重试。覆盖continuous mode下
   认种事件先于推荐事件到达的竞态场景。

3. bonus-claim.service.ts - bonus补发stale-read修复
   processBackfillForAccount()中,level事务的updateAccountUnlockStatus
   通过incrementDirectReferralAdoptedCount()同时修改unlockedLevelDepth
   和unlockedBonusTiers,导致bonus分支条件永远为false。
   修复:保存originalDirectReferralAdoptedCount和originalUnlockedBonusTiers,
   bonus分支使用原始值判断和传参。

4. config.controller.ts - mining-admin同步检查增强
   isSynced新增allAdoptionsProcessed条件(unprocessedAdoptions===0),
   确保所有认种分配+补发完成后才允许激活挖矿。
   修复data变量作用域问题(原在if块内声明,外部引用会报错)。

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 05:54:02 -08:00
..
prisma refactor(contribution): 合并所有迁移到 0001_init 2026-01-21 04:31:52 -08:00
src fix(contribution): 算力分配时序保证 + bonus补发stale-read修复 2026-01-30 05:54:02 -08:00
.env.example refactor(cdc): 统一使用 Debezium CDC 进行数据同步 2026-01-11 23:19:34 -08:00
DEVELOPMENT_GUIDE.md feat(contribution-service): 添加算力管理微服务 2026-01-10 17:39:25 -08:00
Dockerfile revert: restore original Dockerfiles 2026-01-12 10:12:16 -08:00
nest-cli.json feat(contribution-service): 添加算力管理微服务 2026-01-10 17:39:25 -08:00
package-lock.json feat(contribution-service): 添加算力管理微服务 2026-01-10 17:39:25 -08:00
package.json feat(contribution-service): 添加算力管理微服务 2026-01-10 17:39:25 -08:00
tsconfig.json feat(contribution-service): 添加算力管理微服务 2026-01-10 17:39:25 -08:00