fix(acceptance): complete overseas fulfillment closure

This commit is contained in:
2026-09-09 00:25:34 +08:00
parent 094d9c1e81
commit 7e76fed728
12 changed files with 70 additions and 27 deletions
@@ -250,13 +250,30 @@ export async function run(context) {
outbound.data?.outbound?.outboundNo === outboundNo && outbound.data?.outbound?.status === 'OUTBOUNDED',
trace(outbound.response), OPTIONS)
const deliveryBeforeStatus = await platform(context, 'GET', '读取派送状态更新即时版本',
query(`${LASTLEG_BASE}/delivery-orders/${encodeURIComponent(deliveryNo)}`, { customerId }))
const deliveryVersion = Number(deliveryBeforeStatus.data?.order?.version)
context.assert(MODULE, '派送详情提供状态乐观锁版本', deliveryBeforeStatus.response,
Number.isInteger(deliveryVersion) && deliveryVersion >= 0,
`version=${deliveryBeforeStatus.data?.order?.version ?? 'missing'}; ${trace(deliveryBeforeStatus.response)}`, OPTIONS)
if (!Number.isInteger(deliveryVersion) || deliveryVersion < 0) return
const delivering = await platform(context, 'PUT', '派送单推进配送中',
query(`${LASTLEG_BASE}/delivery-orders/${encodeURIComponent(deliveryNo)}/status`, { customerId }),
{ status: 'DELIVERING', remark: `${context.marker}-delivering` })
{ status: 'DELIVERING', expectedVersion: deliveryVersion, remark: `${context.marker}-delivering` })
context.assert(MODULE, '派送状态进入DELIVERING', delivering.response,
delivering.data?.deliveryStatus === 'DELIVERING', trace(delivering.response), OPTIONS)
if (!success(delivering.response)) return
const deliveryBeforeComplete = await platform(context, 'GET', '读取派送完成即时版本',
query(`${LASTLEG_BASE}/delivery-orders/${encodeURIComponent(deliveryNo)}`, { customerId }))
const completeVersion = Number(deliveryBeforeComplete.data?.order?.version)
context.assert(MODULE, '配送中详情版本已递增', deliveryBeforeComplete.response,
Number.isInteger(completeVersion) && completeVersion > deliveryVersion,
`before=${deliveryVersion}, after=${deliveryBeforeComplete.data?.order?.version ?? 'missing'}; ${trace(deliveryBeforeComplete.response)}`,
OPTIONS)
if (!Number.isInteger(completeVersion) || completeVersion <= deliveryVersion) return
const completed = await platform(context, 'POST', '确认派送完成并生成客户回访',
query(`${LASTLEG_BASE}/delivery-orders/${encodeURIComponent(deliveryNo)}/complete`, { customerId }))
query(`${LASTLEG_BASE}/delivery-orders/${encodeURIComponent(deliveryNo)}/complete`, { customerId }),
{ status: 'DELIVERED', expectedVersion: completeVersion, remark: `${context.marker}-delivered` })
const visitId = id(completed.data?.visitId)
context.assert(MODULE, '派送完成生成PENDING回访记录', completed.response,
completed.data?.deliveryStatus === 'DELIVERED' && completed.data?.visitStatus === 'PENDING'
@@ -264,7 +281,8 @@ export async function run(context) {
if (!success(completed.response) || !visitId) return
context.createdResources.phase5OverseasFulfillment.visitId = visitId
const completeReplay = await platform(context, 'POST', '确认派送完成重复调用',
query(`${LASTLEG_BASE}/delivery-orders/${encodeURIComponent(deliveryNo)}/complete`, { customerId }))
query(`${LASTLEG_BASE}/delivery-orders/${encodeURIComponent(deliveryNo)}/complete`, { customerId }),
{ status: 'DELIVERED', expectedVersion: completeVersion, remark: `${context.marker}-delivered` })
context.assert(MODULE, '派送完成重放复用同一回访', completeReplay.response,
completeReplay.data?.replayed === true && id(completeReplay.data?.visitId) === visitId,
trace(completeReplay.response), OPTIONS)