当用户购买满5份预种后合成1棵树并签署合同时,自动执行算力切换: 1. 作废5份份额的算力记录(is_expired=true,remark 标注合成原因,已挖积分不受影响) 2. 从认种人账户扣减旧个人算力(保持账户余额准确) 3. 以1棵完整树的算力单价创建新算力记录(remark 标注来源订单) 4. 写入 pre_planting_synced_merges 幂等标记 == 实现方式 == - 触发节点:Debezium CDC on pre_planting_merges.mining_enabled_at(null → 非null) - 新增 Debezium table:public.pre_planting_merges - 新增 Kafka topic 订阅:cdc.pre-planting.public.pre_planting_merges - 新增 handler:PrePlantingMergeSyncedHandler(解析 CDC 事件) - 新增 service 方法:swapContributionForMerge(核心算力切换逻辑) - 新增常量:PRE_PLANTING_MERGE_SOURCE_ID_OFFSET = 20B(区别于份额的 10B 偏移) - 新增 DB 表:pre_planting_synced_merges(幂等标记,migration 已包含) == 幂等保证 == - CDC 层:processedCdcEvent 表(sourceTopic + offset 唯一) - 业务层:contribution_records WHERE sourceAdoptionId=20B+mergeId 存在性检查 - 标记层:pre_planting_synced_merges(best-effort,事务提交后写入) == 对现有系统的影响 == - 零修改现有 contribution 调度器 / freeze scheduler - 团队分润账户净效果≈0(旧5份=1棵树,切换后金额一致) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| debezium | ||
| accounts.json | ||
| batch-register.js | ||
| check-databases.sh | ||
| init-databases.sh | ||