65 lines
1.7 KiB
Python
65 lines
1.7 KiB
Python
from enum import Enum
|
|
from pydantic import BaseModel
|
|
from typing import Optional
|
|
from datetime import date, datetime
|
|
import uuid
|
|
|
|
|
|
class CompetencyRating(int, Enum):
|
|
NEEDS_IMPROVEMENT = 1
|
|
SATISFACTORY = 2
|
|
GOOD = 3
|
|
EXCELLENT = 4
|
|
|
|
|
|
class ReHireEligibility(str, Enum):
|
|
YES = "yes"
|
|
NO = "no"
|
|
CONDITIONAL = "conditional"
|
|
|
|
|
|
# SECTION 1: INFORMATION & RECORD OVERVIEW
|
|
class RecordOverview(BaseModel):
|
|
position_applied:Optional[str]=None
|
|
department_id:Optional[uuid.UUID]=None
|
|
department:Optional[str]=None
|
|
date_time:Optional[datetime]=None
|
|
|
|
|
|
# SECTION 2: EMPLOYMENT VERIFICATION & DUTIES
|
|
class EmploymentVerification(BaseModel):
|
|
confirmed_job_title:Optional[str]=None
|
|
confirmed_from:Optional[date]=None
|
|
confirmed_to:Optional[date]=None
|
|
reason_for_leaving:Optional[str]=None
|
|
|
|
|
|
# SECTION 3: one row of the competency grid (1-4 tick + Notes column)
|
|
class CompetencyScore(BaseModel):
|
|
rating:Optional[CompetencyRating]=None
|
|
notes:Optional[str]=None
|
|
|
|
|
|
class CompetencyEvaluation(BaseModel):
|
|
technical_knowledge:Optional[CompetencyScore]=None
|
|
reliability:Optional[CompetencyScore]=None
|
|
communication:Optional[CompetencyScore]=None
|
|
problem_solving:Optional[CompetencyScore]=None
|
|
|
|
|
|
# SECTION 4: QUALITATIVE EVALUATION & KEY INSIGHTS
|
|
class QualitativeEvaluation(BaseModel):
|
|
strengths:Optional[str]=None
|
|
areas_for_growth:Optional[str]=None
|
|
rehire_eligibility:Optional[ReHireEligibility]=None
|
|
rehire_comments:Optional[str]=None
|
|
|
|
|
|
# SECTION 5: REFEREE CONTACT & RELATIONSHIP VERIFICATION
|
|
class RefereeDetails(BaseModel):
|
|
full_name:Optional[str]=None
|
|
current_title:Optional[str]=None
|
|
company:Optional[str]=None
|
|
phone:Optional[str]=None
|
|
email:Optional[str]=None
|