fix PDA identity handling in phase3 loading

This commit is contained in:
2026-09-23 19:09:26 +08:00
parent 78bed591e0
commit 8baefb0511
@@ -99,7 +99,7 @@ export async function uploadEvidence(context, taskId, warehouseId, evidenceType,
form.append('file', new Blob([png], { type: 'image/png' }), fileName)
try {
const response = await fetch(`${context.options.gateway}${path}`, {
method: 'POST', headers: { Accept: 'application/json', Authorization: `Bearer ${context.token}`,
method: 'POST', headers: { Accept: 'application/json', Authorization: `Bearer ${context.pdaToken || context.token}`,
'Idempotency-Key': `${context.marker}-p3-evidence-${keySuffix}`.slice(0, 128) },
body: form, signal: AbortSignal.timeout(60_000),
})
@@ -692,7 +692,7 @@ export async function run(context) {
&& Number(confirmReplay.body?.data?.version) === Number(confirmed.version),
`HTTP=${confirmReplay.http}, code=${codeOf(confirmReplay)}, requestId=${confirmReplay.requestId || 'missing'}, traceId=${confirmReplay.traceId || 'missing'}`, OPTIONS)
const confirmSameKeyDifferentBody = await request(context, 'POST', confirmPath,
{ expectedVersion: Number(confirmed.version) }, confirmHeaders)
{ expectedVersion: Number(confirmed.version), assigneeId: id(pdaOperator.userId) }, confirmHeaders)
context.addStep(MODULE, '计划级确认同 key 异参返回冲突', confirmSameKeyDifferentBody,
confirmSameKeyDifferentBody.http === 200 && codeOf(confirmSameKeyDifferentBody) === 'A0409',
`HTTP=${confirmSameKeyDifferentBody.http}, code=${codeOf(confirmSameKeyDifferentBody)}, requestId=${confirmSameKeyDifferentBody.requestId || 'missing'}, traceId=${confirmSameKeyDifferentBody.traceId || 'missing'}`, OPTIONS)
@@ -724,7 +724,7 @@ export async function run(context) {
context.assert(MODULE, '柜次 PDA 任务与桥接入库明细一致', canonicalTaskResponse,
Boolean(canonicalTaskId) && canonicalTaskId === confirmedTaskId && id(canonicalTask?.loadingPlanId) === loadingPlanId
&& id(canonicalTask?.containerBookingId) === containerBookingId
&& canonicalTask?.workflowStatus === 'UNASSIGNED' && canonicalPickItems.length > 0,
&& canonicalTask?.workflowStatus === 'IN_PROGRESS' && canonicalPickItems.length > 0,
`taskId=${canonicalTaskId || 'missing'}, itemCount=${canonicalPickItems.length}`, OPTIONS)
if (!canonicalTaskId || !canonicalPickItems.length) return
@@ -920,9 +920,12 @@ export async function run(context) {
&& Boolean(customerIsolatedSnapshot.requestId) && Boolean(customerIsolatedSnapshot.traceId),
`HTTP=${customerIsolatedSnapshot.http}, code=${codeOf(customerIsolatedSnapshot)}, requestId=${customerIsolatedSnapshot.requestId || 'missing'}, traceId=${customerIsolatedSnapshot.traceId || 'missing'}`, OPTIONS)
const currentAssigneeId = Number(claimed?.assignment?.assigneeId)
const currentAssigneeId = id(claimed?.assignment?.assigneeId)
const otherOperator = (Array.isArray(pdaOperators) ? pdaOperators : pdaOperators?.records || [])
.find((operator) => id(operator?.userId) !== currentAssigneeId)
if (!otherOperator?.userId) return
const reassigned = await request(context, 'POST', `${pdaBase}/tasks/${canonicalTaskId}/assign`, {
assigneeId: currentAssigneeId + 1000000, assigneeName: `${context.marker}-other-picker`,
assigneeId: id(otherOperator.userId), assigneeName: otherOperator.displayName || otherOperator.username || `${context.marker}-other-picker`,
expectedAssignmentVersion: Number(claimed?.assignment?.version),
operationId: `${context.marker}-bridge-assign-other`.slice(0, 128),
})