Files
notytex/backend/docs/PARITY_CHECKLIST.md
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

149 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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*