first commit
This commit is contained in:
commit
7a72438fd1
74 changed files with 7548 additions and 0 deletions
BIN
backend/app/models/__pycache__/pronunciation.cpython-313.pyc
Normal file
BIN
backend/app/models/__pycache__/pronunciation.cpython-313.pyc
Normal file
Binary file not shown.
BIN
backend/app/models/__pycache__/question.cpython-313.pyc
Normal file
BIN
backend/app/models/__pycache__/question.cpython-313.pyc
Normal file
Binary file not shown.
BIN
backend/app/models/__pycache__/requirements.cpython-313.pyc
Normal file
BIN
backend/app/models/__pycache__/requirements.cpython-313.pyc
Normal file
Binary file not shown.
BIN
backend/app/models/__pycache__/resume.cpython-313.pyc
Normal file
BIN
backend/app/models/__pycache__/resume.cpython-313.pyc
Normal file
Binary file not shown.
BIN
backend/app/models/__pycache__/schedule.cpython-313.pyc
Normal file
BIN
backend/app/models/__pycache__/schedule.cpython-313.pyc
Normal file
Binary file not shown.
BIN
backend/app/models/__pycache__/user.cpython-313.pyc
Normal file
BIN
backend/app/models/__pycache__/user.cpython-313.pyc
Normal file
Binary file not shown.
13
backend/app/models/pronunciation.py
Normal file
13
backend/app/models/pronunciation.py
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
from pydantic import BaseModel
|
||||
from typing import List
|
||||
from datetime import datetime
|
||||
|
||||
class PronunciationItem(BaseModel):
|
||||
word: str
|
||||
phonetic: str
|
||||
syllables: List[str]
|
||||
definition: str
|
||||
|
||||
class PronunciationDB(PronunciationItem):
|
||||
id: str
|
||||
created_at: datetime
|
||||
22
backend/app/models/question.py
Normal file
22
backend/app/models/question.py
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
from pydantic import BaseModel
|
||||
from typing import List, Optional
|
||||
from datetime import datetime
|
||||
|
||||
class QuestionItem(BaseModel):
|
||||
question: str
|
||||
expected_answer: str
|
||||
hint: str
|
||||
difficulty: Optional[str] = "Medium"
|
||||
category: Optional[str] = "Technical"
|
||||
|
||||
class QuestionSetIn(BaseModel):
|
||||
resume_id: str
|
||||
requirement_id: str
|
||||
|
||||
class QuestionSetOut(BaseModel):
|
||||
id: str
|
||||
user_id: str
|
||||
resume_id: str
|
||||
requirement_id: str
|
||||
questions: List[QuestionItem]
|
||||
created_at: datetime
|
||||
18
backend/app/models/requirements.py
Normal file
18
backend/app/models/requirements.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
from pydantic import BaseModel, Field
|
||||
from typing import List, Optional
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class RequirementsIn(BaseModel):
|
||||
role_name: str
|
||||
experience_years: int = 0
|
||||
mandatory_skills: List[str] = []
|
||||
nice_to_have_skills: List[str] = []
|
||||
job_description: Optional[str] = None
|
||||
|
||||
|
||||
class RequirementsOut(RequirementsIn):
|
||||
id: str
|
||||
user_id: str
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
31
backend/app/models/resume.py
Normal file
31
backend/app/models/resume.py
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
from pydantic import BaseModel
|
||||
from typing import Optional, List
|
||||
from datetime import datetime
|
||||
from bson import ObjectId
|
||||
|
||||
|
||||
class ParsedResume(BaseModel):
|
||||
name: Optional[str] = None
|
||||
email: Optional[str] = None
|
||||
phone: Optional[str] = None
|
||||
linkedin: Optional[str] = None
|
||||
github: Optional[str] = None
|
||||
website: Optional[str] = None
|
||||
objective: Optional[str] = None
|
||||
skills: List[str] = []
|
||||
languages: List[str] = []
|
||||
interests: List[str] = []
|
||||
projects: List[dict] = []
|
||||
education: List[dict] = []
|
||||
experience: List[dict] = []
|
||||
raw_text: str = ""
|
||||
|
||||
|
||||
class ResumeOut(BaseModel):
|
||||
id: str
|
||||
filename: str
|
||||
file_type: str
|
||||
uploaded_by: str
|
||||
parsed: ParsedResume
|
||||
uploaded_at: str
|
||||
gridfs_id: Optional[str] = None
|
||||
22
backend/app/models/schedule.py
Normal file
22
backend/app/models/schedule.py
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
from pydantic import BaseModel, Field, EmailStr
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class ScheduleIn(BaseModel):
|
||||
resume_id: str
|
||||
candidate_email: EmailStr
|
||||
candidate_name: str
|
||||
interview_date: str # ISO string or YYYY-MM-DD
|
||||
interview_time: str # HH:MM AM/PM
|
||||
interview_type: str = "Technical" # Technical, HR, etc.
|
||||
meeting_link: Optional[str] = None
|
||||
notes: Optional[str] = None
|
||||
|
||||
|
||||
class ScheduleOut(ScheduleIn):
|
||||
id: str
|
||||
user_id: str
|
||||
status: str = "Scheduled" # Scheduled, Completed, Cancelled
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
19
backend/app/models/user.py
Normal file
19
backend/app/models/user.py
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
from pydantic import BaseModel, EmailStr
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class UserInDB(BaseModel):
|
||||
google_id: str
|
||||
email: EmailStr
|
||||
name: str
|
||||
picture: Optional[str] = None
|
||||
created_at: datetime = None
|
||||
last_login: datetime = None
|
||||
|
||||
|
||||
class UserOut(BaseModel):
|
||||
google_id: str
|
||||
email: str
|
||||
name: str
|
||||
picture: Optional[str] = None
|
||||
Loading…
Add table
Add a link
Reference in a new issue