rwadurian/backend/services/contribution-service
hailin ff67319171 feat(contribution): implement transactional idempotent CDC consumer for 1.0->2.0 sync
Implements 100% exactly-once semantics for CDC events from 1.0 databases
(identity-service, planting-service, referral-service) to contribution-service.

Key changes:
- Add ProcessedCdcEvent model with (sourceTopic, offset) unique constraint
- Add withIdempotency() wrapper using Serializable transaction isolation
- Add registerTransactionalHandler() for handlers requiring idempotency
- Modify CDC handlers to accept external transaction client
- All database operations now use the passed transaction client

This ensures that:
1. Each CDC event is processed exactly once
2. Idempotency record and business logic are in the same transaction
3. Any failure causes complete rollback

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 19:22:47 -08:00
..
prisma feat(contribution): implement transactional idempotent CDC consumer for 1.0->2.0 sync 2026-01-12 19:22:47 -08:00
src feat(contribution): implement transactional idempotent CDC consumer for 1.0->2.0 sync 2026-01-12 19:22:47 -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