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!
This commit is contained in:
148
backend/docs/PARITY_CHECKLIST.md
Normal file
148
backend/docs/PARITY_CHECKLIST.md
Normal file
@@ -0,0 +1,148 @@
|
||||
# Checklist de Parité Fonctionnelle v1 ↔ v2
|
||||
|
||||
## Statut Global
|
||||
|
||||
| Catégorie | v1 | v2 API | Statut |
|
||||
|-----------|----|----|--------|
|
||||
| Classes | ✅ | ✅ | Parité complète |
|
||||
| Élèves | ✅ | ✅ | Parité complète |
|
||||
| Évaluations | ✅ | ✅ | Parité complète |
|
||||
| Conseil de classe | ✅ | ✅ | Parité complète |
|
||||
| Configuration | ✅ | ✅ | Parité complète |
|
||||
|
||||
---
|
||||
|
||||
## Gestion des Classes
|
||||
|
||||
| Fonctionnalité | v1 | v2 API | Notes |
|
||||
|----------------|----|----|-------|
|
||||
| Liste des classes | ✅ | `GET /classes` | ✅ |
|
||||
| Création d'une classe | ✅ | `POST /classes` | ✅ |
|
||||
| Modification d'une classe | ✅ | `PUT /classes/{id}` | ✅ |
|
||||
| Suppression d'une classe | ✅ | `DELETE /classes/{id}` | ✅ |
|
||||
| Dashboard avec stats trimestre | ✅ | `GET /classes/{id}/stats?trimester=` | ✅ |
|
||||
| Histogramme des moyennes | ✅ | Inclus dans stats | ✅ |
|
||||
| Analyse par domaines | ✅ | Inclus dans stats | ✅ |
|
||||
| Analyse par compétences | ✅ | Inclus dans stats | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## Gestion des Élèves
|
||||
|
||||
| Fonctionnalité | v1 | v2 API | Notes |
|
||||
|----------------|----|----|-------|
|
||||
| Liste globale | ✅ | `GET /students` | ✅ |
|
||||
| Liste par classe | ✅ | `GET /classes/{id}/students` | ✅ |
|
||||
| Détail élève | ✅ | `GET /students/{id}` | ✅ Avec historique inscriptions |
|
||||
| Création d'un élève | ✅ | `POST /students` | ✅ |
|
||||
| Modification d'un élève | ✅ | `PUT /students/{id}` | ✅ |
|
||||
| Inscription dans une classe | ✅ | `POST /students/enroll` | ✅ |
|
||||
| Transfert entre classes | ✅ | `POST /students/transfer` | ✅ |
|
||||
| Départ d'une classe | ✅ | `POST /students/departure` | ✅ |
|
||||
| Import CSV | ✅ | `POST /classes/{id}/import-csv` | ✅ |
|
||||
| Historique des mouvements | ✅ | Inclus dans détail élève | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## Évaluations
|
||||
|
||||
| Fonctionnalité | v1 | v2 API | Notes |
|
||||
|----------------|----|----|-------|
|
||||
| Liste avec filtres | ✅ | `GET /assessments?class_id=&trimester=` | ✅ |
|
||||
| Tri par date/titre | ✅ | Paramètre `sort` | ✅ |
|
||||
| Création unifiée | ✅ | `POST /assessments` | ✅ Avec exercices et éléments |
|
||||
| Modification | ✅ | `PUT /assessments/{id}` | ✅ |
|
||||
| Suppression cascade | ✅ | `DELETE /assessments/{id}` | ✅ |
|
||||
| Indicateur progression | ✅ | Inclus dans liste | ✅ |
|
||||
| Détail évaluation | ✅ | `GET /assessments/{id}` | ✅ |
|
||||
| Saisie des notes | ✅ | `POST /assessments/{id}/grades` | ✅ Bulk save |
|
||||
| Résultats statistiques | ✅ | `GET /assessments/{id}/results` | ✅ |
|
||||
| Histogramme distribution | ✅ | Inclus dans results | ✅ |
|
||||
| Tableau scores élèves | ✅ | Inclus dans results | ✅ |
|
||||
| Heatmap compétences | ✅ | Inclus dans results | ✅ |
|
||||
| Heatmap domaines | ✅ | Inclus dans results | ✅ |
|
||||
| Envoi bilans email | ✅ | `POST /assessments/{id}/send-reports` | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## Conseil de Classe
|
||||
|
||||
| Fonctionnalité | v1 | v2 API | Notes |
|
||||
|----------------|----|----|-------|
|
||||
| Vue préparation | ✅ | `GET /council/classes/{id}` | ✅ |
|
||||
| Stats par élève | ✅ | Inclus dans préparation | ✅ |
|
||||
| Saisie appréciations | ✅ | `POST /council/.../appreciations/{student}` | ✅ |
|
||||
| Finalisation | ✅ | `PUT /council/.../finalize` | ✅ |
|
||||
| Lecture appréciation | ✅ | `GET /council/.../appreciations/{student}` | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
| Fonctionnalité | v1 | v2 API | Notes |
|
||||
|----------------|----|----|-------|
|
||||
| Config complète | ✅ | `GET /config` | ✅ |
|
||||
| Modification année scolaire | ✅ | `PUT /config` | ✅ |
|
||||
| Liste compétences | ✅ | `GET /config/competences` | ✅ |
|
||||
| CRUD compétences | ✅ | `POST/PUT/DELETE /config/competences/{id}` | ✅ |
|
||||
| Liste domaines | ✅ | `GET /config/domains` | ✅ |
|
||||
| CRUD domaines | ✅ | `POST/PUT/DELETE /config/domains/{id}` | ✅ |
|
||||
| Échelle de notation | ✅ | `GET /config/scale` | ✅ |
|
||||
| CRUD valeurs échelle | ✅ | `POST/PUT/DELETE /config/scale/{value}` | ✅ |
|
||||
| Config SMTP | ✅ | `GET/PUT /config/smtp` | ✅ |
|
||||
| Test SMTP | ✅ | `POST /config/smtp/test` | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## Fonctionnalités Frontend (à implémenter en Vue.js)
|
||||
|
||||
| Fonctionnalité | Notes |
|
||||
|----------------|-------|
|
||||
| Navigation clavier dans grille | JavaScript frontend |
|
||||
| Drag & drop import CSV | JavaScript frontend |
|
||||
| Animations et transitions | CSS/Vue.js |
|
||||
| Mode sombre | CSS/Vue.js |
|
||||
|
||||
---
|
||||
|
||||
## Résumé API v2
|
||||
|
||||
- **Total routes** : 45
|
||||
- **Tests unitaires** : 99
|
||||
- **Services domain** : 5 (GradingCalculator, StatisticsService, ConfigService, EmailService, StudentReportService)
|
||||
|
||||
### Routes par catégorie
|
||||
|
||||
| Module | Routes |
|
||||
|--------|--------|
|
||||
| Classes | 5 |
|
||||
| Students | 7 |
|
||||
| Assessments | 7 |
|
||||
| Council | 4 |
|
||||
| Config | 22 |
|
||||
| **Total** | **45** |
|
||||
|
||||
---
|
||||
|
||||
## Notes d'implémentation
|
||||
|
||||
### Différences architecturales
|
||||
|
||||
1. **v1** : Flask avec templates Jinja2 (monolithique)
|
||||
2. **v2** : FastAPI avec API REST (découplé)
|
||||
|
||||
### Calculs métier
|
||||
|
||||
Tous les calculs (scores, statistiques, progression) utilisent les mêmes formules :
|
||||
- Type "notes" : valeur directe
|
||||
- Type "score" : (score/3) × max_points
|
||||
- Valeurs spéciales : `.` = 0, `d` = dispensé, `a` = absent
|
||||
|
||||
### Migration de données
|
||||
|
||||
La structure de la base de données est identique entre v1 et v2.
|
||||
Une migration directe des données est possible.
|
||||
|
||||
---
|
||||
|
||||
*Document généré le 2025-11-21*
|
||||
Reference in New Issue
Block a user