hailin
30b04c6376
feat(sync): 完善 CDC 数据同步 - 添加推荐关系、认种记录和昵称字段
...
- auth-service:
- SyncedLegacyUser 表添加 nickname 字段
- LegacyUserMigratedEvent 添加 nickname 参数
- CDC consumer 同步 nickname 字段
- SyncedLegacyUserData 接口添加 nickname
- contribution-service:
- 新增 ReferralSyncedEvent 事件类
- 新增 AdoptionSyncedEvent 事件类
- admin.controller 添加 publish-all APIs:
- POST /admin/referrals/publish-all
- POST /admin/adoptions/publish-all
- mining-admin-service:
- SyncedUser 表添加 nickname 字段
- 新增 SyncedReferral 表 (推荐关系)
- 新增 SyncedAdoption 表 (认种记录)
- handleReferralSynced 处理器
- handleAdoptionSynced 处理器
- handleLegacyUserMigrated 处理 nickname
- deploy-mining.sh:
- full_reset 更新为 14 步
- Step 13: 发布推荐关系
- Step 14: 发布认种记录
解决 mining-admin-web 缺少昵称、推荐人、认种数据的问题
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 02:48:15 -08:00
hailin
40745ca580
feat(cdc): 完善 2.0 服务数据聚合到 mining-admin-service
...
1. deploy-mining.sh:
- 添加 outbox connectors 配置数组 (auth, contribution, mining, trading, wallet)
- 添加 register_outbox_connectors() 函数自动注册 Debezium 连接器
- 添加 outbox-register, outbox-status, outbox-delete 命令
- full-reset 更新为 12 步,包含注册 outbox connectors 和初始数据发布
2. contribution-service:
- 添加 ContributionAccountSyncedEvent 事件
- 添加 POST /admin/contribution-accounts/publish-all API 用于初始全量同步
3. mining-admin-service:
- 添加 ContributionAccountSynced 事件处理(复用 ContributionAccountUpdated 处理器)
- 添加 ContributionCalculated 事件处理
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 01:41:46 -08:00
hailin
ff27195be2
fix(cdc): 修复用户同步字段映射和多 consumer group 重置
...
contribution-service:
- 修复 UserSyncedHandler 使用错误字段名 (data.id -> data.user_id)
- 兼容 CDC snake_case 字段命名 (user_id, account_sequence, phone_number)
- 添加数据验证,跳过无效记录
deploy-mining.sh:
- 添加 auth-service-cdc-group 到 CDC_CONSUMER_GROUPS
- full-reset 现在重置所有 CDC consumer groups
- sync_reset 和 sync_status 支持多个 consumer groups
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 23:59:39 -08:00
hailin
63d73af135
refactor(cdc): 统一使用 Debezium CDC 进行数据同步
...
1. contribution-service:
- 添加 identity topic 订阅,全量同步 1.0 用户数据
- 修改 fromBeginning 为 true,首次启动全量同步
2. mining-admin-service:
- 将 Outbox 事件改为 Debezium CDC 监听 outbox_events 表
- 修改 fromBeginning 为 true,首次启动全量同步
3. 新增 5 个 2.0 服务的 Debezium connector 配置:
- auth-outbox-connector.json
- contribution-outbox-connector.json
- mining-outbox-connector.json
- trading-outbox-connector.json
- mining-wallet-outbox-connector.json
4. 更新 register-connectors.sh 脚本
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 23:19:34 -08:00
hailin
cab36fccf1
fix(docker): 修复 contribution-service 和 mining-admin-service Dockerfile healthcheck 路径
...
将 healthcheck 路径从 /api/v1/health 改为 /api/v2/health,
与 main.ts 中的 API 前缀保持一致。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 22:56:26 -08:00
hailin
05f98def6d
fix(sync): 修复数据同步 API 认证和响应解析
...
- 为 contribution/mining/trading 服务的 AdminController 添加 @Public 装饰器
- 修复 initialization.service.ts 中响应格式解析,支持 { data: { ... } } 格式
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 21:47:32 -08:00
hailin
3fe6bdbbf0
feat(sync): 添加批量同步 API 端点
...
- 为 contribution-service、mining-service、trading-service 添加 AdminController
- 提供 /admin/accounts/sync 端点用于批量获取账户数据
- 在 mining-admin-service 添加同步 mining/trading 账户的初始化端点
- 添加 sync-all 端点支持一键同步所有数据
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 21:27:35 -08:00
hailin
608e22a8e7
fix(contribution-service): 修复JWT验证与auth-service不兼容
...
- 移除 type 字段检查 (auth-service 不生成此字段)
- 修复 JwtPayload 接口与 auth-service 生成的 token 结构一致
- 从 payload.sub 获取 accountSequence
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 18:18:21 -08:00
hailin
849f346891
fix(contribution-service): 修复控制器路由路径与前端API不匹配
...
将控制器路由从 /contributions 改为 /contribution,
与前端 api_endpoints.dart 中定义的路径保持一致。
完整路径: /api/v2/contribution/accounts/{accountSequence}
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 17:42:10 -08:00
hailin
ace1e8673b
feat(deploy-mining): rebuild命令增加服务重启功能
...
rebuild命令现在会在构建完成后自动停止旧服务并启动新服务,
而不仅仅是编译镜像。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 17:18:25 -08:00
hailin
a539b33dff
fix(contribution-service): 优化账户查询API返回有意义的业务状态
...
- 新增 ContributionAccountStatus 枚举区分三种状态:
- ACTIVE: 账户正常,有算力数据
- INACTIVE: 用户存在但暂无认种记录
- USER_NOT_FOUND: 账户不存在
- 移除 404 错误响应,统一返回 200 并通过 status 和 message 字段描述状态
- 为不同状态提供友好的中文提示信息
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 17:13:38 -08:00
hailin
5ee6caa190
fix(contribution-service): 修复Kafka消息BigInt序列化错误
...
JSON.stringify无法序列化BigInt,添加自定义replacer将BigInt转换为字符串
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 09:57:21 -08:00
hailin
a40e314c94
fix(contribution-service): 修复adoption handler事务嵌套问题
...
将upsertSyncedAdoption和calculateForAdoption分离为两个独立操作,
避免嵌套事务导致内层事务看不到外层事务尚未提交的数据
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 09:52:00 -08:00
hailin
5006a5a170
fix(contribution-service): 修复synced_adoptions.status字段长度
...
1.0 planting_orders.status是VARCHAR(30),2.0需要匹配以避免数据截断错误
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 09:45:08 -08:00
hailin
5f76108579
fix(contribution-service): 修复CDC消息解析以支持Debezium扁平化格式
...
Debezium配置了ExtractNewRecordState转换,消息格式是扁平化的:
- 元数据字段使用__前缀(__op, __table, __source_ts_ms, __deleted)
- 业务数据字段直接在根级别
- 修改handleMessage方法正确解析扁平化格式
- 更新CDCEvent接口以匹配实际消息结构
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 09:39:09 -08:00
hailin
4b55c63e71
fix(contribution-service): 修复CDC同步字段映射,支持完整同步referral数据
...
主要更改:
1. synced_referrals表增加referrer_user_id和original_user_id字段
- 1.0的referral_relationships表只有referrer_id(user_id),没有referrer_account_sequence
- 保存原始user_id以便后续解析推荐人的account_sequence
2. 修复referral-synced.handler字段映射
- 正确处理1.0的user_id、referrer_id、ancestor_path字段
- ancestor_path从BigInt[]数组转换为逗号分隔的字符串
3. 修复cdc-event-dispatcher表名注册
- 使用正确的表名: referral_relationships, planting_orders
- 移除不需要的user_accounts注册
4. 更新docker-compose.2.0.yml
- 添加CDC_TOPIC_REFERRALS配置
- 移除未使用的CDC_TOPIC_PAYMENTS
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 09:27:01 -08:00
hailin
05a8168a31
fix(contribution-service): 修复CDC同步配置,使用正确的planting-service topic
...
- 修改CDC topic为cdc.planting.public.planting_orders
- 更新healthcheck使用api/v2
- 更新handler适配planting_orders表字段
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 09:18:37 -08:00
hailin
0e05139c01
fix(contribution-service): 统一使用api/v2前缀
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 09:05:42 -08:00
hailin
1b425e09c9
fix(contribution-service): 添加@Public装饰器到HealthController以绕过JWT认证
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 07:02:17 -08:00
hailin
673e5ff772
fix(dockerfiles): 修复2.0服务健康检查路径
...
- 修正健康检查URL从 /health 到 /api/v1/health(因为设置了全局前缀)
- 增加 start-period 从 10s 到 60s,给服务更多启动时间
受影响服务:
- contribution-service
- mining-service
- mining-admin-service
- trading-service
- mining-wallet-service
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 06:45:44 -08:00
hailin
f26a796244
fix(contribution-service): 修复migration为完整初始化脚本
...
将增量migration改为完整的初始化migration,包含所有表的CREATE TABLE语句。
原migration使用ALTER TABLE假设表已存在,但这是服务的第一个migration文件。
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 06:31:24 -08:00
hailin
6261679f5a
feat(contribution-service, mining-service): 添加18级待解锁算力字段和挖矿收益分配表
...
contribution-service:
- 添加15级层级待解锁字段 (level1-15Pending)
- 添加3档加成待解锁字段 (bonusTier1-3Pending)
- 添加解锁状态追踪字段 (hasAdopted, directReferralAdoptedCount等)
- 重构ContributionAccountAggregate支持新字段结构
- 更新repository和query处理effectiveContribution
mining-service:
- 添加MiningRewardAllocation表追踪每日挖矿收益分配明细
- 添加DailyMiningRewardSummary表汇总账户每日收益
- 添加HeadquartersPendingReward表记录未解锁算力收益归总部明细
- 创建初始migration文件
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 06:16:15 -08:00
hailin
319a787c43
fix(2.0-dockerfiles): 添加openssl解决Prisma兼容性问题
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 23:46:14 -08:00
hailin
c1de1daea8
fix(2.0-dockerfiles): 使用printf替代echo解决alpine兼容性问题
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 23:37:29 -08:00
hailin
d3fecc42c1
fix(2.0-services): 优化所有Dockerfile使用--chown避免chown -R
...
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 23:23:57 -08:00
hailin
821c70bf38
feat(docker): 添加 2.0 系统 Docker 部署支持
...
为所有 2.0 服务添加 Dockerfile 和 docker-compose 配置:
后端服务:
- contribution-service (3020) - 算力服务
- mining-service (3021) - 挖矿服务
- trading-service (3022) - 交易服务
- mining-admin-service (3023) - 管理后台 API
- auth-service (3024) - 用户认证服务
前端服务:
- mining-admin-web (3100) - 管理后台前端
Docker 配置:
- docker-compose.2.0.yml: 独立的 2.0 系统编排文件
- 多阶段构建优化镜像大小
- 健康检查确保服务可用性
- 服务依赖顺序正确
部署脚本更新:
- deploy-mining.sh 使用 docker-compose.2.0.yml
- 添加 mining-admin-web 服务别名 (web, admin-web)
- 更新服务端口配置
使用方式:
cd backend/services
docker-compose -f docker-compose.2.0.yml up -d
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 19:31:02 -08:00
hailin
eaead7d4f3
feat(contribution-service): 添加算力管理微服务
...
## 概述
为榴莲生态2.0添加 contribution-service 微服务,负责算力计算、分配和快照管理。
## 架构设计
- 采用 DDD + Hexagonal Architecture (六边形架构)
- 使用 NestJS 框架 + Prisma ORM
- 通过 Kafka CDC (Debezium) 从 user-service 同步数据
- 使用 accountSequence (而非 userId) 进行跨服务关联
## 核心功能模块
### 1. Domain Layer (领域层)
- ContributionAccountAggregate: 算力账户聚合根
- ContributionRecordAggregate: 算力记录聚合根
- ContributionAmount: 算力金额值对象 (基于 Decimal.js)
- DistributionRate: 分配比例值对象
- ContributionSourceType: 算力来源类型枚举 (PERSONAL/TEAM_LEVEL/TEAM_BONUS)
### 2. Application Layer (应用层)
- ContributionCalculationService: 算力计算核心服务
- 个人算力: 认种金额 × 10
- 团队等级奖励: 基于直推有效认种人数
- 团队极差奖励: 多级分销算法
- SnapshotService: 每日算力快照服务
- CDC Event Handlers: 处理用户、认种、引荐关系同步事件
### 3. Infrastructure Layer (基础设施层)
- Prisma Repositories:
- ContributionAccountRepository
- ContributionRecordRepository
- SyncedDataRepository (同步数据)
- OutboxRepository (发件箱模式)
- SystemAccountRepository
- UnallocatedContributionRepository
- Kafka CDC Consumer: 消费 Debezium CDC 事件
- Redis: 缓存支持
- UnitOfWork: 事务管理
### 4. API Layer (接口层)
- ContributionController: 算力查询接口
- SnapshotController: 快照管理接口
- HealthController: 健康检查
## 数据模型 (Prisma Schema)
- ContributionAccount: 算力账户
- ContributionRecord: 算力记录 (支持过期)
- DailyContributionSnapshot: 每日快照
- SyncedUser/SyncedAdoption/SyncedReferral: CDC 同步数据
- OutboxEvent: 发件箱事件
- SystemContributionAccount: 系统账户
- UnallocatedContribution: 未分配算力
## TypeScript 类型修复
- 修复所有 Repository 接口与实现的类型不匹配
- 修复 ContributionAmount.multiply() 返回值类型
- 修复 isZero getter vs method 问题
- 修复 bigint vs string 类型转换
- 统一使用 items/total 返回格式
- 修复 Prisma schema 字段名映射 (unallocType, contributionBalance 等)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 17:39:25 -08:00