diff --git a/scripts/admin-test-env-modules/phase3-container-loading.mjs b/scripts/admin-test-env-modules/phase3-container-loading.mjs index 6c225e2f7..753c319cf 100644 --- a/scripts/admin-test-env-modules/phase3-container-loading.mjs +++ b/scripts/admin-test-env-modules/phase3-container-loading.mjs @@ -7,6 +7,7 @@ import { iso6346ContainerNumber } from './iso6346-container-number.mjs' const MODULE = 'phase3-container-loading' const OPTIONS = { scenario: 'phase3-container-smart-loading-pda', deploymentBlocker: true } const CONTAINERS = '/api/platform/v1/containers' +const DOMESTIC_CONTAINERS = `${CONTAINERS}/domestic` const SMART = '/api/platform/v1/first-leg/smart-loading' const PDA = '/api/platform/v1/first-leg/pda-loading' const FIRST_LEG = '/api/platform/v1/first-leg' @@ -258,7 +259,7 @@ export async function run(context) { } } - const containerDetailResponse = await context.request('GET', `${CONTAINERS}/${containerId}`) + const containerDetailResponse = await context.request('GET', `${DOMESTIC_CONTAINERS}/${containerId}`) const containerDetail = context.apiSuccess(MODULE, '回查货柜详情', containerDetailResponse, '', OPTIONS) context.assert(MODULE, '货柜详情保留候选货物路线约束', containerDetailResponse, (!containerDetail?.destinationWarehouseCode || !candidate.destinationWarehouseCode @@ -398,7 +399,7 @@ export async function run(context) { unlinkedTaskAbsent, responseEvidence(unlinkedTaskResponse), OPTIONS) if (!unlinkedTaskAbsent) return - const simulationBeforeLinkResponse = await context.request('GET', `${CONTAINERS}/${containerId}`) + const simulationBeforeLinkResponse = await context.request('GET', `${DOMESTIC_CONTAINERS}/${containerId}`) const simulationBeforeLink = context.apiSuccess(MODULE, '预装确认前读取模拟柜最新版本', simulationBeforeLinkResponse, '', OPTIONS) if (!Number.isInteger(Number(simulationBeforeLink?.version))) return @@ -471,7 +472,7 @@ export async function run(context) { `containerBookingId=${containerId}, cabinetNo=${linkedContainer?.cabinetNo || 'missing'}, loadingPlanId=${id(afterLinkPlan?.id) || 'missing'}`, OPTIONS) const activeContainersResponse = await context.request('GET', - `${CONTAINERS}?page=1&size=50&keyword=${encodeURIComponent(realContainerNo)}`) + `${DOMESTIC_CONTAINERS}?page=1&size=50&keyword=${encodeURIComponent(realContainerNo)}`) const activeContainers = context.apiSuccess(MODULE, '关联后按真实柜号回查正常货柜列表', activeContainersResponse, '', OPTIONS) const activeRealRows = records(activeContainers).filter((item) => item.containerNo === realContainerNo) context.assert(MODULE, '关联后列表仅保留模拟柜原地补全的一条 ACTIVE 操作身份', activeContainersResponse, @@ -589,7 +590,7 @@ export async function run(context) { `taskId=${taskId || 'missing'}, itemId=${id(pickItem?.id) || 'missing'}`, OPTIONS) if (!taskId || !pickItem?.id) return - const releasedContainerResponse = await context.request('GET', `${CONTAINERS}/${containerId}`) + const releasedContainerResponse = await context.request('GET', `${DOMESTIC_CONTAINERS}/${containerId}`) const releasedContainer = context.apiSuccess(MODULE, '任务生成后回查货柜运输版本', releasedContainerResponse, '', OPTIONS) const stableIdentity = { diff --git a/scripts/admin-test-env-modules/phase3-container-regression-contract.test.mjs b/scripts/admin-test-env-modules/phase3-container-regression-contract.test.mjs index 6b84c01a5..470927645 100644 --- a/scripts/admin-test-env-modules/phase3-container-regression-contract.test.mjs +++ b/scripts/admin-test-env-modules/phase3-container-regression-contract.test.mjs @@ -20,9 +20,16 @@ const truckForm = read(`${adminRoot}trucking/components/TruckAppointmentForm.vue const containerList = read(`${adminRoot}container-loading/pages/ContainersView.vue`) const containerOverviewPanel = read(`${adminRoot}container-loading/components/ContainerOverviewPanel.vue`) const containerLoadingAcceptance = read('phase3-container-loading.mjs') +const phase3LoadingAcceptance = read('phase3-loading.mjs') const truckAcceptance = read('truck-appointments.mjs') const matrix = read('../../../docs/国内货柜履约/货柜管理全链验收矩阵-2026-08-13.md') +test('container acceptance reads the canonical domestic workbench route', () => { + assert.match(containerLoadingAcceptance, /const DOMESTIC_CONTAINERS = `\$\{CONTAINERS\}\/domestic`/) + assert.doesNotMatch(containerLoadingAcceptance, /request\('GET', `\$\{CONTAINERS\}\/\$\{containerId\}`\)/) + assert.match(phase3LoadingAcceptance, /\/api\/platform\/v1\/containers\/domestic\/\$\{containerBookingId\}/) +}) + test('DRAFT stores all five transport fields and release validates the persisted snapshot', () => { assert.match(oceanOpenApi, /ReleaseRequest: \{type: object, required: \[expectedVersion\]/) for (const field of ['billOfLadingNo', 'vesselName', 'voyageNo', 'estimatedSailingAt', 'estimatedArrivalAt']) { diff --git a/scripts/admin-test-env-modules/phase3-loading.mjs b/scripts/admin-test-env-modules/phase3-loading.mjs index bf4cce2c6..7a0653e84 100644 --- a/scripts/admin-test-env-modules/phase3-loading.mjs +++ b/scripts/admin-test-env-modules/phase3-loading.mjs @@ -506,7 +506,7 @@ export async function run(context) { && Boolean(requirement?.id) && (!bookingConfirmed?.containers || bookingConfirmed.containers.length === 0), `bookingId=${bookingId || 'missing'}, status=${bookingConfirmed?.oceanBooking?.status || 'missing'}`, OPTIONS) if (!bookingId || !requirement?.id || !frozenTransportMatches) return - const latestContainerResponse = await context.request('GET', `/api/platform/v1/containers/${containerBookingId}`) + const latestContainerResponse = await context.request('GET', `/api/platform/v1/containers/domestic/${containerBookingId}`) const latestContainer = context.apiSuccess(MODULE, '合并前读取模拟柜最新版本', latestContainerResponse, '', OPTIONS) const linkResponse = await request(context, 'POST', `/api/platform/v1/containers/${containerBookingId}/ocean-booking-link`, { oceanBookingId: bookingId, requirementId: id(requirement.id),