33 lines
1.7 KiB
Python
33 lines
1.7 KiB
Python
|
|
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="设备危险记录列表")
|