From 2b889b99d6582d091c74b013953853d3027e67c7 Mon Sep 17 00:00:00 2001 From: duxingchen Date: Tue, 1 Sep 2026 15:25:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20webhook=20=E5=8C=B9=E9=85=8D=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20external=5Fserial=20=E5=A4=96=E9=83=A8=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E5=BA=8F=E5=88=97=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - mom-inbound/mom-outbound 用 or_ 双字段联合匹配 serial_number 与 external_serial - MOM 推送 ceshi123 等自定义序列号时也能精准认领产品并闭环状态 --- backend/app/api/v1/endpoints/webhooks.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/backend/app/api/v1/endpoints/webhooks.py b/backend/app/api/v1/endpoints/webhooks.py index b60a76e..6fa4f6a 100644 --- a/backend/app/api/v1/endpoints/webhooks.py +++ b/backend/app/api/v1/endpoints/webhooks.py @@ -46,13 +46,16 @@ async def mom_inbound_webhook( if not settings.TRACK_WEBHOOK_KEY or x_api_key != settings.TRACK_WEBHOOK_KEY: raise HTTPException(status_code=401, detail="Unauthorized: invalid X-API-Key") - # ── 按 serial_number(优先)或 sku 匹配"当前位于仓库"的产品 ── + # ── 按 serial_number / external_serial(双字段联合)或 sku 匹配"当前位于仓库"的产品 ── product = None if payload.serial_number: product = ( await db.execute( select(Product).where( - Product.serial_number == payload.serial_number, + or_( + Product.serial_number == payload.serial_number, + Product.external_serial == payload.serial_number, + ), Product.current_location_id == "virtual_warehouse", ) ) @@ -151,7 +154,10 @@ async def mom_outbound_webhook( product = ( await db.execute( select(Product).where( - Product.serial_number == payload.serial_number, + or_( + Product.serial_number == payload.serial_number, + Product.external_serial == payload.serial_number, + ), where_cond, ) )