Spaces:
Sleeping
Sleeping
File size: 3,717 Bytes
1cff1e5 03faf26 1cff1e5 03faf26 1cff1e5 03faf26 1cff1e5 15145f6 1cff1e5 15145f6 3d40e5f 15145f6 3d40e5f | 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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | from pydantic import BaseModel
from typing import Optional, List
class JobRoleCreate(BaseModel):
title: str
description: str
department: Optional[str] = None
class JobRoleUpdate(BaseModel):
title: Optional[str] = None
description: Optional[str] = None
department: Optional[str] = None
class JobRoleResponse(BaseModel):
id: str
title: str
description: str
department: Optional[str] = None
created_at: str
class QuestionCreate(BaseModel):
role_id: Optional[str] = None
topic_id: Optional[str] = None
interview_type: str = "resume"
question: str
difficulty: str = "medium"
category: Optional[str] = None
expected_answer: Optional[str] = None
class QuestionUpdate(BaseModel):
question: Optional[str] = None
difficulty: Optional[str] = None
category: Optional[str] = None
expected_answer: Optional[str] = None
class QuestionResponse(BaseModel):
id: str
role_id: Optional[str] = None
topic_id: Optional[str] = None
interview_type: str = "resume"
question: str
difficulty: str
category: Optional[str] = None
created_at: str
class TopicCreate(BaseModel):
name: str
description: Optional[str] = None
class TopicUpdate(BaseModel):
name: Optional[str] = None
description: Optional[str] = None
class TopicPublishUpdate(BaseModel):
is_published: bool
timer_enabled: Optional[bool] = None
timer_seconds: Optional[int] = None
class TopicResponse(BaseModel):
id: str
name: str
description: Optional[str] = None
created_at: str
class RoleRequirementCreate(BaseModel):
role_id: str
skill: str
level: str = "intermediate"
class GroupTestCreate(BaseModel):
name: str
description: Optional[str] = None
topic_ids: List[str]
time_limit_minutes: Optional[int] = None
max_attempts: int = 1
class GroupTestUpdate(BaseModel):
name: Optional[str] = None
description: Optional[str] = None
topic_ids: Optional[List[str]] = None
time_limit_minutes: Optional[int] = None
max_attempts: Optional[int] = None
class GroupTestPublishUpdate(BaseModel):
is_published: bool
class LinkTopicSessionRequest(BaseModel):
topic_id: str
session_id: str
class RoleRequirementResponse(BaseModel):
id: str
role_id: str
skill: str
level: str
# ββ Chatbot (legacy) ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
class ChatbotQueryRequest(BaseModel):
query: str
jd_id: Optional[str] = None
class ChatbotExportRequest(BaseModel):
rows: List[dict]
topic_columns: List[dict]
group_test_name: str
class ChatbotStudentUpdate(BaseModel):
user_id: str
reg_no: Optional[str] = None
name: Optional[str] = None
# ββ Structured Student Filter βββββββββββββββββββββββββββββββββββββββββββββββββ
class StudentFilterRequest(BaseModel):
group_test_ids: Optional[List[str]] = None # None = all tests
jd_id: Optional[str] = None
start_date: Optional[str] = None # "YYYY-MM-DD"
end_date: Optional[str] = None # "YYYY-MM-DD"
top_k: Optional[int] = None
min_score: Optional[float] = None
sort_fields: List[str] = ["time"] # ordered priority: "time"|"score"|"duration"
sort_orders: List[str] = ["desc"] # matching orders: "asc"|"desc"
class StudentFilterExportRequest(BaseModel):
rows: List[dict]
topic_columns: List[dict]
group_test_name: str
|