fix(fulfillment): 持久化订单项已配置快照

This commit is contained in:
yml2213
2026-11-03 14:10:58 +08:00
parent 07c6a1ce22
commit bcf5eb09ec
2 changed files with 7 additions and 0 deletions
@@ -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<string, unknown>).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<string, unknown>).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<string, unknown>).selectedExecutorKey,
@@ -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 } : {}),