from pydantic import BaseModel, Field from typing import List, Optional, Any, Dict class Experience(BaseModel): start: Optional[str] = Field(None, description="Start date in ISO String YYYY-MM-DDTHH:mm:ss.sssZ format") end: Optional[str] = Field(None, description="End date in ISO String YYYY-MM-DDTHH:mm:ss.sssZ format") designation: str = Field(...) company: str = Field(...) experience_description: str = Field(...) class Education(BaseModel): start: Optional[str] = Field(None, description="Start date in ISO String YYYY-MM-DDTHH:mm:ss.sssZ format") end: Optional[str] = Field(None, description="End date in ISO String YYYY-MM-DDTHH:mm:ss.sssZ format") major: str = Field(...) campus: str = Field(...) gpa: int = Field(None, description="Get the two most significant digit then times by 100, for example 3.41 become 341") class CVExtracted(BaseModel): name: str = Field(...) skills: List[str] = Field(...) links: List[str] = Field(...) achievements: List[str] = Field(...) experiences: List[Experience] = Field(...) educations: List[Education] = Field(...) class InsertedText(BaseModel): text: str class CVToClassify(BaseModel): educations: List[dict[str, Any]] skills: List[str] experiences: List[dict[str, Any]] location: str class JobToClassify(BaseModel): minYoE: int jobDesc: str skills: List[str] role: str majors: List[str] location: str class Weight(BaseModel): exp: float position: float major: float skills: float diffYoe: float location: float class JobAndCV(BaseModel): cv: CVToClassify job: JobToClassify weight: Weight class ClassificationResult(BaseModel): score: float class InsertedLink(BaseModel): link: str class Evaluation(BaseModel): score: float = Field(None, description="Float range between [0,1]") judgement: str = Field(None, description="Give judgement about the score of the interview evaluation.") class Evaluations(BaseModel): value: list[Evaluation] = Field(...) class EvaModul(BaseModel): competences: list[str] transcript: list[list[Dict[str,str]]] lang: str = Field(...) class EvalResult(BaseModel): final_score: float details: list[Evaluation]