From 789dc6a373e9524f6efd626f282f80e615428b3d Mon Sep 17 00:00:00 2001 From: 16337 <1633794139@qq.com> Date: Thu, 12 Feb 2026 14:57:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=91=8A=E8=AD=A6?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=88=B3=E6=A0=BC=E5=BC=8F=20-=20=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E5=BE=AE=E7=A7=92=E4=BF=9D=E6=8C=81=E4=B8=80=E8=87=B4?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题描述: - 告警结束时间显示过多小数位(如 2026-02-12T14:23:42.331566) - 与触发时间格式不一致(2026-02-12 14:23:24) 修改内容: 1. app/models.py - AlarmEvent.to_dict() 使用 strftime 格式化所有时间戳 - 统一格式为 'YYYY-MM-DD HH:MM:SS'(去除微秒和T分隔符) 2. app/services/alarm_event_service.py - resolve_alarm() 解析 last_frame_time 时去除微秒 - 确保数据库存储的时间戳格式一致 影响范围: - 告警事件API响应格式 - 前端显示更加简洁统一 Co-Authored-By: Claude Sonnet 4.5 --- app/models.py | 12 ++++++------ app/services/alarm_event_service.py | 7 ++++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/models.py b/app/models.py index 90d4f6e..714826c 100644 --- a/app/models.py +++ b/app/models.py @@ -295,9 +295,9 @@ class AlarmEvent(Base): "algorithm_code": self.algorithm_code, "device_id": self.device_id, "scene_id": self.scene_id, - "event_time": self.event_time.isoformat() if self.event_time else None, - "first_frame_time": self.first_frame_time.isoformat() if self.first_frame_time else None, - "last_frame_time": self.last_frame_time.isoformat() if self.last_frame_time else None, + "event_time": self.event_time.strftime('%Y-%m-%d %H:%M:%S') if self.event_time else None, + "first_frame_time": self.first_frame_time.strftime('%Y-%m-%d %H:%M:%S') if self.first_frame_time else None, + "last_frame_time": self.last_frame_time.strftime('%Y-%m-%d %H:%M:%S') if self.last_frame_time else None, "duration_ms": self.duration_ms, "alarm_level": self.alarm_level, "confidence_score": self.confidence_score, @@ -308,9 +308,9 @@ class AlarmEvent(Base): "edge_node_id": self.edge_node_id, "handler": self.handler, "handle_remark": self.handle_remark, - "handled_at": self.handled_at.isoformat() if self.handled_at else None, - "created_at": self.created_at.isoformat() if self.created_at else None, - "updated_at": self.updated_at.isoformat() if self.updated_at else None, + "handled_at": self.handled_at.strftime('%Y-%m-%d %H:%M:%S') if self.handled_at else None, + "created_at": self.created_at.strftime('%Y-%m-%d %H:%M:%S') if self.created_at else None, + "updated_at": self.updated_at.strftime('%Y-%m-%d %H:%M:%S') if self.updated_at else None, } diff --git a/app/services/alarm_event_service.py b/app/services/alarm_event_service.py index af83b48..7cbbd02 100644 --- a/app/services/alarm_event_service.py +++ b/app/services/alarm_event_service.py @@ -541,11 +541,12 @@ class AlarmEventService: alarm.duration_ms = duration_ms - # 解析 last_frame_time + # 解析 last_frame_time,去除微秒保持格式一致 try: - alarm.last_frame_time = datetime.fromisoformat(last_frame_time.replace("Z", "+00:00")) + parsed_time = datetime.fromisoformat(last_frame_time.replace("Z", "+00:00")) + alarm.last_frame_time = parsed_time.replace(microsecond=0) except Exception: - alarm.last_frame_time = datetime.now(timezone.utc) + alarm.last_frame_time = datetime.now(timezone.utc).replace(microsecond=0) # 如果是人员回岗,标记为自动关闭 if resolve_type == "person_returned":