rwadurian/backend/services/contribution-service/src
hailin 5447545486 fix(contribution): move calculateForAdoption out of CDC transaction
Root cause: calculateForAdoption uses separate DB connections, which
cannot see uncommitted data in Serializable isolation level, causing
"Adoption not found" errors.

Solution (following Kafka Idempotent Consumer best practice):
- Add TransactionalCDCHandlerWithResult<T> type for handlers with return
- Add withIdempotencyAndCallback() wrapper for post-commit callbacks
- Add registerTransactionalHandlerWithCallback() registration method
- AdoptionSyncedHandler.handle() now returns AdoptionSyncResult
- Contribution calculation runs AFTER transaction commits via callback

Reference: Lydtech Consulting - Kafka Idempotent Consumer Pattern
https://www.lydtechconsulting.com/blog/kafka-idempotent-consumer-transactional-outbox

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 21:18:21 -08:00
..
api feat(contribution): fix pending fields update and add network progress tracking 2026-01-12 07:26:32 -08:00
application fix(contribution): move calculateForAdoption out of CDC transaction 2026-01-12 21:18:21 -08:00
domain feat(contribution): display distribution details with actual amounts 2026-01-12 09:23:02 -08:00
infrastructure fix(contribution): move calculateForAdoption out of CDC transaction 2026-01-12 21:18:21 -08:00
shared fix(contribution-service): 修复JWT验证与auth-service不兼容 2026-01-11 18:18:21 -08:00
app.module.ts feat(contribution-service): 添加算力管理微服务 2026-01-10 17:39:25 -08:00
main.ts fix(contribution-service): 统一使用api/v2前缀 2026-01-11 09:05:42 -08:00