From bcf5eb09ec1b3b889e2b316400d3d3dd21855f97 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Tue, 3 Nov 2026 14:10:58 +0800 Subject: [PATCH] =?UTF-8?q?fix(fulfillment):=20=E6=8C=81=E4=B9=85=E5=8C=96?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E9=A1=B9=E5=B7=B2=E9=85=8D=E7=BD=AE=E5=BF=AB?= =?UTF-8?q?=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fulfillment/intake-channel-decision-service.test.ts | 6 ++++++ .../services/fulfillment/intake-channel-decision-service.ts | 1 + 2 files changed, 7 insertions(+) diff --git a/apps/backend/src/services/fulfillment/intake-channel-decision-service.test.ts b/apps/backend/src/services/fulfillment/intake-channel-decision-service.test.ts index 5b14c983..ec6a6135 100644 --- a/apps/backend/src/services/fulfillment/intake-channel-decision-service.test.ts +++ b/apps/backend/src/services/fulfillment/intake-channel-decision-service.test.ts @@ -55,6 +55,7 @@ test('下单决策:自动发货只从统一 SKU 配置生成任务路由', () ) assert.equal(item.isConfigured, true) + assert.equal(item.snapshot.isConfigured, true) assert.equal(item.skuCode, 'lucky_coin_x2') assert.equal(item.snapshot.internalSkuChannel, 'affiliate_dash') assert.deepEqual(item.snapshot.fulfillmentRoute, { @@ -84,6 +85,7 @@ test('下单决策:自动发货缺载体参数时不建任何任务', () => { plan(channel({ internal_sku: '不存在商品' })), ) assert.equal(item.isConfigured, false) + assert.equal(item.snapshot.isConfigured, false) assert.equal(item.snapshot.internalSkuChannelReason, 'missing_affiliate_dash_mapping') }) @@ -93,6 +95,7 @@ test('下单决策:人工渠道只有配置存在时才建人工任务', () => plan(channel({ channel: 'manual', config_json: { manualConfigId: 9 } })), ) assert.equal(ready.isConfigured, true) + assert.equal(ready.snapshot.isConfigured, true) assert.equal( (ready.snapshot.fulfillmentRoute as Record).selectedExecutorKey, 'manual_dispatch', @@ -103,6 +106,7 @@ test('下单决策:人工渠道只有配置存在时才建人工任务', () => plan(channel({ channel: 'manual', config_json: {} })), ) assert.equal(missing.isConfigured, false) + assert.equal(missing.snapshot.isConfigured, false) assert.equal(missing.snapshot.internalSkuChannelReason, 'manual_config_missing') }) @@ -113,6 +117,7 @@ test('下单决策:接单平台和卡券不提前建任务', () => { plan(channel({ channel: targetChannel, config_json: {} })), ) assert.equal(item.isConfigured, false) + assert.equal(item.snapshot.isConfigured, false) assert.equal(item.snapshot.internalSkuChannel, targetChannel) assert.equal( (item.snapshot.fulfillmentRoute as Record).selectedExecutorKey, @@ -139,6 +144,7 @@ test('下单决策:冲突或无配置时清空旧路由,不能由旧逻辑 conflicts: [channel()], }) assert.equal(conflict.isConfigured, false) + assert.equal(conflict.snapshot.isConfigured, false) assert.equal(conflict.snapshot.internalSkuChannelReason, 'routing_conflict') assert.equal( (conflict.snapshot.fulfillmentRoute as Record).selectedExecutorKey, diff --git a/apps/backend/src/services/fulfillment/intake-channel-decision-service.ts b/apps/backend/src/services/fulfillment/intake-channel-decision-service.ts index 0eae7da7..4d5c8ef6 100644 --- a/apps/backend/src/services/fulfillment/intake-channel-decision-service.ts +++ b/apps/backend/src/services/fulfillment/intake-channel-decision-service.ts @@ -63,6 +63,7 @@ function withChannelSnapshot(input: { isConfigured: input.configured, snapshot: { ...snapshot, + isConfigured: input.configured, internalSku: input.internalSku, ...(input.source ? { internalSkuChannelSource: input.source } : {}), ...(input.channel !== 'unmatched' ? { internalSkuChannel: input.channel } : {}),