✨ 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!
39 lines
704 B
Python
39 lines
704 B
Python
"""
|
|
Schemas Pydantic communs.
|
|
"""
|
|
|
|
from datetime import date, datetime
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel, ConfigDict
|
|
|
|
|
|
class BaseSchema(BaseModel):
|
|
"""Base schema avec configuration commune."""
|
|
|
|
model_config = ConfigDict(
|
|
from_attributes=True,
|
|
populate_by_name=True,
|
|
)
|
|
|
|
|
|
class PaginationParams(BaseModel):
|
|
"""Paramètres de pagination."""
|
|
|
|
page: int = 1
|
|
per_page: int = 20
|
|
|
|
@property
|
|
def offset(self) -> int:
|
|
return (self.page - 1) * self.per_page
|
|
|
|
|
|
class PaginatedResponse(BaseModel):
|
|
"""Réponse paginée générique."""
|
|
|
|
items: list
|
|
total: int
|
|
page: int
|
|
per_page: int
|
|
pages: int
|