Planificateur
Planificateur scolaire (module school-planner) : génération assistée de l'emploi du temps.
À partir des données de l'établissement (enseignants, classes, matières, salles, créneaux), le
moteur d'optimisation propose une grille hebdomadaire qui respecte les contraintes pédagogiques.
Le module est un micro-frontend intégré au dashboard sous /edt/planificateur.
Maintenu par Pass Technologie.
L'emploi du temps est réalisé par le chef d'établissement (ou un personnel de direction) : ce profil dispose du rôle « School Planner – Administration » sur sa structure.
Fonctionnalités
Cliquer sur une fonctionnalité pour atteindre son déroulé (Aperçu) ou sa section détaillée. Toutes sont vérifiées par des tests automatisés.
- Optimiser un emploi du temps complet — en un clic, avec suivi en temps réel et arrêt possible.
- Respecter la qualification des enseignants — un enseignant reste sur ses matières (services Vie Scolaire), sans en changer d'un créneau à l'autre.
- Exploiter les salles réelles (RBS) — placement dans le bon type de salle, respect des réservations existantes, génération optionnelle des réservations RBS.
- Composer plusieurs scénarios — en activant/désactivant des contraintes.
- Comparer deux scénarios — côte à côte (faisabilité, qualité, contraintes).
- Régler les contraintes pédagogiques — durée des cours, nombre max de cours/jour, capacité des salles…
- Piloter le service des enseignants — heures dues (ORS) vs affectées, écart (HSA / sous-service), par scénario.
- Lire la configuration EDT — année scolaire, périodes, grille horaire issues de Vie Scolaire.
- Enregistrer et transférer vers l'EDT — répéter le planning sur une période et l'écrire dans le module EDT.
Transfert vers l'EDT
Le planning hebdomadaire produit par le solveur est répété sur une période puis écrit dans le module EDT. La boîte de transfert expose :
- Recopier sur toute l'année scolaire (activé par défaut) : verrouille la période sur les dates de l'année scolaire issues de Vie Scolaire (repli sur une estimation 1ᵉʳ sept. → 4 juil. si aucune période n'est configurée). Désactivable pour saisir librement une période.
- Semaine A/B (une semaine sur deux), filtre par classes, et option « écraser les cours saisis manuellement » (sinon ils sont préservés et les créneaux en conflit sont ignorés).
- Aperçu : calcule la réalisation complète (nombre de cours/occurrences) sans rien écrire.
Le transfert est idempotent : un ré-export remplace exactement les cours précédemment écrits par le planificateur (suivi serveur des récurrences), sans créer de doublon ni toucher aux cours manuels.
Démonstration — emploi du temps à l'année (2026/2027)
Parcours chef d'établissement enregistré en test automatisé : optimisation, puis transfert de l'emploi du temps sur toute l'année scolaire 2026/2027 (aperçu de la réalisation puis écriture dans l'EDT).
Lire le statut d'un planning
Le moteur ne renvoie pas un score brut mais un statut en langage clair :
| Statut | Signification |
|---|---|
| ⏳ Incomplet | Des cours ne sont pas encore placés — laissez tourner ou relancez l'optimisation |
| ⚠️ Non réalisable | Une contrainte bloquante est violée (ex. enseignant/salle/classe en double) |
| ✅ Réalisable | Aucune contrainte bloquante ; il reste des préférences à améliorer |
| ⭐ Optimal | Toutes les contraintes respectées, aucune pénalité |
Aperçu
Chaque étape ci-dessous correspond à une fonctionnalité vérifiée par des tests automatisés : le texte décrit l'étape, la capture la montre. Le parcours suit un chef d'établissement, de l'optimisation au pilotage du service des enseignants. Cliquer sur une capture l'agrandit ; les flèches ‹ › permettent de circuler entre toutes.
Optimiser et lire l'emploi du temps
1. Lancer l'optimisation. Le moteur place les cours en arrière-plan ; le suivi affiche le temps écoulé et un bouton permet d'arrêter à tout moment.
2. Consulter la grille produite. L'emploi du temps optimisé s'affiche sous forme de grille hebdomadaire, colorée par matière et accompagnée d'un statut de réalisation.
Scénarios, contraintes et comparaison
3. Gérer les scénarios. Chaque scénario liste ses contraintes (dures et douces) ; on les active ou désactive pour explorer plusieurs hypothèses.
4. Optimiser un scénario. Le résultat est restitué avec un score traduit en langage clair plutôt qu'une valeur brute.
5. Comparer deux scénarios. Une vue côte à côte confronte les métriques et les contraintes pour trancher entre deux hypothèses.
Paramétrer l'établissement et piloter le service
6. Régler les contraintes pédagogiques. Un modèle d'établissement fixe les durées et autorise des surcharges par cas particulier.
7. Lire la configuration EDT. L'année scolaire, les périodes et la grille horaire proviennent de Vie Scolaire et servent de cadre à l'optimisation.
8. Piloter le service des enseignants. Les heures dues (ORS) sont confrontées aux heures affectées pour repérer les écarts (HSA, sous-service) par scénario.
Démonstration vidéo
Parcours complet enregistré pendant le test automatisé (établissement de démonstration) :
Architecture
Le module est servi comme remote Module Federation (rolldown-vite) chargé par le dashboard
Next.js, qui fournit les bibliothèques React partagées. Le backend (Quarkus) expose l'API sous
/school-planner/api/ et sert le bundle fédéré sous /school-planner/mf/. Le moteur
d'optimisation s'appuie sur Timefold ; les scénarios et le suivi des récurrences EDT
écrites (pour un ré-export idempotent) sont persistés côté serveur (PostgreSQL) par
établissement. L'accès est protégé par les droits workflow school-planner.view / .manage /
.admin (lecture / pilotage / configuration).
Les données métier sont lues server-to-server dans l'ENT avec la session de l'utilisateur : annuaire (enseignants, classes, matières), services Vie Scolaire (qualification des enseignants, grille horaire, année scolaire) et RBS (salles et réservations).
Couverture des tests e2e et conformité au référentiel Open ENT NG : voir Détails techniques — Planificateur.