fix(acceptance): preserve calculated dropship fees

This commit is contained in:
2026-09-09 01:09:31 +08:00
parent 0d73e185c0
commit 2abbb3cc8f
5 changed files with 37 additions and 20 deletions
@@ -25,15 +25,14 @@ async function listDetails(context, tenantId, inboundId, name) {
return { response, rows: Array.isArray(rows) ? rows : [] }
}
export async function run(context) {
const start = context.steps.length
const fixture = context.createdResources.inboundMeasurement
export async function ensureInitialCalculated(context, fixture,
options = { scenario: 'inbound-fee-initial-calculated', deploymentBlocker: true }) {
const tenantId = id(fixture?.tenantId)
const inboundId = id(fixture?.inboundId)
context.assert(MODULE, '复用本轮审核通过且进入 WAIT_SPLIT 的入库单', null,
Boolean(tenantId && inboundId && fixture?.finalStatus === 'APPROVED' && fixture?.processStatus === 'WAIT_SPLIT'),
`tenantId=${tenantId || 'missing'}, inboundId=${inboundId || 'missing'}, measurement=${fixture?.finalStatus || 'missing'}, process=${fixture?.processStatus || 'missing'}`, OPTIONS)
if (!tenantId || !inboundId) { finish(context, start); return }
`tenantId=${tenantId || 'missing'}, inboundId=${inboundId || 'missing'}, measurement=${fixture?.finalStatus || 'missing'}, process=${fixture?.processStatus || 'missing'}`, options)
if (!tenantId || !inboundId) return null
const latestPath = `/api/platform/v1/inbounds/${encodeURIComponent(inboundId)}/fees/latest?tenantId=${encodeURIComponent(tenantId)}`
let initialResponse = await context.request('GET', latestPath)
@@ -42,12 +41,22 @@ export async function run(context) {
`/api/platform/v1/inbounds/${encodeURIComponent(inboundId)}/fees/calculate?tenantId=${encodeURIComponent(tenantId)}`,
undefined, undefined, requestHeaders(`${context.marker}-inbound-fee-initial-calculate`))
}
const initial = context.apiSuccess(MODULE, '读取或补齐审核后初始费用', initialResponse, '', OPTIONS)
const initial = context.apiSuccess(MODULE, '读取或补齐审核后初始费用', initialResponse, '', options)
context.assert(MODULE, '初始费用保持 WAIT_SPLIT 且尚未发布', initialResponse,
initial?.feeStatus === 'CALCULATED' && initial?.nextProcessStatus === 'WAIT_SPLIT'
&& Number(initial?.feeVersion) >= 1 && money(initial?.totalAmount) >= 0,
`feeId=${id(initial?.feeId) || 'missing'}, version=${initial?.feeVersion ?? 'missing'}, status=${initial?.feeStatus || 'missing'}, process=${initial?.nextProcessStatus || 'missing'}`, OPTIONS)
if (!initial?.feeId || initial?.feeStatus !== 'CALCULATED') { finish(context, start); return }
`feeId=${id(initial?.feeId) || 'missing'}, version=${initial?.feeVersion ?? 'missing'}, status=${initial?.feeStatus || 'missing'}, process=${initial?.nextProcessStatus || 'missing'}`, options)
return initial?.feeId && initial?.feeStatus === 'CALCULATED'
? { initial, initialResponse, tenantId, inboundId }
: null
}
export async function run(context) {
const start = context.steps.length
const fixture = context.createdResources.inboundMeasurement
const prepared = await ensureInitialCalculated(context, fixture, OPTIONS)
if (!prepared) { finish(context, start); return }
const { initial, initialResponse, tenantId, inboundId } = prepared
const initialDetails = await listDetails(context, tenantId, inboundId, '查询初始费用派生明细')
const initialDerived = initialDetails.rows.find((row) => row.sourceType === 'FBA_PRICING'