File size: 1,541 Bytes
1cff1e5
 
 
 
 
 
03faf26
 
 
d50ee26
 
 
 
 
 
 
1cff1e5
 
 
 
 
 
 
 
03faf26
 
 
 
1cff1e5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
03faf26
 
 
 
 
 
1cff1e5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
from pydantic import BaseModel
from typing import Optional, List, Dict


class StartInterviewRequest(BaseModel):
    role_id: Optional[str] = None
    custom_role: Optional[str] = None
    interview_type: Optional[str] = "resume"
    topic_id: Optional[str] = None
    job_description_id: Optional[str] = None


class VerifyResumeJdRequest(BaseModel):
    role_id: Optional[str] = None
    custom_role: Optional[str] = None
    job_description_id: str


class SubmitAnswerRequest(BaseModel):
    session_id: str
    question_id: str
    answer: str


class QuitInterviewRequest(BaseModel):
    session_id: str


class InterviewQuestion(BaseModel):
    question_id: str
    question: str
    difficulty: str = "medium"
    question_number: int = 1
    total_questions: int = 10


class InterviewStartResponse(BaseModel):
    session_id: str
    question: InterviewQuestion
    message: str = "Interview started"


class AnswerResponse(BaseModel):
    session_id: str
    next_question: Optional[InterviewQuestion] = None
    is_complete: bool = False
    message: str = ""


class QuitInterviewResponse(BaseModel):
    session_id: str
    report_generated: bool = False
    message: str = ""


class QuestionScore(BaseModel):
    question: str
    answer: str
    score: int
    feedback: str


class InterviewReport(BaseModel):
    session_id: str
    overall_score: int
    total_questions: int
    strengths: List[str]
    weaknesses: List[str]
    detailed_scores: List[QuestionScore]
    recommendations: List[str]
    completed_at: str