from datetime import datetime from typing import Optional, List from pydantic import BaseModel, Field # ------------------------------ # 请求模型 # ------------------------------ class DeviceDangerCreateRequest(BaseModel): """设备危险记录创建请求模型""" client_ip: str = Field(..., max_length=100, description="设备IP地址(必须与devices表中IP对应)") type: str = Field(..., max_length=50, description="危险类型(如:病毒检测、端口异常、权限泄露等)") result: str = Field(..., description="危险检测结果/处理结果(如:检测到木马病毒,已隔离;端口22异常开放,已关闭)") # ------------------------------ # 响应模型 # ------------------------------ class DeviceDangerResponse(BaseModel): """单条设备危险记录响应模型(与device_danger表字段对齐,updated_at允许为null)""" id: int = Field(..., description="危险记录主键ID") client_ip: str = Field(..., max_length=100, description="设备IP地址") type: str = Field(..., max_length=50, description="危险类型") result: str = Field(..., description="危险检测结果/处理结果") created_at: datetime = Field(..., description="记录创建时间(危险发生/检测时间)") updated_at: Optional[datetime] = Field(None, description="记录更新时间(数据库中该字段当前为null)") model_config = {"from_attributes": True} class DeviceDangerListResponse(BaseModel): """设备危险记录列表响应模型(带分页)""" total: int = Field(..., description="危险记录总数") dangers: List[DeviceDangerResponse] = Field(..., description="设备危险记录列表")