""" Schemas Pydantic pour Grade. """ from datetime import datetime from typing import Optional, List from pydantic import Field from schemas.common import BaseSchema class GradeBase(BaseSchema): """Schema de base pour Grade.""" value: Optional[str] = None comment: Optional[str] = None class GradeRead(GradeBase): """Schema pour la lecture d'une note.""" id: int student_id: int grading_element_id: int class GradeWithDetails(GradeRead): """Schema avec détails de l'élève et de l'élément.""" student_name: str = "" element_label: str = "" element_max_points: float = 0 element_grading_type: str = "notes" class GradeCreate(BaseSchema): """Schema pour créer/modifier une note.""" student_id: int grading_element_id: int value: Optional[str] = None comment: Optional[str] = None class BulkGradeCreate(BaseSchema): """Schema pour créer plusieurs notes en une fois.""" grades: List[GradeCreate] class GradingGrid(BaseSchema): """Grille de notation pour une évaluation.""" assessment_id: int students: List[dict] # Liste des étudiants avec leurs infos grading_elements: List[dict] # Liste des éléments de notation grades: dict # Dict {student_id: {element_id: value}} class BulkGradeResponse(BaseSchema): """Schema de réponse pour la sauvegarde en lot de notes.""" saved_count: int updated_count: int created_count: int message: str = "" class GradeUpdate(BaseSchema): """Schema pour mettre à jour une note individuelle.""" value: Optional[str] = None comment: Optional[str] = None