Indisponibilités de salle
Vérifié contre le produit le .
| Domaine | Indisponibilités de salle — création, aperçu d’impact, récurrence, effet sur la recherche |
| Durée | ~10 min |
| Niveau | complet |
| Étiquette | automatisable, sauf le bloc 4 (temps réel), qui exige deux navigateurs |
Préparation
Section intitulée « Préparation »Socle B. Le montage est sur la préparation commune.
Comptes : alice (administratrice, porte referential.manage), bob (« Demandeur »,
ne le porte pas).
État de départ : les quatre salles existent, aucune indisponibilité Une fermeture temporaire d'un espace — travaux, maintenance, réquisition — pendant laquelle plus rien ne peut y être posé. n’est déclarée.
1. Création simple, et effet sur la recherche
Section intitulée « 1. Création simple, et effet sur la recherche »Compte alice → Référentiel & parc → salle A-102 → section « Indisponibilités », en bas de la fiche.
| # | Action | Résultat attendu |
|---|---|---|
| 1.1 | Ouvrir la fiche A-102 | la section affiche « Aucune indisponibilité à venir. » |
| 1.2 | « Ajouter une indisponibilité » : type « Travaux », demain 08:00 → 18:00, motif « Réfection du sol » | l’aperçu annonce « Aucune occupation impactée. » ; le bouton « Créer l’indisponibilité » est actif |
| 1.3 | Créer | « Indisponibilité créée » ; la ligne apparaît avec son type, sa période et son motif |
| 1.4 | Réservation → chercher demain 09:00–10:00 | A-102 n’est pas dans les résultats — elle est écartée par le veto |
| 1.5 | Cocher « Inclure les salles indisponibles » | A-102 réapparaît, grisée, avec « Indisponible — Réfection du sol », et son bouton « Réserver » est inactif |
| 1.6 | Se connecter en bob et refaire la même recherche | la case « Inclure les salles indisponibles » n’est pas affichée — elle demande referential.manage |
2. L’aperçu d’impact — rien n’est détruit en silence
Section intitulée « 2. L’aperçu d’impact — rien n’est détruit en silence »| # | Action | Résultat attendu |
|---|---|---|
| 2.1 | alice réserve A-101 après-demain 09:00–11:00 | « Réservation confirmée. » ; la ligne est dans « Mes réservations » |
| 2.2 | Fiche A-101 → « Ajouter une indisponibilité » : « Maintenance », après-demain 08:00 → 12:00 | l’aperçu affiche « 1 occupation(s) en conflit » puis « 1 réservation(s) et 0 cours impactés », avec la ligne concernée |
| 2.3 | Créer | « Indisponibilité créée » — et la réservation de 2.1 est toujours « Confirmée » : elle n’a pas été annulée |
| 2.4 | Retourner dans « Mes réservations » | la réservation porte désormais l’étiquette « En conflit » |
| 2.5 | Rechercher ce créneau sans la case gestionnaire | A-101 n’apparaît pas |
C’est le point central du domaine : déclarer une indisponibilité ne défait rien. Elle crée des conflits qu’un humain doit résoudre, et l’aperçu est le seul moment où le produit les montre spontanément.
3. Récurrence et suppression en série
Section intitulée « 3. Récurrence et suppression en série »| # | Action | Résultat attendu |
|---|---|---|
| 3.1 | Fiche A-103 → « Ajouter une indisponibilité » : « Fermeture », lundi prochain 08:00 → 12:00, cocher « Répéter cette indisponibilité », chaque semaine, jusqu’à trois semaines plus tard | l’aperçu annonce « 4 occurrence(s) seront créées » |
| 3.2 | Créer | quatre lignes apparaissent |
| 3.3 | Supprimer la deuxième → « Cette occurrence » | seule celle-ci disparaît ; il en reste trois |
| 3.4 | Supprimer la deuxième restante → « Celle-ci et les suivantes » | celle-ci et la dernière disparaissent ; la première reste |
| 3.5 | Rechercher un créneau libéré | A-103 est de retour dans les résultats |
4. Le temps réel
Section intitulée « 4. Le temps réel »Deux navigateurs : alice sur la fiche A-102, bob sur une recherche incluant A-102 demain matin.
| # | Action | Résultat attendu |
|---|---|---|
| 4.1 | alice crée une indisponibilité sur ce créneau | chez bob, A-102 disparaît des résultats sans rechargement |
| 4.2 | alice la supprime | chez bob, A-102 réapparaît seule |
5. La validation du formulaire
Section intitulée « 5. La validation du formulaire »| # | Action | Résultat attendu |
|---|---|---|
| 5.1 | Saisir une fin antérieure au début | le bouton « Créer l’indisponibilité » reste inactif |
| 5.2 | Laisser un champ de date ou d’heure incomplet | bouton inactif, aucun aperçu lancé |
| 5.3 | Cocher « Répéter cette indisponibilité » sans date de fin | bouton inactif |
Pièges connus
Section intitulée « Pièges connus »- Seules les indisponibilités à venir sont listées. La section affiche « Aucune indisponibilité à venir. » même quand la salle en a eu par le passé — ce n’est pas une perte de données.
- La case « Inclure les salles indisponibles » est un privilège de gestionnaire. Son absence chez bob au cas 1.6 est le résultat attendu, pas un bug d’affichage.
- Une indisponibilité déclarée sur une salle archivée n’a aucun effet visible : la salle n’était déjà proposée nulle part.
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 |
|---|---|---|
| Indisponibilités, récurrence, aperçu d’impact | STORY-018 |
V35 |
| Occupation unifiée session / réservation | STORY-013 |
— |
| Temps réel | STORY-014 |
— |
| Fiche de salle | STORY-013 |
V40 |
Couvert par les tests automatisés :
apps/api/src/occupancy/unavailabilities.e2e.spec.ts. La création, la récurrence, la suppression
en série et le veto sur la recherche y sont couverts ; l’aperçu d’impact côté interface et le
bloc 4 ne le sont pas.
Checklist
Section intitulée « Checklist »- Fiche A-102 → « Aucune indisponibilité à venir. »
- Créer une indisponibilité « Travaux » → « Aucune occupation impactée. » puis « Indisponibilité créée »
- Rechercher ce créneau → A-102 absente des résultats
- Cocher « Inclure les salles indisponibles » → A-102 grisée, « Réserver » inactif
- Avec bob → la case n’est pas affichée
- Réserver A-101, puis poser une « Maintenance » dessus → « 1 réservation(s) et 0 cours impactés »
- Après création → la réservation est toujours « Confirmée », avec l’étiquette « En conflit »
- Récurrence sur A-103 → « 4 occurrence(s) seront créées »
- Supprimer « Cette occurrence » → il en reste trois
- Supprimer « Celle-ci et les suivantes » → il en reste une
- Deux navigateurs → l’indisponibilité fait disparaître la salle sans rechargement
- Fin avant début → le bouton « Créer l’indisponibilité » reste inactif
Écrans concernés
Section intitulée « Écrans concernés »- Détail d'une salle — la fiche où tout se passe.
- Réservations — l’écran qui subit le veto.
- Synthèse de planning — le compteur « Conflits », pour les cours percutés.
- Journal d'audit — créations et suppressions y sont tracées.