61 lines
1.0 KiB
Python
61 lines
1.0 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import List
|
|
|
|
|
|
class StudentCreate(BaseModel):
|
|
first_name: str = Field(..., min_length=1)
|
|
age: int = Field(..., ge=8, le=12)
|
|
grade: str
|
|
|
|
|
|
class StudentRead(BaseModel):
|
|
id: int
|
|
first_name: str
|
|
age: int
|
|
grade: str
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class ChatRequest(BaseModel):
|
|
student_id: int
|
|
message: str
|
|
|
|
|
|
class ChatResponse(BaseModel):
|
|
reply: str
|
|
should_speak: bool = True
|
|
|
|
|
|
class SkillProgress(BaseModel):
|
|
code: str
|
|
subject: str
|
|
label: str
|
|
mastery_score: float
|
|
confidence: float
|
|
evidence_count: int
|
|
|
|
|
|
class ProgressResponse(BaseModel):
|
|
student: StudentRead
|
|
progress: List[SkillProgress]
|
|
|
|
|
|
class AssessmentQuestionResponse(BaseModel):
|
|
skill_code: str
|
|
skill_label: str
|
|
question: str
|
|
|
|
|
|
class AssessmentAnswerRequest(BaseModel):
|
|
student_id: int
|
|
skill_code: str
|
|
answer: str
|
|
|
|
|
|
class AssessmentAnswerResponse(BaseModel):
|
|
correct: bool
|
|
feedback: str
|
|
mastery_score: float
|