Files
open-school/backend/app/schemas.py
2026-04-25 19:54:39 +02:00

97 lines
1.7 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 UserRead(BaseModel):
id: int
username: str
role: str
student_id: int | None = None
class Config:
from_attributes = True
class LoginRequest(BaseModel):
username: str = Field(..., min_length=1)
password: str = Field(..., min_length=1)
class LoginResponse(BaseModel):
access_token: str
token_type: str = "bearer"
user: UserRead
class ChatRequest(BaseModel):
student_id: int
message: str
class ChatResponse(BaseModel):
reply: str
should_speak: bool = True
class TTSProfile(BaseModel):
id: str
label: str
description: str
class TTSProfilesResponse(BaseModel):
profiles: List[TTSProfile]
class TTSRequest(BaseModel):
text: str = Field(..., min_length=1, max_length=4096)
profile_id: str = Field(..., min_length=1)
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