Files
AIRegulation-DocAnalysis/backend/app/schemas/compliance.py

82 lines
1.8 KiB
Python

"""Define schema models for compliance."""
from pydantic import BaseModel
from typing import Optional
from enum import Enum
# Group related schema definitions so validation rules stay consistent.
class RiskLevel(str, Enum):
"""Define the Risk Level enumeration."""
high = "high"
medium = "medium"
low = "low"
class ComplianceStatus(str, Enum):
"""Define the Compliance Status enumeration."""
pass_status = "pass"
warning = "warning"
fail = "fail"
class Regulation(BaseModel):
"""Define the Regulation API model."""
id: int
name: str
clause: Optional[str] = None
score: float
match_keyword: str
category: RiskLevel
full_content: str
class ComplianceSegment(BaseModel):
"""Define the Compliance Segment API model."""
id: int
index: int
intent: str
start_pos: int
end_pos: int
content: str
risk_level: RiskLevel
regulations: list[Regulation]
class RiskDashboard(BaseModel):
"""Define the Risk Dashboard API model."""
score: float
high_risk_count: int
medium_risk_count: int
low_risk_count: int
need_fix_segments: int
status: ComplianceStatus
status_label: str
class PriorityAction(BaseModel):
"""Define the Priority Action API model."""
regulation: str
issue: str
suggestion: str
severity: RiskLevel
class ComplianceResult(BaseModel):
"""Define the Compliance Result API model."""
task_id: str
dashboard: RiskDashboard
segments: list[ComplianceSegment]
priority_actions: list[PriorityAction]
class ComplianceChatRequest(BaseModel):
"""Define the Compliance Chat Request API model."""
query: str
class AnalyzeResponse(BaseModel):
"""Define the Analyze Response API model."""
task_id: str
status: str = "processing"