pkheria's picture
Initial commit
9ff81aa
Raw
History Blame Contribute Delete
1.99 kB
from pydantic import BaseModel, Field
from typing import List, Optional, Literal, Dict, Union
class UploadReq(BaseModel):
doc_name: str
doc_type: Literal["nda", "msa", "other"] = "nda"
class UploadResp(BaseModel):
uid: str
status: Literal["queued", "completed"]
message: Optional[str] = None
class Clause(BaseModel):
id: int
original_text: str
risk: Literal["red", "yellow", "green", "ghost"]
type: str
eli5: str
suggested_text: Optional[str] = None
start_idx: Optional[int] = None
end_idx: Optional[int] = None
class ResultResp(BaseModel):
uid: str
name: str
status: str
parties: Optional[List[str]] = None
clauses: List[Clause]
ghost_clauses: List[Clause] = Field(default_factory=list)
# Extended models for chatbot
class ClauseDetail(BaseModel):
clause_id: int
risk: str
original_text: str
eli5: str
rewrite_options: List[str]
ai_response: str
risk_after: str
next_actions: List[str]
legal_aids: List[Dict[str, str]]
video_script: Dict[str, Union[str, List[str]]]
banner: Optional[str] = None
class ChatRequest(BaseModel):
uid: str
question: str
session_id: Optional[str] = None
from pydantic import BaseModel
from typing import List
class NegotiateRequest(BaseModel):
uid: str # user id
clauseId: int # clause id
tone: str # friendly / firm / aggressive
origin: str # original clause text
risk: str # current risk level of the clause (red, yellow, green)
class NegotiateResponse(BaseModel):
rewritten_clause: str # include original clause in response for context
ai_explanation: str # explanation of suggested changes # AI-generated safer/better alternatives
risk_after: str # updated risk level after negotiation # possible next actions: Accept / Counter / Ask lawyer