优化履约路由并重命名乐玩通道

This commit is contained in:
yml2213
2026-07-09 10:49:33 +08:00
parent 71602683d2
commit 4d5b0d6fc6
28 changed files with 1448 additions and 53 deletions
@@ -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, '命中商品路由规则')
})