彻底修复 lewan 自动发货问题-8-8
This commit is contained in:
@@ -58,6 +58,25 @@ test('resolveCloudtentaclesSkuByProductName matches SKU name with logged-in sour
|
||||
assert.equal(result?.matchMode, 'cloudtentacles_name')
|
||||
})
|
||||
|
||||
test('resolveCloudtentaclesSkuByProductName 多账号匹配不提前固定账号', async () => {
|
||||
const result = await resolveCloudtentaclesSkuByProductName('商品A', {
|
||||
listCloudtentaclesSources: () => ({
|
||||
enabled: true,
|
||||
sources: [
|
||||
{ key: 'account-a', enabled: true },
|
||||
{ key: 'account-b', enabled: true },
|
||||
],
|
||||
}),
|
||||
getCloudtentaclesSessionStateByKey: (key) => ({ token: `token-${key}` }),
|
||||
listCloudtentaclesSku: async () => ({
|
||||
items: [{ id: 28, name: '商品A', inventory: 10, price: 100 }],
|
||||
}),
|
||||
})
|
||||
|
||||
assert.deepEqual(result?.cloudSourceKeys, ['account-a', 'account-b'])
|
||||
assert.equal(result?.resolvedSourceKey, '')
|
||||
})
|
||||
|
||||
test('resolveCloudtentaclesSkuByProductName prefers override rule with multiple delivery items', async () => {
|
||||
const result = await resolveCloudtentaclesSkuByProductName('套装1', {
|
||||
listCloudtentaclesSources: () => ({
|
||||
@@ -132,6 +151,7 @@ test('resolveCloudtentaclesSkuByProductName prefers override rule with multiple
|
||||
assert.equal(result?.matchMode, 'cloudtentacles_override')
|
||||
assert.equal(result?.cloudSkuId, 28)
|
||||
assert.equal(result?.cloudSkuName, '商品A')
|
||||
assert.equal(result?.resolvedSourceKey, '')
|
||||
assert.deepEqual(result?.deliveryItems, [
|
||||
{
|
||||
cloudSkuId: 28,
|
||||
|
||||
@@ -133,7 +133,9 @@ export async function resolveCloudtentaclesSkuByProductName(
|
||||
cloudSkuPrice: Number(matchedSku.price || 0) || 0,
|
||||
cloudSkuInventory: Number(matchedSku.inventory || 0) || 0,
|
||||
cloudSourceKeys,
|
||||
resolvedSourceKey: context.sourceKey,
|
||||
// Matching only discovers compatible accounts. The fulfillment selector
|
||||
// chooses the least-loaded account immediately before taking a number.
|
||||
resolvedSourceKey: '',
|
||||
deliveryItems: [
|
||||
{
|
||||
cloudSkuId,
|
||||
@@ -168,6 +170,7 @@ function buildCloudtentaclesSourceContext(
|
||||
|
||||
return {
|
||||
sourceKey,
|
||||
accountLabel: String(source.label || sourceKey).trim() || sourceKey,
|
||||
baseUrl: String(session?.baseUrl || source.baseUrl || '').trim(),
|
||||
token,
|
||||
deviceId: normalizeCloudtentaclesDeviceId(session?.deviceId || source.deviceId),
|
||||
@@ -226,7 +229,7 @@ async function resolveOverrideMatch(
|
||||
cloudSkuPrice: Number(firstSku.price || 0) || 0,
|
||||
cloudSkuInventory: Number(firstSku.inventory || 0) || 0,
|
||||
cloudSourceKeys,
|
||||
resolvedSourceKey: context.sourceKey,
|
||||
resolvedSourceKey: rule.sourceKey ? context.sourceKey : '',
|
||||
deliveryItems,
|
||||
skuSnapshot: {
|
||||
overrideRuleId: rule.id,
|
||||
|
||||
Reference in New Issue
Block a user