test(phase3): validate multi-owner loaded slices

This commit is contained in:
2026-08-24 13:41:59 +08:00
parent 6ddf0d823b
commit 9dd2fcb7e5
4 changed files with 14 additions and 12 deletions
@@ -172,12 +172,14 @@ export async function run(context) {
&& id(item?.sourceOrderId) === id(loadedSlice?.sourceOrderId))
: null
const settlementMode = remainderSlice ? 'PARTIAL' : 'FULL'
context.assert(MODULE, '结算递增版本后实际完成分片唯一且柜次身份稳定', slicesResponse,
loadedSlices.length === 1 && Boolean(loadedSlice)
&& id(loadedSlice?.tenantId) === tenantId
&& id(loadedSlice?.containerBookingId) === containerBookingId
&& id(loadedSlice?.loadingPlanId) === loadingPlanId
&& Number.isInteger(Number(loadedSlice?.packageCount)) && Number(loadedSlice.packageCount) > 0,
const loadedSourceIds = loadedSlices.map((item) => id(item?.sourceOrderId)).filter(Boolean)
context.assert(MODULE, '结算后每个实装来源分片唯一且柜次身份稳定', slicesResponse,
loadedSlices.length > 0 && Boolean(loadedSlice)
&& new Set(loadedSourceIds).size === loadedSlices.length
&& loadedSlices.every((item) => id(item?.tenantId) === tenantId
&& id(item?.containerBookingId) === containerBookingId
&& id(item?.loadingPlanId) === loadingPlanId
&& Number.isInteger(Number(item?.packageCount)) && Number(item.packageCount) > 0),
`mode=${settlementMode}, loadedSlices=${loadedSlices.length}, sourceOrderId=${id(loadedSlice?.sourceOrderId) || 'missing'}, childOrderId=${id(loadedSlice?.childOrderId) || 'missing'}, packageCount=${loadedSlice?.packageCount ?? 'missing'}`, OPTIONS)
const unifiedDetailPath = `/api/platform/v1/orders/${encodeURIComponent(orderId)}?tenantId=${encodeURIComponent(tenantId)}`
@@ -223,9 +225,9 @@ export async function run(context) {
{ expectedTaskVersion: Number(completed?.version),
operationId: `${context.marker}-pda-final-complete-new-key`.slice(0, 128), remark: `${context.marker}-loaded-new-key` },
{ 'Idempotency-Key': `${context.marker}-p3-complete-loaded-new-key`.slice(0, 128) })
context.assert(MODULE, 'LOADED 后使用新键重复 complete 幂等保持终态', completeNewKey,
completeNewKey.http === 200 && codeOf(completeNewKey) === '200'
&& completeNewKey.body?.data?.taskStatus === 'COMPLETED',
context.assert(MODULE, 'LOADED 后使用新键重复 complete 返回冲突', completeNewKey,
completeNewKey.http === 200 && codeOf(completeNewKey) === 'A0409'
&& Boolean(completeNewKey.requestId) && Boolean(completeNewKey.traceId),
`HTTP=${completeNewKey.http}, code=${codeOf(completeNewKey)}, status=${completeNewKey.body?.data?.taskStatus || 'missing'}`, OPTIONS)
const completeSameKeyDifferentBody = await request(context, 'POST',