LegalLens-API / app /models /schemas.py
b24122
Set up core project files for legal case analysis API backend
9844436
from pydantic import BaseModel, Field
from typing import Dict, List, Any, Optional
class CaseAnalysisRequest(BaseModel):
caseText: str = Field(..., description="The legal case text to analyze", min_length=10)
useQueryGeneration: bool = Field(default=True, description="Whether to use Gemini for query generation in RAG")
class CaseAnalysisResponse(BaseModel):
initialVerdict: str = Field(..., description="Initial verdict from LegalBERT model")
initialConfidence: float = Field(..., description="Confidence score of initial verdict")
finalVerdict: Optional[str] = Field(None, description="Final verdict after Gemini evaluation")
verdictChanged: bool = Field(default=False, description="Whether the verdict was changed by Gemini")
searchQuery: str = Field(..., description="Query used for RAG retrieval")
geminiExplanation: Optional[str] = Field(None, description="Detailed explanation from Gemini AI")
supportingSources: Dict[str, List[Any]] = Field(default_factory=dict, description="Retrieved supporting legal documents")
analysisLogs: Dict[str, Any] = Field(default_factory=dict, description="Detailed analysis logs")
class HealthResponse(BaseModel):
status: str = Field(..., description="Overall health status")
services: Dict[str, bool] = Field(default_factory=dict, description="Status of individual services")
error: Optional[str] = Field(None, description="Error message if unhealthy")
class VerdictPrediction(BaseModel):
verdict: str = Field(..., description="Predicted verdict (guilty/not guilty)")
confidence: float = Field(..., description="Confidence score between 0 and 1")
class RAGRetrievalResult(BaseModel):
query: str = Field(..., description="Query used for retrieval")
supportChunks: Dict[str, List[Any]] = Field(..., description="Retrieved chunks by category")
logs: Dict[str, Any] = Field(default_factory=dict, description="Retrieval logs")
class GeminiEvaluationRequest(BaseModel):
inputText: str = Field(..., description="Original case text")
modelVerdict: str = Field(..., description="Initial model verdict")
confidence: float = Field(..., description="Confidence of initial verdict")
support: Dict[str, List[Any]] = Field(..., description="Supporting legal documents")
searchQuery: Optional[str] = Field(None, description="Search query used")
class GeminiEvaluationResponse(BaseModel):
finalVerdict: Optional[str] = Field(None, description="Final verdict from Gemini")
verdictChanged: str = Field(..., description="Whether verdict was changed")
explanation: str = Field(..., description="Detailed legal explanation")
relevantLaws: List[str] = Field(default_factory=list, description="Relevant laws identified")