47 lines
2.6 KiB
JavaScript
47 lines
2.6 KiB
JavaScript
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))
|
|
}
|
|
}
|
|
}
|