Files
notytex/backend/schemas/grading.py
Bertrand Benjamin 2b08eb534a Migration v1 (Flask) -> v2 (FastAPI + Vue.js) complétée
 Changements majeurs:
- Suppression complète du code Flask legacy
- Migration backend FastAPI vers racine /backend
- Migration frontend Vue.js vers racine /frontend
- Suppression de notytex-v2/ (code monté à la racine)

 Validations:
- Backend démarre correctement (port 8000)
- API /api/v2/health répond healthy
- 99/99 tests unitaires passent
- Frontend configuré avec proxy Vite

📝 Documentation:
- README.md réécrit pour v2
- Instructions de démarrage mises à jour
- .gitignore adapté pour backend/frontend/

🎯 Architecture finale:
notytex/
├── backend/     # FastAPI + SQLAlchemy + Pydantic
├── frontend/    # Vue 3 + Vite + TailwindCSS
├── docs/        # Documentation
└── school_management.db  # Base de données (inchangée)

Jalon 6 complété: Application v2 prête pour utilisation!
2025-11-25 21:09:47 +01:00

75 lines
1.6 KiB
Python

"""
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