59 lines
2.3 KiB
Python
59 lines
2.3 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import Optional, List, Dict, Any
|
|
from datetime import datetime
|
|
|
|
class EventBase(BaseModel):
|
|
event_type: str = Field(..., description="事件类型")
|
|
device_id: int = Field(..., description="关联设备ID")
|
|
algorithm_id: Optional[int] = Field(None, description="关联算法ID")
|
|
severity: str = Field("medium", description="严重程度")
|
|
status: str = Field("pending", description="事件状态")
|
|
confidence: Optional[float] = Field(None, description="置信度")
|
|
bbox: Optional[str] = Field(None, description="边界框坐标")
|
|
image_path: Optional[str] = Field(None, description="事件图片路径")
|
|
video_path: Optional[str] = Field(None, description="事件视频路径")
|
|
description: Optional[str] = Field(None, description="事件描述")
|
|
location: Optional[str] = Field(None, description="事件发生位置")
|
|
detected_objects: Optional[str] = Field(None, description="检测到的对象")
|
|
processing_time: Optional[float] = Field(None, description="处理时间")
|
|
is_alert: bool = Field(False, description="是否触发告警")
|
|
alert_sent: bool = Field(False, description="是否已发送告警")
|
|
operator_id: Optional[int] = Field(None, description="处理人员ID")
|
|
resolution_notes: Optional[str] = Field(None, description="处理备注")
|
|
|
|
class EventCreate(EventBase):
|
|
pass
|
|
|
|
class EventUpdate(BaseModel):
|
|
event_type: Optional[str] = None
|
|
device_id: Optional[int] = None
|
|
algorithm_id: Optional[int] = None
|
|
severity: Optional[str] = None
|
|
status: Optional[str] = None
|
|
confidence: Optional[float] = None
|
|
bbox: Optional[str] = None
|
|
image_path: Optional[str] = None
|
|
video_path: Optional[str] = None
|
|
description: Optional[str] = None
|
|
location: Optional[str] = None
|
|
detected_objects: Optional[str] = None
|
|
processing_time: Optional[float] = None
|
|
is_alert: Optional[bool] = None
|
|
alert_sent: Optional[bool] = None
|
|
operator_id: Optional[int] = None
|
|
resolution_notes: Optional[str] = None
|
|
|
|
class EventResponse(EventBase):
|
|
id: int
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
resolved_at: Optional[datetime] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class EventListResponse(BaseModel):
|
|
events: List[EventResponse]
|
|
total: int
|
|
page: int
|
|
size: int |