From 0fbc1ca7a0f903e15d1892f1dc4b38951e0bc1f4 Mon Sep 17 00:00:00 2001 From: 16337 <1633794139@qq.com> Date: Mon, 9 Mar 2026 12:58:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20VLM=E5=A4=8D=E6=A0=B8=E5=89=8D=E5=B0=86C?= =?UTF-8?q?OS=20object=20key=E8=BD=AC=E4=B8=BA=E9=A2=84=E7=AD=BE=E5=90=8DU?= =?UTF-8?q?RL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit snapshot_url存储的是COS对象路径而非完整URL, VLM无法直接访问,需先生成预签名URL。 Co-Authored-By: Claude Opus 4.6 --- app/services/notify_dispatch.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/services/notify_dispatch.py b/app/services/notify_dispatch.py index 31117e9..99ccd25 100644 --- a/app/services/notify_dispatch.py +++ b/app/services/notify_dispatch.py @@ -47,8 +47,14 @@ async def process_alarm_notification(alarm_data: Dict): camera_name = alarm_data.get("camera_name", device_id) roi_name = alarm_data.get("scene_id", "") + # snapshot_url 可能是 COS object key,需转为可访问的预签名URL + vlm_snapshot_url = snapshot_url + if snapshot_url and not snapshot_url.startswith("http"): + from app.services.oss_storage import get_oss_storage + vlm_snapshot_url = get_oss_storage().get_presigned_url(snapshot_url) + vlm_result = await vlm_service.verify_alarm( - snapshot_url=snapshot_url, + snapshot_url=vlm_snapshot_url, alarm_type=alarm_type, camera_name=camera_name, roi_name=roi_name,