fix(dropship): serialize outbound creation and pick exact carton subsets

This commit is contained in:
2026-09-15 11:42:19 +08:00
parent 88e2fb0eb1
commit 3ebe254c45
10 changed files with 155 additions and 16 deletions
@@ -65,11 +65,19 @@ export async function outboundCreationGuards(edge) {
export async function outboundTaskGuards(edge) {
const before = await taskSnapshot(edge)
const changed = await request(edge, 'POST', `${BASE}/one-click-dropship?customerId=${edge.customerId}`,
{ ...edge.body, recipient: `${edge.body.recipient}-changed` })
record(edge, '出库创建同键异载荷返回A0409', changed, changed.body?.code === 'A0409')
edge.check(`${edge.label}同键异载荷后出库事实零漂移`, null,
JSON.stringify(before) === JSON.stringify(await taskSnapshot(edge)))
const first = edge.body.items[0]
const changedBodies = [
['收件人', { ...edge.body, recipient: `${edge.body.recipient}-changed` }],
['备注', { ...edge.body, remark: `${edge.body.remark || ''}-changed` }],
['明细', { ...edge.body, items: [{ ...first, packages: first.packages + 1 }, ...edge.body.items.slice(1)] }],
['箱唛', { ...edge.body, items: [{ ...first, cartonMarks: [`CHANGED-${edge.context.marker}`, ...first.cartonMarks.slice(1)] }, ...edge.body.items.slice(1)] }],
]
for (const [field, body] of changedBodies) {
const changed = await request(edge, 'POST', `${BASE}/one-click-dropship?customerId=${edge.customerId}`, body)
record(edge, `出库创建同键异载荷返回A0409:${field}`, changed, changed.body?.code === 'A0409')
edge.check(`${edge.label}同键修改${field}后出库事实零漂移`, null,
JSON.stringify(before) === JSON.stringify(await taskSnapshot(edge)))
}
const path = `/api/pda/v1/last-leg/outbound-tasks/${edge.task.taskNo}`
const incomplete = await request(edge, 'POST', `${path}/complete`,
{ idempotencyKey: `${edge.body.idempotencyKey}-incomplete` }, true)