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

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
@@ -231,6 +231,21 @@ async function resolveDynamicFulfillmentProfile(
item: OrderItemRow,
getProfileByKey: FulfillmentProfileResolver,
): Promise<FulfillmentBindingLike | null> {
const selectedExecutorKey = resolveSelectedFulfillmentExecutorKey(item)
if (selectedExecutorKey) {
if (selectedExecutorKey === FULFILLMENT_EXECUTOR_KEYS.KUAISHOU_CLOUD) {
return resolveDynamicCloudtentaclesProfile(item, getProfileByKey)
}
if (selectedExecutorKey === FULFILLMENT_EXECUTOR_KEYS.KUAISHOU_FEIFEI) {
return resolveDynamicKuaishouFeifeiProfile(item, getProfileByKey)
}
if (selectedExecutorKey === FULFILLMENT_EXECUTOR_KEYS.MANUAL_DISPATCH) {
return resolveDynamicManualDispatchProfile(item, getProfileByKey)
}
}
return (
await resolveDynamicCloudtentaclesProfile(item, getProfileByKey) ||
await resolveDynamicKuaishouFeifeiProfile(item, getProfileByKey)
@@ -272,7 +287,7 @@ async function resolveDynamicCloudtentaclesProfile(
...profile,
profile_id: Number(profile.id || profile.profile_id || 0),
profile_key: FULFILLMENT_EXECUTOR_KEYS.KUAISHOU_CLOUD,
profile_name: String(profile.profile_name || profile.name || '快手 cloud 履约').trim(),
profile_name: String(profile.profile_name || profile.name || 'kuaishou-lewan 履约').trim(),
executor_key: FULFILLMENT_EXECUTOR_KEYS.KUAISHOU_CLOUD,
requires_claim: false,
auto_dispatch: false,
@@ -343,6 +358,42 @@ async function resolveDynamicKuaishouFeifeiProfile(
}
}
async function resolveDynamicManualDispatchProfile(
item: OrderItemRow,
getProfileByKey: FulfillmentProfileResolver,
): Promise<FulfillmentBindingLike | null> {
const profile = await getProfileByKey('manual_review')
if (!profile) {
return null
}
return {
...profile,
profile_id: Number(profile.id || profile.profile_id || 0),
profile_key: 'manual_review',
profile_name: String(profile.profile_name || profile.name || '人工发货').trim(),
executor_key: FULFILLMENT_EXECUTOR_KEYS.MANUAL_DISPATCH,
requires_claim: false,
auto_dispatch: false,
config_json: {
flowType: 'manual_dispatch',
configId: `manual_dispatch:${item.sku_code || item.id}`,
manualDispatch: {
source: 'fulfillment_routing',
skuCode: item.sku_code,
skuName: item.sku_name,
},
notes: '履约路由规则指定人工履约',
},
}
}
function resolveSelectedFulfillmentExecutorKey(item: OrderItemRow) {
const snapshot = parseJsonObject(item.item_snapshot_json)
const route = parseJsonObject(snapshot.fulfillmentRoute)
return String(route.selectedExecutorKey || '').trim()
}
function parseJsonObject(value: unknown): JsonObject {
if (!value) {
return {}