From ea599ed999481e561eba3d5713919a831e9e9786 Mon Sep 17 00:00:00 2001 From: 16337 <1633794139@qq.com> Date: Tue, 24 Feb 2026 13:51:23 +0800 Subject: [PATCH] =?UTF-8?q?refactor(alarm):=20=E7=BB=9F=E4=B8=80=E6=91=84?= =?UTF-8?q?=E5=83=8F=E5=A4=B4=E5=90=8D=E7=A7=B0=E6=98=BE=E7=A4=BA=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 变更: - 统一格式为:camera_code 摄像头名称/stream - 示例:cam_c51ce410c124 大堂吧台1/008 修改内容: 1. 告警列表页面 (_alarm_to_camel) - 提取 cameraCode、摄像头名称、stream - 组合为统一格式 2. 设备汇总页面 (get_device_summary_page) - 使用相同的统一格式逻辑 - 保证两个页面显示一致 测试结果: - 告警列表: cam_1f0e3dad9990 → cam_1f0e3dad9990 大堂吧台3/012 ✓ - 设备汇总: cam_c51ce410c124 → cam_c51ce410c124 大堂吧台1/008 ✓ --- app/routers/yudao_aiot_alarm.py | 44 ++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/app/routers/yudao_aiot_alarm.py b/app/routers/yudao_aiot_alarm.py index 934cbec..7406bd9 100644 --- a/app/routers/yudao_aiot_alarm.py +++ b/app/routers/yudao_aiot_alarm.py @@ -61,7 +61,7 @@ async def _alarm_to_camel(alarm_dict: dict, current_user: dict = None) -> dict: alarm_id = alarm_dict.get("alarm_id") - # 查询摄像头名称(三级 fallback 策略) + # 查询摄像头名称(统一格式:camera_code 摄像头名称/stream) device_id = alarm_dict.get("device_id") device_name = device_id # 默认使用 device_id @@ -69,16 +69,24 @@ async def _alarm_to_camel(alarm_dict: dict, current_user: dict = None) -> dict: try: camera_info = await _get_camera_info(device_id, current_user) if camera_info: - # 1. 优先使用 gb_name(去除 "/" 后缀) + # 获取摄像头中文名称(三级 fallback) + camera_cn_name = None gb_name = camera_info.get("gbName") or camera_info.get("gb_name") if gb_name: - device_name = gb_name.split("/")[0] - # 2. 其次使用 name 字段 + camera_cn_name = gb_name.split("/")[0] elif camera_info.get("name"): - device_name = camera_info.get("name") - # 3. 最后才使用 app 字段 + camera_cn_name = camera_info.get("name") elif camera_info.get("app"): - device_name = camera_info.get("app") + camera_cn_name = camera_info.get("app") + + # 统一格式:camera_code 摄像头名称/stream + camera_code = camera_info.get("cameraCode") or camera_info.get("camera_code") + stream = camera_info.get("stream") + + if camera_code and camera_cn_name and stream: + device_name = f"{camera_code} {camera_cn_name}/{stream}" + elif camera_cn_name: + device_name = camera_cn_name except Exception as e: logger.warning(f"告警列表查询摄像头信息失败: device_id={device_id}, error={e}") @@ -272,20 +280,28 @@ async def get_device_summary_page( device_id = item.get("deviceId") device_name = device_id # 默认使用 device_id - # 尝试从 WVP 查询摄像头名称(三级 fallback 策略) + # 尝试从 WVP 查询摄像头名称(统一格式:camera_code 摄像头名称/stream) try: camera_info = await _get_camera_info(device_id, current_user) if camera_info: - # 1. 优先使用 gb_name(去除 "/" 后缀) + # 获取摄像头中文名称(三级 fallback) + camera_cn_name = None gb_name = camera_info.get("gbName") or camera_info.get("gb_name") if gb_name: - device_name = gb_name.split("/")[0] - # 2. 其次使用 name 字段 + camera_cn_name = gb_name.split("/")[0] elif camera_info.get("name"): - device_name = camera_info.get("name") - # 3. 最后才使用 app 字段(通常等于 camera_code) + camera_cn_name = camera_info.get("name") elif camera_info.get("app"): - device_name = camera_info.get("app") + camera_cn_name = camera_info.get("app") + + # 统一格式:camera_code 摄像头名称/stream + camera_code = camera_info.get("cameraCode") or camera_info.get("camera_code") + stream = camera_info.get("stream") + + if camera_code and camera_cn_name and stream: + device_name = f"{camera_code} {camera_cn_name}/{stream}" + elif camera_cn_name: + device_name = camera_cn_name except Exception as e: logger.warning(f"查询摄像头信息失败: device_id={device_id}, error={e}")