Aller au contenu

Vue filtrée pour Administrateur Planificateur Gestionnaire de patrimoine Enseignant Étudiant Tout afficher

Contraintes et scoring

Vérifié contre le produit le .

Domaine Contraintes & scoring — lire un score, ouvrir son explication, distinguer dure et souple, mesurer l’effet d’une pondération
Durée ~12 min
Niveau complet
Étiquette manuel — la lecture d’une heatmap et d’une décomposition chiffrée est un contrôle visuel ; le bloc 4 modifie un réglage d’établissement et doit être remis en état à la main

Socle A — le jeu de démonstration. Le montage est sur la préparation commune.

Compte : demo@delacroix.example (administrateur — il porte constraint.manage, nécessaire au bloc 4).

État de départ : le profil de contraintes est celui d’origine, « Défaut », aux poids du catalogue. Le bloc 4 le modifie ; le bloc 5 le remet en état.

# Action Résultat attendu
1.1 Planification → observer la grille avant toute action aucune couleur : il n’y a pas de score sans cours de référence
1.2 « Créer un cours »« Algorithmique — TD »« Détecter les créneaux éligibles » la grille se colore ; les compteurs annoncent les créneaux possibles et les exclus
1.3 Regarder une bande colorée elle porte un nombre, en haut à droite — la couleur n’est jamais seule
1.4 Survoler une bande notée l’infobulle donne « Score … /100 », la fenêtre horaire réelle et « Meilleure salle : … »
1.5 Regarder la légende, au-dessus de la grille cinq états nommés, chacun avec un motif : « Score du créneau », « Impossible », « Occupé », « Hors trame », et « Libre » en mode Occupation
# Action Résultat attendu
2.1 Regarder les cellules du mercredi elles sont hachurées, portent une icône d’interdiction, et aucun chiffre
2.2 Survoler l’une d’elles la raison est nommée : Hugo Martin est indisponible ce jour-là
2.3 Comparer avec une cellule d’un autre jour elle est colorée et chiffrée : le placement y est possible, simplement plus ou moins bon

C’est toute la distinction : une contrainte dure Une règle qui ne se négocie pas : tant qu'elle est violée, le placement est impossible — une salle déjà prise, un enseignant absent. retire la cellule du jeu — pas de score du tout ; une contrainte souple Une préférence que l'on cherche à respecter sans y être obligé : la violer coûte des points, elle n'interdit rien. fait baisser le chiffre.

# Action Résultat attendu
3.1 Cliquer une cellule notée de valeur moyenne le panneau « Détail du créneau » s’ouvre
3.2 Lire l’en-tête le jour, la fenêtre horaire réelle et « score … /100 »
3.3 Lire le pied du panneau l’arithmétique complète : « 100 − … de pénalités = … /100 »
3.4 Lire la section « Pénalités » chaque ligne porte le nom de la contrainte, sa justification en français et le nombre de points perdus
3.5 Déplier « Contraintes satisfaites (…) » les contraintes non pénalisées, chacune avec la part qu’elle représente
3.6 Vérifier la cohérence la somme des parts et des malus retombe sur le score affiché, à un dixième près
3.7 Cliquer une cellule hachurée le panneau liste toutes les raisons du refus, chacune avec « Bloque … salle(s) candidate(s) », et « Créneau exclu : les contraintes souples ne sont pas évaluées. »
3.8 Basculer « Auto (meilleure) » / « Forcer » en mode Forcer, toutes les salles sont proposées ; les incompatibles sont non sélectionnables avec leur motif
3.9 Regarder « Alternatives » jusqu’à trois autres salles, chacune avec son écart expliqué

C’est le bloc qui prouve que le réglage sert à quelque chose. Notez les valeurs avant de changer quoi que ce soit.

