This commit is contained in:
2026-08-25 09:52:49 +08:00
parent b211121365
commit b67217332a
37 changed files with 1009 additions and 343 deletions
@@ -458,6 +458,32 @@ test('phase3 loading proves stale inventory zero-write and defers final completi
assert.doesNotMatch(loading, /complete-before-downstream/)
})
test('phase3 loading resolves legal SKIP and PARTIAL exceptions before downstream completion', () => {
const loading = source('./phase3-loading.mjs')
assertOrder(loading, [
'本轮增量 fixture 提供独立 SKIP 与 PARTIAL 合法货物明细',
'加入本轮待跳拣异常明细',
'SKIP 携带异常原因并原子解决待拣明细',
'合法 SKIP 保存零实拣事实并恢复 AWAITING_REVIEW',
'加入本轮部分拣货异常明细',
'未解决异常完成前读取 PDA 操作审计基线',
'存在未解决异常明细时禁止确认装柜完成',
'未解决异常完成失败后 task/items/operation 全部零写入',
'合法 PARTIAL 解决未完成明细',
'部分拣货数量守恒并恢复最终可确认状态',
'报关与最终完成前保持 LOADING 且不提前写 COMPLETE_LOADING',
])
assert.match(loading, /action: 'SKIP', version: Number\(skipTaskItem\?\.version\),\s*reason: skipReason/)
assert.match(loading, /skipReason = `\$\{context\.marker\}-箱唛破损待复核`/)
assert.match(loading, /itemStatus === 'SKIPPED'[\s\S]*pickedPackageCount\) === 0/)
assert.match(loading, /action: 'PARTIAL', finalPickedPackageCount: 1/)
assert.match(loading, /plannedPackageCount\) === 2[\s\S]*pickedPackageCount\) === 1/)
assert.match(loading, /String\(unresolvedComplete\.body\?\.message \|\| ''\)\.includes\('尚未处理'\)/)
assert.match(loading, /taskItemsSignature\(afterUnresolvedCompleteTask\) === taskItemsSignature\(unresolvedTask\)/)
assert.match(loading, /operationsSignature\(operationsAfterUnresolvedComplete\) === operationsSignature\(operationsBeforeUnresolvedComplete\)/)
assert.doesNotMatch(loading, /addCoverageGap\([^)]*(SKIP|PARTIAL|未解决异常)/)
})
test('phase3 loading fixture forces A0 through reversible public location status APIs', () => {
const entry = source('../admin-test-env-acceptance.mjs')
const measurement = source('./inbound-measurement.mjs')