File size: 1,420 Bytes
9df97a2 | 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 | from pydantic import BaseModel
from datetime import datetime
from typing import Optional, List, Dict
class CandidateBase(BaseModel):
full_name: str
email: str
phone: Optional[str] = None
linkedin_url: Optional[str] = None
github_url: Optional[str] = None
class CandidateCreate(CandidateBase):
cv_path: Optional[str] = None
raw_text: Optional[str] = None
class CandidateUpdate(BaseModel):
full_name: Optional[str] = None
email: Optional[str] = None
phone: Optional[str] = None
linkedin_url: Optional[str] = None
github_url: Optional[str] = None
cv_path: Optional[str] = None
raw_text: Optional[str] = None
class CandidateResponse(CandidateBase):
id: int
cv_path: Optional[str]
raw_text: Optional[str]
owner_role: Optional[str] = None
is_visible: bool = False
created_at: datetime
updated_at: Optional[datetime] = None
# NER Extraction Fields (Étape 5-6 Optimization)
extracted_name: Optional[str] = None
extracted_emails: Optional[str] = None
extracted_phones: Optional[str] = None
extracted_job_titles: Optional[str] = None
extracted_companies: Optional[str] = None
extracted_education: Optional[str] = None
extraction_quality_score: Optional[float] = 0.0
ner_extraction_data: Optional[str] = None
is_fully_extracted: Optional[bool] = False
class Config:
from_attributes = True |