You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.0 KiB

"""
扫描相关的Pydantic模式
"""
from pydantic import BaseModel
from typing import Optional
from datetime import datetime
from app.models.scan import ScanStatus, ScanType
class ScanBase(BaseModel):
"""扫描基础模式"""
project_id: int
scan_type: ScanType = ScanType.FULL
scan_config: Optional[str] = None
class ScanCreate(ScanBase):
"""创建扫描模式"""
pass
class ScanResponse(ScanBase):
"""扫描响应模式"""
id: int
status: ScanStatus
total_files: int
scanned_files: int
total_vulnerabilities: int
started_at: Optional[datetime] = None
completed_at: Optional[datetime] = None
created_at: datetime
result_summary: Optional[str] = None
error_message: Optional[str] = None
class Config:
from_attributes = True
class ScanStatusResponse(BaseModel):
"""扫描状态响应模式"""
scan_id: int
status: str
progress: dict
started_at: Optional[datetime] = None
completed_at: Optional[datetime] = None
error_message: Optional[str] = None