24 lines
1.5 KiB
Python
24 lines
1.5 KiB
Python
![]() |
from sqlalchemy import Column, String, Text, Boolean, Integer, Float, DateTime, JSON
|
|||
|
from .base import BaseModel
|
|||
|
|
|||
|
class Event(BaseModel):
|
|||
|
__tablename__ = "events"
|
|||
|
|
|||
|
event_type = Column(String(50), nullable=False, comment="事件类型: person_detection, vehicle_detection, intrusion, etc")
|
|||
|
device_id = Column(Integer, nullable=False, comment="关联设备ID")
|
|||
|
algorithm_id = Column(Integer, comment="关联算法ID")
|
|||
|
severity = Column(String(20), default="medium", comment="严重程度: low, medium, high, critical")
|
|||
|
status = Column(String(20), default="pending", comment="事件状态: pending, processing, resolved, ignored")
|
|||
|
confidence = Column(Float, comment="置信度")
|
|||
|
bbox = Column(Text, comment="边界框坐标,JSON格式: [x, y, width, height]")
|
|||
|
image_path = Column(String(500), comment="事件图片路径")
|
|||
|
video_path = Column(String(500), comment="事件视频路径")
|
|||
|
description = Column(Text, comment="事件描述")
|
|||
|
location = Column(String(200), comment="事件发生位置")
|
|||
|
detected_objects = Column(Text, comment="检测到的对象,JSON格式")
|
|||
|
processing_time = Column(Float, comment="处理时间(ms)")
|
|||
|
is_alert = Column(Boolean, default=False, comment="是否触发告警")
|
|||
|
alert_sent = Column(Boolean, default=False, comment="是否已发送告警")
|
|||
|
operator_id = Column(Integer, comment="处理人员ID")
|
|||
|
resolution_notes = Column(Text, comment="处理备注")
|
|||
|
resolved_at = Column(DateTime, comment="解决时间")
|