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 } : {}),