Files
baiyue-firstleg/scripts/admin-test-env-modules/pda-loading-link-regression.mjs
T

47 lines
2.6 KiB
JavaScript
Raw Normal View History

2026-09-16 15:21:08 +08:00
import { runDomesticLinkRegression } from './dropship-pallet-matrix.mjs'
import { channelGroup } from './smart-loading-channel-group.mjs'
export const run = runDomesticLinkRegression
// All resources come from this run's HTTP producer. No direct database writes.
export async function exerciseOldCabinets({ context, group, pallets, command, check, rounds, active = false }) {
const summary = group[0].summary
const evidence = context.createdResources.pdaLoadingLinkRegression ||= { cabinets: [], scenarios: [] }
for (let round = 0; round < rounds; round++) {
const cabinet = await command('创建回归旧柜', 'POST', '/api/platform/v1/containers', {
channelGroupCode: channelGroup(summary.channelCode), warehouseId: String(summary.warehouseId),
containerType: '40HQ', capacityCbm: 68, maxWeightKg: 19500,
})
const smart = '/api/platform/v1/first-leg/smart-loading'
let plan = await command('读取回归旧柜计划', 'GET', `${smart}/plans/by-booking/${cabinet.id}`)
const path = `${smart}/plans/${plan.id}`
const record = { cabinetNo: cabinet.cabinetNo, cabinetId: cabinet.id, planId: plan.id, active, rounds: round + 1 }
evidence.cabinets.push(record)
for (const pallet of pallets) {
plan = await command('旧柜加入整托', 'POST', `${path}/pallet-assignments`, {
palletId: String(pallet.palletId), expectedVersion: Number(plan.version),
operationId: `${context.marker}-old-add-${plan.id}-${pallet.palletId}`,
})
}
check('旧柜真实加入箱数大于零', null, plan.items?.reduce((sum, i) => sum + Number(i.packageCount), 0) > 0)
if (!active) {
for (const pallet of pallets) {
plan = await command('旧柜全部移除整托', 'DELETE', `${path}/pallet-assignments/${pallet.palletId}`, {
expectedPlanVersion: Number(plan.version), operationId: `${context.marker}-old-del-${plan.id}-${pallet.palletId}`,
})
}
check('旧柜移除后没有有效明细', null, plan.items?.length === 0)
}
record.links = []
for (const item of group) {
const links = await command('回查旧柜关联及有效箱数', 'GET',
`/api/platform/v1/inbounds/${item.source.inboundId}/preload/loading-plans?tenantId=${item.order.tenantId}`)
const current = links.filter(link => String(link.loadingPlanId) === String(plan.id))
record.links.push(...current)
check('旧柜关联数量与真实分配一致', null, active
? current.some(link => Number(link.allocatedPackageCount) > 0)
: current.every(link => Number(link.allocatedPackageCount) === 0))
}
}
}