diff --git a/backend/services/contribution-service/src/pre-planting/application/handlers/pre-planting-merge-synced.handler.ts b/backend/services/contribution-service/src/pre-planting/application/handlers/pre-planting-merge-synced.handler.ts index b328e608..fdf47300 100644 --- a/backend/services/contribution-service/src/pre-planting/application/handlers/pre-planting-merge-synced.handler.ts +++ b/backend/services/contribution-service/src/pre-planting/application/handlers/pre-planting-merge-synced.handler.ts @@ -98,10 +98,8 @@ export class PrePlantingMergeSyncedHandler { return null; } - // 解析 mining_enabled_at(可能是 ISO 字符串或 epoch ms 整数) - const miningEnabledAt = new Date( - typeof miningEnabledAtRaw === 'number' ? miningEnabledAtRaw : miningEnabledAtRaw, - ); + // 解析 mining_enabled_at(可能是 ISO 字符串或 epoch ms 整数,new Date() 均可处理) + const miningEnabledAt = new Date(miningEnabledAtRaw); this.logger.log( `[PRE-PLANTING-MERGE] Detected contract signed: mergeNo=${mergeNo}, ` + diff --git a/backend/services/contribution-service/src/pre-planting/application/services/pre-planting-contribution.service.ts b/backend/services/contribution-service/src/pre-planting/application/services/pre-planting-contribution.service.ts index ed9b5daa..ddc4933a 100644 --- a/backend/services/contribution-service/src/pre-planting/application/services/pre-planting-contribution.service.ts +++ b/backend/services/contribution-service/src/pre-planting/application/services/pre-planting-contribution.service.ts @@ -587,6 +587,15 @@ export class PrePlantingContributionService { return; } + if (sourceOrders.length < sourceOrderNos.length) { + // 理论上不应发生(时序保证 order CDC 先于 merge CDC 到达), + // 若发生则记录 warn,以已同步的订单为准继续执行(不阻断) + this.logger.warn( + `[PRE-PLANTING-MERGE] Partial orders in tracking table for merge ${mergeNo}: ` + + `found ${sourceOrders.length}/${sourceOrderNos.length}. Proceeding with available records.`, + ); + } + // Step 2: 计算份额 sourceAdoptionId 列表(10B 偏移,与 calculateForPrePlantingOrder 一致) const portionSourceAdoptionIds = sourceOrders.map( (o) => PRE_PLANTING_SOURCE_ID_OFFSET + o.originalOrderId,