From dd86da5bcdf99744145b0becc08556e3fc6d8650 Mon Sep 17 00:00:00 2001 From: 16337 <1633794139@qq.com> Date: Wed, 18 Mar 2026 16:39:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=9A=E5=91=8A=E8=AD=A6?= =?UTF-8?q?=E7=BA=A7=E5=88=AB=E4=BD=93=E7=B3=BB=E7=BB=9F=E4=B8=80=E4=B8=BA?= =?UTF-8?q?=200=E7=B4=A7=E6=80=A5/1=E9=87=8D=E8=A6=81/2=E6=99=AE=E9=80=9A/?= =?UTF-8?q?3=E8=BD=BB=E5=BE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更新 API 接口、Schema 验证、报告生成、企微通知的级别映射, 与前端和边缘端保持一致。 Co-Authored-By: Claude Opus 4.6 (1M context) --- app/routers/yudao_aiot_alarm.py | 4 ++-- app/schemas.py | 2 +- app/services/report_generator.py | 2 +- app/services/wechat_service.py | 8 ++++---- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/routers/yudao_aiot_alarm.py b/app/routers/yudao_aiot_alarm.py index bea78da..35cf7c4 100644 --- a/app/routers/yudao_aiot_alarm.py +++ b/app/routers/yudao_aiot_alarm.py @@ -50,7 +50,7 @@ async def _alarm_to_camel(alarm_dict: dict, camera_info_map: dict = None, camera # alarm_level int → 文本映射 alarm_level = alarm_dict.get("alarm_level") - level_map = {1: "low", 2: "medium", 3: "high", 4: "critical"} + level_map = {0: "critical", 1: "high", 2: "medium", 3: "low"} level_str = level_map.get(alarm_level, "medium") if alarm_level else "medium" # alarm_status → 前端 status 映射 @@ -148,7 +148,7 @@ async def get_alert_page( edgeNodeId: Optional[str] = Query(None, description="边缘节点ID"), alarmType: Optional[str] = Query(None, alias="alertType", description="告警类型"), alarmStatus: Optional[str] = Query(None, alias="status", description="告警状态"), - alarmLevel: Optional[int] = Query(None, description="告警级别: 1提醒/2一般/3严重/4紧急"), + alarmLevel: Optional[int] = Query(None, description="告警级别: 0紧急/1重要/2普通/3轻微"), startTime: Optional[datetime] = Query(None, description="开始时间"), endTime: Optional[datetime] = Query(None, description="结束时间"), service: AlarmEventService = Depends(get_alarm_event_service), diff --git a/app/schemas.py b/app/schemas.py index 03485e7..d93de8a 100644 --- a/app/schemas.py +++ b/app/schemas.py @@ -120,7 +120,7 @@ class EdgeAlarmReport(BaseModel): device_id: str = Field(..., max_length=64, description="摄像头/设备ID") scene_id: Optional[str] = Field(None, max_length=64, description="场景/ROI ID") event_time: str = Field(..., description="事件发生时间 ISO8601") - alarm_level: int = Field(2, ge=1, le=4, description="告警级别: 1提醒 2一般 3严重 4紧急") + alarm_level: int = Field(2, ge=0, le=3, description="告警级别: 0紧急 1重要 2普通 3轻微") snapshot_url: Optional[str] = Field(None, max_length=512, description="截图 COS object_key") algorithm_code: Optional[str] = Field(None, max_length=64, description="算法编码") confidence_score: Optional[float] = Field(None, ge=0, le=1, description="置信度 0-1") diff --git a/app/services/report_generator.py b/app/services/report_generator.py index bad04c0..7f45029 100644 --- a/app/services/report_generator.py +++ b/app/services/report_generator.py @@ -17,7 +17,7 @@ from app.utils.timezone import beijing_now TYPE_NAMES = {"leave_post": "人员离岗", "intrusion": "周界入侵"} -LEVEL_NAMES = {1: "提醒", 2: "一般", 3: "严重", 4: "紧急"} +LEVEL_NAMES = {0: "紧急", 1: "重要", 2: "普通", 3: "轻微"} STATUS_NAMES = { "NEW": "待处理", "CONFIRMED": "已确认", "FALSE": "误报", "CLOSED": "已关闭", diff --git a/app/services/wechat_service.py b/app/services/wechat_service.py index b97f202..9ce75a2 100644 --- a/app/services/wechat_service.py +++ b/app/services/wechat_service.py @@ -23,7 +23,7 @@ ALARM_TYPE_NAMES = { } # 告警级别映射 -ALARM_LEVEL_NAMES = {1: "提醒", 2: "一般", 3: "严重", 4: "紧急"} +ALARM_LEVEL_NAMES = {0: "紧急", 1: "重要", 2: "普通", 3: "轻微"} class WeChatService: @@ -210,7 +210,7 @@ class WeChatService: access_token = await self._get_access_token() type_name = ALARM_TYPE_NAMES.get(alarm_type, alarm_type) - level_name = ALARM_LEVEL_NAMES.get(alarm_level, "一般") + level_name = ALARM_LEVEL_NAMES.get(alarm_level, "普通") msg = { "touser": "|".join(user_ids), @@ -221,7 +221,7 @@ class WeChatService: "task_id": alarm_id, "source": { "desc": "AI安防告警", - "desc_color": 3 if alarm_level >= 3 else 0, + "desc_color": 3 if alarm_level <= 1 else 0, }, "main_title": { "title": f"【{level_name}】{type_name}告警", @@ -595,7 +595,7 @@ class WeChatService: return False type_name = ALARM_TYPE_NAMES.get(alarm_type, alarm_type) - level_name = ALARM_LEVEL_NAMES.get(alarm_level, "一般") + level_name = ALARM_LEVEL_NAMES.get(alarm_level, "普通") success = True # ---- 1. 发送告警截图(image 消息) ----