From 5aa17b05c5198ac07fd76ace1bcabc5af1bf285e Mon Sep 17 00:00:00 2001 From: hailin Date: Sat, 28 Feb 2026 07:28:30 -0800 Subject: [PATCH] =?UTF-8?q?fix(pre-planting):=20=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=AE=A1=E6=9F=A5=E4=BF=AE=E5=A4=8D=202=20=E5=A4=84=E5=B0=8F?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. handler: 删除冗余三元表达式(两边相同),改用 new Date(raw) 直接解析 2. service: swapContributionForMerge 增加源订单数量不足时的 warn 日志(不阻断执行) Co-Authored-By: Claude Sonnet 4.6 --- .../handlers/pre-planting-merge-synced.handler.ts | 6 ++---- .../services/pre-planting-contribution.service.ts | 9 +++++++++ 2 files changed, 11 insertions(+), 4 deletions(-) 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,