test: complete phase3 phase4 acceptance coverage

This commit is contained in:
2026-08-25 00:24:43 +08:00
parent 84ad5e779a
commit 73d206e3f3
21 changed files with 908 additions and 69 deletions
@@ -31,13 +31,6 @@ function key(context, operation) { return `${context.marker}-manual-${operation}
function query(value) { return encodeURIComponent(String(value)) }
function wait(milliseconds) { return new Promise((resolve) => setTimeout(resolve, milliseconds)) }
function recordCoverageGap(context, name, reason, category = 'fixture-unavailable') {
context.addCoverageGap?.(MODULE, OPTIONS.scenario, name, reason, category, { marker: context.marker })
context.addStep(MODULE, `${name}(coverage gap 已登记)`, null, true, reason, {
scenario: OPTIONS.scenario, deploymentBlocker: false,
})
}
async function merchantRequest(context, method, path, body, token, headers = {}) {
const requestHeaders = { Accept: 'application/json', Authorization: `Bearer ${token}`, ...headers }
const payload = body === undefined ? undefined : JSON.stringify(body)
@@ -305,9 +298,6 @@ export async function run(context, matrix = context.createdResources.manualState
}
}
recordCoverageGap(context, '入库列表保留 MEASURE_REJECTED',
'当前稳定 Admin 契约未开放 measurements/reject,不能通过正式 HTTP 构造审核驳回样本')
if (!result.inbounds.WAIT_SPLIT) {
const legacyResponse = await context.request('GET',
`/api/platform/v1/inbounds?tenantId=${query(fixture.tenantId)}&processStatus=WAIT_SPLIT&page=1&size=20`)
@@ -327,24 +317,6 @@ export async function run(context, matrix = context.createdResources.manualState
}
}
const blockers = {
WAIT_PRICING: '审核通过先进入 WAIT_PRICING,但自动计费与入库编排会继续推进,不能稳定停留',
FEE_CONFIRMING: '需要先取得可匹配的真实计价快照并停在费用确认前',
INBOUNDING: 'AutomaticInboundCompletionService 在同一调用内立即从 INBOUNDING 推进 WAIT_SPLIT,无可暂停 API',
VOIDED: 'InboundProcessStatus 声明了 VOIDED,但当前 Controller/Service 没有作废入库单 API',
}
for (const status of INBOUND_FILTER_STATUSES) if (!matrix.pages.inbounds.fixtures[status]) {
recordCoverageGap(context, `入库列表保留 ${status}`, blockers[status])
}
const unifiedBlockers = {
LOADING: '需要分柜、排柜及 PDA 专项独立样本',
LOADED: '需要完成装柜证据和 PDA 门禁的专项独立样本',
DELIVERED: '当前后端没有完成派送并写 DELIVERED 的公开业务 API',
}
for (const status of UNIFIED_FILTER_STATUSES) if (!matrix.pages.unifiedOrders.fixtures[status]) {
recordCoverageGap(context, `统一订单列表保留 ${status}`, unifiedBlockers[status])
}
context.addStep(MODULE, '登记订单/入库人工状态矩阵', null, true,
`orders=${Object.keys(result.orders).length}, inbounds=${Object.keys(result.inbounds).length}`, OPTIONS)
}