From 4d12b56cacc13076d368d12139d0fc8fdf4de801 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Wed, 21 Oct 2026 11:01:24 +0800 Subject: [PATCH] test(numbering): align return fixtures with receipt contract --- .../return-boundary-scenarios-contract.test.mjs | 8 +++++--- .../admin-test-env-modules/return-boundary-scenarios.mjs | 5 ++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/scripts/admin-test-env-modules/return-boundary-scenarios-contract.test.mjs b/scripts/admin-test-env-modules/return-boundary-scenarios-contract.test.mjs index e549cbfc0..527ebe52d 100644 --- a/scripts/admin-test-env-modules/return-boundary-scenarios-contract.test.mjs +++ b/scripts/admin-test-env-modules/return-boundary-scenarios-contract.test.mjs @@ -112,11 +112,13 @@ test('流水断言逐行核对归属和业务引用,不能仅凭合计相等 assert.equal(exactReceiptLedger(undefined, []), false) }) -test('真实退货验收检查五类完整编号且保留同键重放检查', async () => { +test('真实退货验收使用TH及RR和RB日流水并保留原箱码与重放检查', async () => { const source = await readFile(new URL('return-boundary-scenarios.mjs', import.meta.url), 'utf8') - for (const prefix of ['RT', 'RETU', 'RR', 'RB', 'RC']) { - assert.ok(source.includes(`/^${prefix}-[0-9A-Z]{25}$/`), prefix) + for (const prefix of ['TH', 'RR', 'RB']) { + assert.ok(source.includes(`/^${prefix}[0-9]{12}$/`), prefix) } + assert.ok(source.includes('data.order.lastlegOrderNo === data.order.returnNo')) + assert.ok(source.includes('/^RC-[0-9A-Z]{25}$/')) assert.ok(source.includes('同键并发合箱后重试仍返回原箱')) assert.ok(source.includes('签收重放不重复产生流水')) }) diff --git a/scripts/admin-test-env-modules/return-boundary-scenarios.mjs b/scripts/admin-test-env-modules/return-boundary-scenarios.mjs index c6f1e66d7..883b474b8 100644 --- a/scripts/admin-test-env-modules/return-boundary-scenarios.mjs +++ b/scripts/admin-test-env-modules/return-boundary-scenarios.mjs @@ -108,7 +108,10 @@ export async function runReturnBoundaries(context, { merchantToken, warehouse, p return { returnNo: data.order.returnNo, sku, skus: items.map(item => item.skuCode), quantity, token, warehouseId, unitCode: `PKG-${data.order.returnNo}` } } function receiptBody(order, quantity = order.quantity, idempotencyKey = key('RECEIPT')) { - return { returnNo: order.returnNo, startedBy: 'RETURN_NO', unitType: 'PARCEL', unitCode: order.unitCode, items: [{ skuCode: order.sku, receivedQuantity: quantity }], idempotencyKey } + // 合成包裹明确原包装选择与实测输入,使边界场景进入待验证的库存/并发规则。 + return { returnNo: order.returnNo, startedBy: 'RETURN_NO', unitType: 'PARCEL', unitCode: order.unitCode, + originalPackaging: true, length: 30, width: 20, height: 10, weight: 2, + items: [{ skuCode: order.sku, receivedQuantity: quantity }], idempotencyKey } } async function receive(order, operator = picker) { const data = await good(operator.token, 'POST', '准备边界场景实收库存', `${RECEIPTS}/confirm`, receiptBody(order))