Go to file
hailin 4817d92507 feat(adoption-injection): 认种自动 fUSDT 注入做市商钱包 + CDC outbox 修复
## contribution-service 改动

### 1. CDC Outbox 实时发布修复
- adoption-synced.handler: handleCreate/handleUpdate 在同步数据后立即写入
  AdoptionSynced outbox 事件,确保 mining-admin-service 实时接收认种同步
- referral-synced.handler: 同理,写入 ReferralSynced outbox 事件
- 之前只有手动调用 /admin/adoptions/publish-all 才会创建 outbox 事件

### 2. 认种 fUSDT 注入事件
- 新增 AdoptionFusdtInjectionRequestedEvent 事件类
  - 当认种状态变为 MINING_ENABLED 时触发
  - 写入 outbox,topic: contribution.adoptionfusdtinjectionrequested
  - payload 含: adoptionId, accountSequence, treeCount, adoptionDate, amount
  - 转账金额 = treeCount × 5760 fUSDT

## mining-blockchain-service 改动

### 3. fUSDT 注入钱包 MPC 签名支持
- mpc-signing.client: 新增 FUSDT_INJECTION_WALLET_USERNAME/ADDRESS 配置
  isFusdtInjectionConfigured(), signMessageAsFusdtInjection() 等方法
- erc20-transfer.service: IMpcSigningClient 接口增加注入钱包方法
  新增 transferFusdtAsInjectionWallet() 转账方法(含余额检查、MPC签名、广播)

### 4. 认种注入 Kafka 消费者
- adoption-injection-consumer.service: 订阅 cdc.contribution.outbox
  过滤 AdoptionFusdtInjectionRequested 事件,解析 Debezium 扁平化消息格式
- adoption-injection.handler: 处理注入事件
  - 幂等性检查(已确认的跳过)
  - 写入 adoption_injection_records 分类账(PROCESSING 状态)
  - 从注入钱包转 fUSDT 到做市商钱包
  - 成功: markConfirmed (txHash, blockNumber, gasUsed)
  - 失败: markFailed (errorMessage),支持重试
  - 发布 confirmed/failed Kafka 事件

### 5. 分类账持久化
- Prisma schema: 新增 AdoptionInjectionRecord 模型 (adoption_injection_records 表)
  字段: adoption_id, account_sequence, tree_count, adoption_date, from/to_address,
  amount, chain_type, tx_hash, block_number, gas_used, memo, status, error_message
  索引: uk_adoption_id (唯一), idx_injection_account, idx_injection_status 等
- migration: 20250203000000_add_adoption_injection_records
- Repository 接口 + 实现: save, findByAdoptionId, markConfirmed, markFailed

### 6. 启动余额检查
- main.ts: 启动时异步查询注入钱包 fUSDT 余额,余额为 0 时输出警告日志
  新增注入钱包配置验证

## 部署前需添加环境变量 (.env)
FUSDT_INJECTION_WALLET_USERNAME=wallet-bff20b69
FUSDT_INJECTION_WALLET_ADDRESS=0x7BDB89dA47F16869c90446C41e70A00dDc432DBB

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 05:25:56 -08:00
.claude feat(mining-app): 二维码扫描支持从相册选择图片识别 2026-01-31 07:21:56 -08:00
backend feat(adoption-injection): 认种自动 fUSDT 注入做市商钱包 + CDC outbox 修复 2026-02-03 05:25:56 -08:00
contracts feat(blockchain): 部署 eUSDT 和 fUSDT 代币合约 2026-01-19 05:30:25 -08:00
docs docs: 添加 RWADurian 2.0 部署与运维成本方案 2026-01-22 03:29:51 -08:00
frontend feat(market-maker): 积分股(eUSDT)和积分值(fUSDT)使用独立 MPC 钱包 2026-02-03 03:39:54 -08:00
kubernetes . 2025-11-25 10:29:24 +08:00
scripts fix(snapshot): 修改 Services PostgreSQL 用户名为 rwa_user 2026-01-08 09:05:22 -08:00
tests . 2025-11-25 10:29:24 +08:00
.gitignore feat(mining-ecosystem): 添加挖矿生态系统完整微服务与前端 2026-01-10 17:45:46 -08:00
README.md first commit 2025-11-23 21:21:44 -08:00
SEED01-qrcode.png fix: 短信超时返回成功状态避免前端报错 2025-12-21 20:55:31 -08:00
STKAITI.TTF feat(mobile-app): 添加合同签署 API 详细调试日志 2025-12-25 03:14:10 -08:00
contract.docx feat(kyc): 实名认证前检查手机号验证状态 2025-12-24 21:00:53 -08:00
docker-compose.yml first commit 2025-11-23 21:21:44 -08:00
挖矿.xlsx feat(contribution): 添加系统账户算力来源类型字段 2026-01-21 04:23:50 -08:00
榴莲皇后数据.xlsx fix(mobile-app): 修复多账号切换后账号列表只显示一个的问题 2025-12-27 11:12:50 -08:00
联合种植协议董事长_release_form.pdf fix(reporting-service): add /api/v1 prefix to wallet and reward service API calls 2026-01-04 23:18:10 -08:00

README.md