优化履约路由并重命名乐玩通道
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import test from 'node:test'
|
||||
|
||||
import {
|
||||
normalizeFulfillmentRoutingConfig,
|
||||
resolveFulfillmentRoute,
|
||||
} from './routing-config-service.js'
|
||||
|
||||
test('resolveFulfillmentRoute 默认保持 kuaishou-lewan 优先', () => {
|
||||
const result = resolveFulfillmentRoute({
|
||||
productName: '测试商品',
|
||||
candidates: [
|
||||
{ executorKey: 'kuaishou_ct_assisted', available: true },
|
||||
{ executorKey: 'kuaishou_feifei', available: true },
|
||||
],
|
||||
config: normalizeFulfillmentRoutingConfig({}),
|
||||
})
|
||||
|
||||
assert.equal(result.selectedExecutorKey, 'kuaishou_ct_assisted')
|
||||
assert.equal(result.reason, '按全局优先级命中')
|
||||
})
|
||||
|
||||
test('resolveFulfillmentRoute 全局关闭 kuaishou-lewan 后选择 feifei', () => {
|
||||
const result = resolveFulfillmentRoute({
|
||||
productName: '测试商品',
|
||||
candidates: [
|
||||
{ executorKey: 'kuaishou_ct_assisted', available: true },
|
||||
{ executorKey: 'kuaishou_feifei', available: true },
|
||||
],
|
||||
config: normalizeFulfillmentRoutingConfig({
|
||||
executors: {
|
||||
kuaishou_ct_assisted: { enabled: false },
|
||||
kuaishou_feifei: { enabled: true },
|
||||
},
|
||||
}),
|
||||
})
|
||||
|
||||
assert.equal(result.selectedExecutorKey, 'kuaishou_feifei')
|
||||
assert.deepEqual(result.skipped[0], {
|
||||
executorKey: 'kuaishou_ct_assisted',
|
||||
reason: '履约通道已停用',
|
||||
})
|
||||
})
|
||||
|
||||
test('resolveFulfillmentRoute 商品规则可以强制走 feifei', () => {
|
||||
const result = resolveFulfillmentRoute({
|
||||
productName: '荣耀套装',
|
||||
candidates: [
|
||||
{ executorKey: 'kuaishou_ct_assisted', available: true },
|
||||
{ executorKey: 'kuaishou_feifei', available: true },
|
||||
],
|
||||
config: normalizeFulfillmentRoutingConfig({
|
||||
rules: [
|
||||
{
|
||||
enabled: true,
|
||||
productName: '荣耀套装',
|
||||
executorKey: 'kuaishou_feifei',
|
||||
priority: 200,
|
||||
},
|
||||
],
|
||||
}),
|
||||
})
|
||||
|
||||
assert.equal(result.selectedExecutorKey, 'kuaishou_feifei')
|
||||
assert.equal(result.selectedRuleId, '荣耀套装:kuaishou_feifei')
|
||||
assert.equal(result.reason, '命中商品路由规则')
|
||||
})
|
||||
|
||||
test('resolveFulfillmentRoute 商品规则可以强制转人工', () => {
|
||||
const result = resolveFulfillmentRoute({
|
||||
productName: '临时停用商品',
|
||||
candidates: [
|
||||
{ executorKey: 'kuaishou_ct_assisted', available: true },
|
||||
{ executorKey: 'kuaishou_feifei', available: false },
|
||||
],
|
||||
config: normalizeFulfillmentRoutingConfig({
|
||||
rules: [
|
||||
{
|
||||
enabled: true,
|
||||
productName: '临时停用',
|
||||
matchType: 'contains',
|
||||
executorKey: 'manual_dispatch',
|
||||
priority: 300,
|
||||
},
|
||||
],
|
||||
}),
|
||||
})
|
||||
|
||||
assert.equal(result.selectedExecutorKey, 'manual_dispatch')
|
||||
assert.equal(result.reason, '命中商品路由规则')
|
||||
})
|
||||
Reference in New Issue
Block a user