diff --git a/backend/services/mining-admin-service/src/infrastructure/kafka/cdc-consumer.service.ts b/backend/services/mining-admin-service/src/infrastructure/kafka/cdc-consumer.service.ts index f839f323..7611818f 100644 --- a/backend/services/mining-admin-service/src/infrastructure/kafka/cdc-consumer.service.ts +++ b/backend/services/mining-admin-service/src/infrastructure/kafka/cdc-consumer.service.ts @@ -324,12 +324,18 @@ export class CdcConsumerService implements OnModuleInit, OnModuleDestroy { // Debezium outbox 格式转换 // 原始格式:{ event_type, aggregate_type, aggregate_id, payload (JSON string), ... } + // 注意:不同服务的 outbox 表主键列名可能不同: + // - contribution-service: outbox_id (mapped from id in Prisma) + // - 其他服务可能使用: id const payload = typeof data.payload === 'string' ? JSON.parse(data.payload) : data.payload; + // 优先使用 outbox_id(contribution-service),回退到 id + const eventId = data.outbox_id ?? data.id; + return { - id: String(data.id), + id: String(eventId), eventType: data.event_type, aggregateType: data.aggregate_type, aggregateId: data.aggregate_id,