支持cloudtentacles覆盖规则

This commit is contained in:
yml
2026-05-27 13:25:15 +08:00
parent c7e2a225bc
commit c1f3a48634
18 changed files with 997 additions and 31 deletions
@@ -180,6 +180,7 @@ export async function syncDeliveryTasksForOrderWithDeps(
binding: {
prepareStatus: 'pending',
cloudSourceKeys: normalizeStringArray(cloudtentaclesConfig.cloudSourceKeys),
resolvedSourceKey: String(cloudtentaclesConfig.resolvedSourceKey || '').trim(),
skuId: primaryDeliveryItem.cloudSkuId,
skuName: primaryDeliveryItem.cloudSkuName,
vnKey: '1',
@@ -384,11 +385,19 @@ async function resolveDynamicCloudtentaclesProfile(
): Promise<FulfillmentBindingLike | null> {
const snapshot = parseJsonObject(item.item_snapshot_json)
const cloudtentacles = parseJsonObject(snapshot.cloudtentacles)
const cloudSkuId = Number(cloudtentacles.cloudSkuId || 0) || 0
const cloudSkuName = String(cloudtentacles.cloudSkuName || item.sku_name || '').trim()
const cloudSourceKeys = normalizeStringArray(cloudtentacles.cloudSourceKeys)
const deliveryItems = normalizeCloudDeliveryItems({
deliveryItems: cloudtentacles.deliveryItems,
skuId: cloudtentacles.cloudSkuId,
skuName: cloudtentacles.cloudSkuName || item.sku_name,
})
const primaryDeliveryItem = deliveryItems[0] || {
cloudSkuId: 0,
cloudSkuName: '',
quantity: 1,
}
if (!cloudSkuId || !cloudSkuName || cloudSourceKeys.length === 0) {
if (!primaryDeliveryItem.cloudSkuId || !primaryDeliveryItem.cloudSkuName || cloudSourceKeys.length === 0) {
return null
}
@@ -407,18 +416,13 @@ async function resolveDynamicCloudtentaclesProfile(
auto_dispatch: false,
config_json: {
flowType: 'kuaishou_cloud_fulfillment',
configId: `cloudtentacles_name:${cloudSkuId}`,
configId: `${String(cloudtentacles.matchMode || 'cloudtentacles_name').trim()}:${String(cloudtentacles.normalizedProductName || primaryDeliveryItem.cloudSkuId).trim()}`,
cloudtentacles: {
cloudSourceKeys,
skuId: cloudSkuId,
skuName: cloudSkuName,
deliveryItems: [
{
cloudSkuId,
cloudSkuName,
quantity: 1,
},
],
skuId: primaryDeliveryItem.cloudSkuId,
skuName: primaryDeliveryItem.cloudSkuName,
resolvedSourceKey: String(cloudtentacles.resolvedSourceKey || '').trim(),
deliveryItems,
vnKey: '1',
autoBuyEnabled: true,
minAssetReserve: 0,
@@ -429,7 +433,9 @@ async function resolveDynamicCloudtentaclesProfile(
shopName: '',
autoConsumeAfterDispatch: false,
},
notes: '91卡券商品名自动匹配 cloudtentacles 商品',
notes: cloudtentacles.matchMode === 'cloudtentacles_override'
? '91卡券商品名命中 cloudtentacles 覆盖规则'
: '91卡券商品名自动匹配 cloudtentacles 商品',
},
}
}