fix(scripts): read container workbench payload

This commit is contained in:
2026-09-08 23:11:49 +08:00
parent 00990fedcc
commit 735b5abdcc
5 changed files with 19 additions and 6 deletions
@@ -8,13 +8,22 @@ test('domestic container fixtures use the current workbench detail route', () =>
const containerLoading = read('./phase3-container-loading.mjs')
assert.ok(containerLoading.includes("context.request('GET', `${CONTAINERS}/domestic/${containerId}`)"))
assert.ok(!containerLoading.includes("context.request('GET', `${CONTAINERS}/${containerId}`)"))
assert.ok(containerLoading.includes('const containerDetail = containerWorkbench?.container'))
assert.ok(containerLoading.includes('const simulationBeforeLink = simulationWorkbench?.container'))
const loading = read('./phase3-loading.mjs')
assert.ok(loading.includes("context.request('GET', `/api/platform/v1/containers/domestic/${containerBookingId}`)"))
assert.ok(!loading.includes("context.request('GET', `/api/platform/v1/containers/${containerBookingId}`)"))
assert.ok(loading.includes('const latestContainer = latestWorkbench?.container'))
const crossRegion = read('./phase4-cross-region-events.mjs')
const fixtureId = 'encodeURIComponent(id(phase3.containerBookingId))'
assert.ok(crossRegion.includes(`/api/platform/v1/containers/domestic/\${${fixtureId}}`))
assert.ok(!crossRegion.includes(`/api/platform/v1/containers/\${${fixtureId}}`))
})
test('service center truck fixture uses the released booking warehouse', () => {
const source = read('./service-center-flow.mjs')
assert.ok(source.includes('warehouseId: id(booking?.warehouseId)'))
assert.ok(!source.includes('context.createdResources?.warehouse?.id'))
})
@@ -259,7 +259,8 @@ export async function run(context) {
}
const containerDetailResponse = await context.request('GET', `${CONTAINERS}/domestic/${containerId}`)
const containerDetail = context.apiSuccess(MODULE, '回查货柜详情', containerDetailResponse, '', OPTIONS)
const containerWorkbench = context.apiSuccess(MODULE, '回查货柜详情', containerDetailResponse, '', OPTIONS)
const containerDetail = containerWorkbench?.container
context.assert(MODULE, '货柜详情保留候选货物路线约束', containerDetailResponse,
(!containerDetail?.destinationWarehouseCode || !candidate.destinationWarehouseCode
|| containerDetail.destinationWarehouseCode === candidate.destinationWarehouseCode)
@@ -399,7 +400,8 @@ export async function run(context) {
if (!unlinkedTaskAbsent) return
const simulationBeforeLinkResponse = await context.request('GET', `${CONTAINERS}/domestic/${containerId}`)
const simulationBeforeLink = context.apiSuccess(MODULE, '预装确认前读取模拟柜最新版本', simulationBeforeLinkResponse, '', OPTIONS)
const simulationWorkbench = context.apiSuccess(MODULE, '预装确认前读取模拟柜最新版本', simulationBeforeLinkResponse, '', OPTIONS)
const simulationBeforeLink = simulationWorkbench?.container
if (!Number.isInteger(Number(simulationBeforeLink?.version))) return
const bookingCreate = await request(context, 'POST', '/api/platform/v1/ocean-bookings',
@@ -590,7 +592,8 @@ export async function run(context) {
if (!taskId || !pickItem?.id) return
const releasedContainerResponse = await context.request('GET', `${CONTAINERS}/domestic/${containerId}`)
const releasedContainer = context.apiSuccess(MODULE, '任务生成后回查货柜运输版本', releasedContainerResponse, '', OPTIONS)
const releasedWorkbench = context.apiSuccess(MODULE, '任务生成后回查货柜运输版本', releasedContainerResponse, '', OPTIONS)
const releasedContainer = releasedWorkbench?.container
const stableIdentity = {
taskId, loadingPlanId: id(task.loadingPlanId), containerBookingId: id(task.containerBookingId),
@@ -507,7 +507,8 @@ export async function run(context) {
`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/domestic/${containerBookingId}`)
const latestContainer = context.apiSuccess(MODULE, '合并前读取模拟柜最新版本', latestContainerResponse, '', OPTIONS)
const latestWorkbench = context.apiSuccess(MODULE, '合并前读取模拟柜最新版本', latestContainerResponse, '', OPTIONS)
const latestContainer = latestWorkbench?.container
const linkResponse = await request(context, 'POST', `/api/platform/v1/containers/${containerBookingId}/ocean-booking-link`, {
oceanBookingId: bookingId, requirementId: id(requirement.id),
...(LATE_CONTAINER_GATE_ONLY ? {} : { containerNo }),
@@ -71,6 +71,7 @@ test('records LOADED and clears the reason only after a real LOADED reread', ()
test('container loading follows push, claim, real pick, completed sequence', () => {
const value = source('./phase3-container-loading.mjs')
assert.match(value, /const containerDetail = containerWorkbench\?\.container/)
assert.match(value, /\['EDITING', 'WAIT_LOADING'\]\.includes\(containerDetail\?\.planStatus\)/)
assertOrder(value, [
"pushed?.status === 'EDITING'",
@@ -84,8 +84,7 @@ export async function run(context) {
const payload = {
outboundOrderId: null,
oceanBookingId: ocean.id,
warehouseId: id(containerFlow?.warehouseId
|| context.createdResources?.warehouse?.id || context.context?.warehouseId || '193000000000000001'),
warehouseId: id(booking?.warehouseId),
carrierId: id(carrier.id), carrierName: carrier.name,
fleetContact: '链路车队联系人', fleetPhone: '13800000007', driverName: '链路司机', driverPhone: '13800000008',
driverIdCard: null, vehicleNo: `粤D-${suffix.slice(-6)}`, storeName: `链路门店-${suffix}`, storeContact: '链路联系人',