File size: 2,040 Bytes
8b7e8f0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | from pydantic import BaseModel, Field
from typing import List, Optional, Dict, Any
from datetime import datetime
from enum import Enum
class DocumentType(str, Enum):
RENTAL = "rental"
LOAN = "loan"
EMPLOYMENT = "employment"
SERVICE = "service"
NDA = "nda"
OTHER = "other"
class RiskLevel(str, Enum):
LOW = "low"
MEDIUM = "medium"
HIGH = "high"
CRITICAL = "critical"
class RiskCategory(str, Enum):
FINANCIAL = "financial"
COMMITMENT = "commitment"
RIGHTS = "rights"
STANDARD = "standard"
class ClausePosition(BaseModel):
start_index: int
end_index: int
page_number: Optional[int] = None
class RiskFactor(BaseModel):
id: str
clause_text: str
category: RiskCategory
severity: RiskLevel
explanation: str
suggestion: Optional[str] = None
position: Optional[ClausePosition] = None
class DocumentAnalysis(BaseModel):
document_id: str
document_type: DocumentType
risk_score: int = Field(ge=0, le=100)
summary: str
simplified_text: str
risk_factors: List[RiskFactor] = []
key_dates: List[Dict[str, Any]] = []
financial_terms: Dict[str, Any] = {}
created_at: datetime = Field(default_factory=datetime.now)
class Document(BaseModel):
id: str
filename: str
file_path: str
document_type: Optional[DocumentType] = None
file_size: int
upload_timestamp: datetime = Field(default_factory=datetime.now)
analysis: Optional[DocumentAnalysis] = None
processed: bool = False
class QASession(BaseModel):
id: str
document_id: str
question: str
answer: str
timestamp: datetime = Field(default_factory=datetime.now)
confidence_score: Optional[float] = None
class SimplificationRequest(BaseModel):
text: str
context: Optional[str] = None
document_type: Optional[DocumentType] = None
class SimplificationResponse(BaseModel):
original_text: str
simplified_text: str
key_points: List[str] = []
jargon_definitions: Dict[str, str] = {}
|