fix(aiot): 修复告警汇总摄像头名称显示问题 - 三级fallback策略
问题:告警汇总页面显示camera_code(cam_1f0e3dad9990)而非中文名称 根因:从WVP查询摄像头信息后,使用了错误的fallback顺序 - 旧逻辑:优先app → name → device_id - app字段通常等于camera_code,导致显示技术编号 修复:采用与WVP AiAlertMapper相同的三级fallback策略 1. gb_name去除"/"后缀(如果有) 2. name字段 3. app字段(最后才用) 影响文件: - app/routers/yudao_aiot_alarm.py:247-268
This commit is contained in:
@@ -250,11 +250,20 @@ async def get_device_summary_page(
|
|||||||
device_id = item.get("deviceId")
|
device_id = item.get("deviceId")
|
||||||
device_name = device_id # 默认使用 device_id
|
device_name = device_id # 默认使用 device_id
|
||||||
|
|
||||||
# 尝试从 WVP 查询摄像头名称
|
# 尝试从 WVP 查询摄像头名称(三级 fallback 策略)
|
||||||
try:
|
try:
|
||||||
camera_info = await _get_camera_info(device_id, current_user)
|
camera_info = await _get_camera_info(device_id, current_user)
|
||||||
if camera_info:
|
if camera_info:
|
||||||
device_name = camera_info.get("app") or camera_info.get("name") or device_id
|
# 1. 优先使用 gb_name(去除 "/" 后缀)
|
||||||
|
gb_name = camera_info.get("gbName") or camera_info.get("gb_name")
|
||||||
|
if gb_name:
|
||||||
|
device_name = gb_name.split("/")[0]
|
||||||
|
# 2. 其次使用 name 字段
|
||||||
|
elif camera_info.get("name"):
|
||||||
|
device_name = camera_info.get("name")
|
||||||
|
# 3. 最后才使用 app 字段(通常等于 camera_code)
|
||||||
|
elif camera_info.get("app"):
|
||||||
|
device_name = camera_info.get("app")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"查询摄像头信息失败: device_id={device_id}, error={e}")
|
logger.warning(f"查询摄像头信息失败: device_id={device_id}, error={e}")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user