# Action Résultat attendu
4.1 Sur une cellule notée, relever le score et la ligne de pénalité la plus coûteuse — par exemple Trous dans l’EDT du groupe deux valeurs notées sur un papier
4.2 Contraintes → repérer cette contrainte, noter son poids actuel valeur notée
4.3 Porter son poids à 10, sans enregistrer le pied de page annonce « Modifications non enregistrées »
4.4 Ouvrir l’aperçu d’impact « Score moyen actuel », « Score moyen proposé » et « Delta » sur un échantillon de séances placées
4.5 Enregistrer « Contraintes enregistrées — les scores seront recalculés. »
4.6 Revenir sur la grille, relancer la détection, rouvrir la même cellule le score a baissé, et la pénalité de cette contrainte a augmenté
4.7 Mettre le poids de cette contrainte à 0, enregistrer, revenir la contrainte apparaît toujours dans la checklist, sans coûter de points
4.8 Désactiver une contrainte dure — pas l’anti-conflit — et revenir des cellules auparavant hachurées redeviennent notées

À ne pas oublier : le bloc 4 a modifié un réglage qui vaut pour tout l’établissement.

# Action Résultat attendu
5.1 Contraintes → remettre le poids relevé en 4.2, réactiver la contrainte dure de 4.8, enregistrer « Contraintes enregistrées — les scores seront recalculés. »
5.2 Rouvrir la cellule de 4.1 le score d’origine est retrouvé
# Action Résultat attendu
5.3 Essayer de désactiver la contrainte d’anti-conflit impossible : l’interrupteur est verrouillé, avec « Contrainte système : l’anti-conflit est structurel, elle ne peut pas être désactivée. »
  • Le poids n’est pas un pourcentage. Les contraintes souples actives se partagent 100 points au prorata de leurs poids : monter un poids redistribue la part de toutes les autres. Un score qui bouge sur une contrainte qu’on n’a pas touchée est donc normal.
  • Un poids à 0 n’est pas une désactivation. La contrainte reste évaluée et reste listée ; elle ne coûte simplement plus rien.
  • La somme des lignes affichées peut différer du total d’un dixième : chaque ligne est arrondie séparément, le total ne l’est qu’une fois.

Les pièges transverses — environnement, authentification, fraîcheur des données — sont rassemblés sur Les pièges connus.

Ce qui est couvert Story Vue
Catalogue de contraintes, profil, pondérations STORY-021 V24
Scoring instantané et heatmap STORY-023, STORY-027 V12
Panneau d’explicabilité, checklist pondérée STORY-028 V13
Choix de salle et alternatives expliquées STORY-034 V15
Aperçu d’impact avant enregistrement STORY-021

Couvert par les tests automatisés : apps/api/src/scoring/scoring.e2e.spec.ts et apps/api/src/constraints/constraints.e2e.spec.ts. Le calcul des scores, la sémantique des contraintes et l’aperçu d’impact y sont couverts ; la lecture visuelle de la heatmap et la cohérence de la décomposition affichée ne le sont pas.

  • Grille sans cours sélectionné → aucune couleur
  • Détection lancée → bandes colorées, chaque bande porte son chiffre
  • Cellules du mercredi → hachurées, sans chiffre, raison nommée au survol
  • Panneau de détail → « 100 − … de pénalités = … /100 »
  • Section « Pénalités » → nom, justification en français, points perdus
  • « Contraintes satisfaites (…) » dépliée → les parts non pénalisées
  • La somme des parts et des malus retombe sur le score
  • Cellule hachurée → toutes les raisons + « Bloque … salle(s) candidate(s) »
  • Mode « Forcer » → salles incompatibles non sélectionnables, avec leur motif
  • « Alternatives » → jusqu’à trois salles avec leur écart expliqué
  • Poids porté à 10 → aperçu d’impact, puis « Contraintes enregistrées — les scores seront recalculés. »
  • Retour sur la même cellule → le score a baissé
  • Poids à 0 → la contrainte reste listée sans coûter de points
  • Anti-conflit → « Contrainte système : l’anti-conflit est structurel, elle ne peut pas être désactivée. »
  • Remise en état effectuée — le score d’origine est retrouvé
Documentation technique source (3)