From 85379df182a2eb740d8f0cfbe4214e2f5ac680f5 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Wed, 23 Sep 2026 22:20:18 +0800 Subject: [PATCH] exclude primary FBA destination for second producer --- scripts/admin-test-env-acceptance.mjs | 3 +++ scripts/admin-test-env-modules/orders.mjs | 2 ++ 2 files changed, 5 insertions(+) diff --git a/scripts/admin-test-env-acceptance.mjs b/scripts/admin-test-env-acceptance.mjs index 6c12d4f9d..5586c0a66 100644 --- a/scripts/admin-test-env-acceptance.mjs +++ b/scripts/admin-test-env-acceptance.mjs @@ -1521,6 +1521,8 @@ export class AcceptanceRun { this.context.orderFulfillmentType = fulfillmentType this.context.phase4ProducerMatrixMarker = matrixMarker if (destinationType === 'FBA' && label === 'FBA-SECOND') { + const existingFba = this.createdResources.phase4InboundProducerFixtures?.byDestinationType?.FBA || [] + const primaryCode = existingFba.map(item => String(item?.destinationWarehouseCode || '').trim().toUpperCase()).find(Boolean) this.context.waitSplitRoute = { ...(this.context.waitSplitRoute || {}), // The normal order route rotates the destination list from randomIndex; @@ -1528,6 +1530,7 @@ export class AcceptanceRun { // dispatch can exercise a multi-destination candidate set. randomIndex: 17, destinationIndex: 1, + excludeDestinationCodes: primaryCode ? [primaryCode] : [], } } try { diff --git a/scripts/admin-test-env-modules/orders.mjs b/scripts/admin-test-env-modules/orders.mjs index 3bb5e0aa5..dfb38bed2 100644 --- a/scripts/admin-test-env-modules/orders.mjs +++ b/scripts/admin-test-env-modules/orders.mjs @@ -290,6 +290,8 @@ async function loadMasterData(context, merchantToken) { // a producer intended for the second FBA destination can silently reuse ABE4. if (destinationType !== 'PRIVATE') { destinations = [...new Map(destinations.map(value => [String(value.warehouseCode).trim().toUpperCase(), value])).values()] + const excluded = new Set((fixedRoute.excludeDestinationCodes || []).map(value => String(value).trim().toUpperCase()).filter(Boolean)) + if (excluded.size) destinations = destinations.filter(value => !excluded.has(String(value.warehouseCode).trim().toUpperCase())) } let pricingResult