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
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
|