test(firstleg): correct mixed customs completion probe

This commit is contained in:
2026-08-28 22:54:23 +08:00
parent 7f565a24d6
commit 969ff05815
3 changed files with 22 additions and 13 deletions
@@ -246,9 +246,7 @@ async function runMixedConcurrency(context, routes, fixture) {
&& merchant.body.data.inbounds.every((item) => item.taxMode === 'TAX_REFUND')
&& !merchant.body.data.inbounds.some((item) => fixture.buyInboundIds.includes(id(item.inboundId))),
evidence(merchant), OPTIONS)
const merchantPlatform = await context.request('GET',
`/api/platform/v1/customs/loading-plans/${encodeURIComponent(id(fixture.loadingPlanId))}`,
undefined, customer.customerToken)
const merchantPlatform = await routes.merchantPlatformDetail(context, fixture)
context.assert(MODULE, 'Client身份禁止读取平台整柜报关入口', merchantPlatform,
merchantPlatform?.http === 403 || (merchantPlatform?.http === 200
&& ['A0401', 'A0403', 'S0503'].includes(code(merchantPlatform))),
@@ -312,20 +310,26 @@ async function runMixedConcurrency(context, routes, fixture) {
await assertZeroDrift(context, '开始后资料范围锁定A0409零漂移', routes, fixture, { body: { data: frozen } }, locked)
const completionRequest = {
documentId: customer.documentId, expectedVersion: customer.documentVersion,
documentId: customer.documentId, expectedVersion: 0,
finalConfirmation: true, fileName: `${context.marker}-mixed-result.done`,
contentType: 'application/x-customs-completion', content: Uint8Array.from([0x52, 0x45, 0x53]),
}
const completionKey = key(context, 'mixed-completion')
const completions = await Promise.all([
routes.platformUploadCompletion(context, fixture, completionRequest, completionKey),
routes.platformUploadCompletion(context, fixture, completionRequest, completionKey),
])
context.assert(MODULE, '最后一份TAX完成文件并发同键收敛同一结果', completions[1],
completions.every(success)
&& id(completions[0].body?.data?.documentId) === id(completions[1].body?.data?.documentId)
&& id(completions[0].body?.data?.completion?.fileId) === id(completions[1].body?.data?.completion?.fileId),
completions.map((response) => evidence(response)).join('; '), OPTIONS)
const completion = await routes.platformUploadCompletion(context, fixture, completionRequest, completionKey)
const completionReplay = success(completion)
? await routes.platformUploadCompletion(context, fixture, completionRequest, completionKey) : null
const completionConverged = success(completion) && success(completionReplay)
&& id(completion.body?.data?.documentId) === id(completionReplay.body?.data?.documentId)
&& id(completion.body?.data?.completion?.fileId) === id(completionReplay.body?.data?.completion?.fileId)
context.assert(MODULE, '最后一份TAX完成文件二次确认并同键重放', completionReplay || completion,
completionConverged,
[completion, completionReplay].filter(Boolean).map((response) => evidence(response)).join('; '), OPTIONS)
if (!completionConverged) {
context.addCoverageGap(MODULE, OPTIONS.scenario, '最后一份完成文件二次确认',
'完成文件未成功或同键重放未收敛,已停止后续自动离仓写入',
'completion-idempotency', { deploymentBlocker: true })
return
}
const completionDifferent = await routes.platformUploadCompletion(context, fixture,
{ ...completionRequest, content: Uint8Array.from([0x44, 0x49, 0x46]) }, completionKey)
context.assert(MODULE, '完成文件同键异载荷A0409', completionDifferent,