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 |
Préparation
Section intitulée « Préparation »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.
1. Faire apparaître des scores
Section intitulée « 1. Faire apparaître des scores »| # | 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 |
2. Dure contre souple, à l’œil
Section intitulée « 2. Dure contre souple, à l’œil »| # | 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.
3. L’explicabilité
Section intitulée « 3. L’explicabilité »| # | 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é |
4. L’effet d’une pondération
Section intitulée « 4. L’effet d’une pondération »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 |
5. Remise en état
Section intitulée « 5. Remise en état »À 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. » |
Pièges connus
Section intitulée « Pièges connus »- 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.
Traçabilité
Section intitulée « Traçabilité »| 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.
Checklist
Section intitulée « Checklist »- 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é
Écrans concernés
Section intitulée « Écrans concernés »- Heatmap et score de créneau et Pastilles de contrainte et explicabilité — les deux écrans du scénario.
- Contraintes — où se règlent les poids.
- Synthèse de planning — l’effet agrégé sur un périmètre.