File size: 1,043 Bytes
c01955c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from pydantic import BaseModel, Field
from typing import List, Optional

class Skill(BaseModel):
    score: Optional[int] = Field(None, ge=0, le=10)
    feedback: Optional[str]

class Performance(BaseModel):
    overallScore: int = Field(..., ge=0, le=10, description="Overall performance score")
    verdict: str = Field(..., description="Hire decision", pattern="^(hire|maybe|reject)$")
    summaryFeedback: str

    skills: Optional[dict] = Field(
        default_factory=lambda: {
            "technical": Skill(),
            "dsa": Skill(),
            "problemSolving": Skill(),
            "communication": Skill(),
            "systemDesign": Skill(),
            "projects": Skill(),
            "behaviour": Skill(),
        }
    )

    strengths: Optional[List[str]] = []
    weaknesses: Optional[List[str]] = []
    practiceRecommendations: Optional[List[str]] = []
    studyRecommendations: Optional[List[str]] = []
    lowPriorityOrAvoid: Optional[List[str]] = []

    confidenceLevel: Optional[int] = Field(None, ge=0, le=10)