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.

50 lines
1.4 KiB

"""
漏洞相关的Pydantic模式
"""
from pydantic import BaseModel
from typing import Optional
from datetime import datetime
from app.models.vulnerability import SeverityLevel, VulnerabilityCategory, VulnerabilityStatus
class VulnerabilityBase(BaseModel):
"""漏洞基础模式"""
rule_id: str
message: str
category: VulnerabilityCategory
severity: SeverityLevel
file_path: str
line_number: Optional[int] = None
column_number: Optional[int] = None
end_line: Optional[int] = None
end_column: Optional[int] = None
code_snippet: Optional[str] = None
context_before: Optional[str] = None
context_after: Optional[str] = None
ai_enhanced: bool = False
ai_confidence: Optional[float] = None
ai_suggestion: Optional[str] = None
class VulnerabilityCreate(VulnerabilityBase):
"""创建漏洞模式"""
scan_id: int
class VulnerabilityUpdate(BaseModel):
"""更新漏洞模式"""
status: Optional[VulnerabilityStatus] = None
assigned_to: Optional[str] = None
fix_commit: Optional[str] = None
class VulnerabilityResponse(VulnerabilityBase):
"""漏洞响应模式"""
id: int
scan_id: int
status: VulnerabilityStatus
assigned_to: Optional[str] = None
fix_commit: Optional[str] = None
created_at: datetime
updated_at: Optional[datetime] = None
fixed_at: Optional[datetime] = None
class Config:
from_attributes = True