From f0777ba2dbe586f27df30c2b5823335d24447fcf Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Sat, 3 Oct 2026 23:10:44 +0800 Subject: [PATCH] fix(delivery): expose nullable actual signed quantity to clients --- src/modules/order-management/api/deliveryOrders.ts | 1 + src/modules/order-management/deliveryOrders.test.mjs | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/modules/order-management/api/deliveryOrders.ts b/src/modules/order-management/api/deliveryOrders.ts index 1598108..a4859b6 100644 --- a/src/modules/order-management/api/deliveryOrders.ts +++ b/src/modules/order-management/api/deliveryOrders.ts @@ -49,6 +49,7 @@ export interface DeliveryRow { driverName: string | null palletCount: number packageCount: number + signedPackages: number | null totalWeightKg: number | null totalVolumeCbm: number | null plannedDeliveryAt: string diff --git a/src/modules/order-management/deliveryOrders.test.mjs b/src/modules/order-management/deliveryOrders.test.mjs index ded9b86..e321608 100644 --- a/src/modules/order-management/deliveryOrders.test.mjs +++ b/src/modules/order-management/deliveryOrders.test.mjs @@ -18,6 +18,18 @@ async function importTypeScriptModule(source) { return import(`data:text/javascript;base64,${Buffer.from(compiled).toString('base64')}`) } +for (const signedPackages of [null, 0, 3]) test(`preserves actual signed quantity ${signedPackages} in merchant list and detail`, async () => { + const api = await importTypeScriptModule(apiSource.replace( + "import { apiBlobRequest, apiRequest } from '@/api/http'", + `const apiBlobRequest = async () => new Blob([]) + const order = { deliveryNo: 'DL-1', packageCount: 9, signedPackages: ${JSON.stringify(signedPackages)} } + const apiRequest = async (config) => config.url.endsWith('/DL-1') + ? { order, skus: [], fees: [] } : { records: [order], page: 1, size: 20, total: 1, pages: 1 }`, + )) + assert.equal((await api.listDeliveryOrders({ page: 1, size: 20 })).records[0].signedPackages, signedPackages) + assert.equal((await api.getDeliveryOrder('DL-1')).signedPackages, signedPackages) +}) + test('uses only authenticated merchant delivery endpoints without customer scope or mock fallback', () => { assert.match(apiSource, /method: 'GET'[\s\S]*url: '\/merchant\/v1\/last-leg\/delivery-orders'/) assert.match(apiSource, /delivery-orders\/\$\{encodeURIComponent\(deliveryNo\)\}/)