This commit is contained in:
2026-08-13 11:57:33 +08:00
parent 5a48992d78
commit 16dc03a2e2
102 changed files with 3656 additions and 120 deletions
@@ -66,7 +66,7 @@ async function prepareInbound(context, label) {
await measurement.run(context)
const measured = context.createdResources.inboundMeasurement
const order = context.createdResources.orders
if (!measured?.inboundId || !measured?.tenantId) throw new Error(`${label} 未生成独立 INBOUNDED 入库单`)
if (!measured?.inboundId || !measured?.tenantId) throw new Error(`${label} 未生成独立 WAIT_SPLIT 入库单`)
return { marker: fixtureMarker, tenantId: id(measured.tenantId), inboundId: id(measured.inboundId),
orderId: id(order?.orderId) }
} finally {
@@ -88,29 +88,13 @@ async function readInbound(context, fixture) {
const value = context.apiSuccess(MODULE, '读取人工装柜独立入库单', response, '', OPTIONS)
const warehouseId = id(value?.summary?.warehouseId)
context.assert(MODULE, '人工装柜来源入库单可独立排柜', response,
value?.summary?.processStatus === 'INBOUNDED' && value?.summary?.measureReviewStatus === 'APPROVED'
['WAIT_SPLIT', 'INBOUNDED'].includes(value?.summary?.processStatus)
&& value?.summary?.measureReviewStatus === 'APPROVED'
&& Boolean(warehouseId),
`inboundId=${fixture.inboundId}, status=${value?.summary?.processStatus || 'missing'}`, OPTIONS)
return { ...fixture, detail: value, warehouseId }
}
async function createWaitingContainer(context, warehouseId, label) {
const value = suffix(context, label)
const response = await context.request('POST', CONTAINERS, {
containerNo: null, cabinetNo: `MAN-CAB-${value}`, warehouseId, warehouseName: '人工验收仓',
billOfLadingNo: null, vesselName: null, voyageNo: null, containerType: '40HQ',
shippingCompanyId: null, shippingCompanyName: null, departurePortCode: 'CNSZX',
departurePortName: '深圳', destinationPortCode: 'USLAX', destinationPortName: '洛杉矶',
destinationWarehouseCode: null, destinationWarehouseName: null, capacityCbm: 68,
maxWeightKg: 28000, terminalTruckingCompany: null, loadingAt: null,
estimatedSailingAt: null, actualSailingAt: null, estimatedPortArrivalAt: null,
actualPortArrivalAt: null, estimatedWarehouseArrivalAt: null, actualWarehouseArrivalAt: null,
})
const container = context.apiSuccess(MODULE, `创建 ${label} 货柜`, response, '', OPTIONS)
if (!container?.id) throw new Error(`${label} 货柜创建失败`)
return container
}
async function createConfirmedContainer(context, source, label) {
const value = suffix(context, label)
const summary = source.detail.summary
@@ -195,7 +179,7 @@ async function pickAll(context, chain, label) {
const snapshot = context.apiSuccess(MODULE, `${label} 获取 PDA 库存快照`, snapshotResponse, '', OPTIONS)
const response = await post(context, `${PDA}/tasks/${chain.task.id}/batch`, {
warehouseId: chain.source.warehouseId, loadingPlanId: id(chain.task.loadingPlanId),
containerBookingId: chain.containerId, containerNo: chain.task.currentContainerNo || null,
containerBookingId: chain.containerId,
expectedVersion: Number(chain.task.version), inventorySnapshotToken: snapshot.snapshotToken,
items: chain.task.items.map((item) => ({ itemId: id(item.id), action: 'PICK',
pickedPackageCount: Number(item.plannedPackageCount), finalPickedPackageCount: null,
@@ -317,10 +301,10 @@ export async function run(context, matrix = context.createdResources.manualState
requiredActions: ['customsDeclaration'], fixtures: {}, actions: {} }
matrix.pages.pdaTasks = { requiredStatuses: PDA_STATUSES, fixtures: {} }
const warehouseId = '193000000000200001'
const waiting = await createWaitingContainer(context, warehouseId, 'WAIT')
matrix.pages.containerLoading.fixtures.WAIT_LOADING = fixture(waiting.id, 'WAIT_LOADING',
`/container-loading?containerId=${id(waiting.id)}`)
const waitingSource = await readInbound(context, await prepareInbound(context, 'WAIT'))
const waitingContainerId = await createConfirmedContainer(context, waitingSource, 'WAIT')
matrix.pages.containerLoading.fixtures.WAIT_LOADING = fixture(waitingContainerId, 'WAIT_LOADING',
`/container-loading?containerId=${waitingContainerId}`)
const editing = await createPlanTask(context, 'EDIT')
const inProgress = await claim(context, await createPlanTask(context, 'PROGRESS'), 'PROGRESS')