Aller au contenu

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

Approbations

Vérifié contre le produit le .

Domaine Approbations — la file, les trois décisions, l’expiration automatique
Durée ~10 min
Niveau complet
Étiquette manuel — le badge qui bouge sans rechargement exige deux navigateurs simultanés

Socle B. Le montage est sur la préparation commune.

Comptes : bob (« Demandeur »), alice (administratrice, qui porte booking.approve).

État de départ : sur le profil « Demandeur », poser la seule règle « Approbation requise », sans type de salle sélectionné — elle s’applique alors à toutes les salles. Retirer toute autre règle. Toute réservation de bob deviendra ainsi une demande de réservation Une occupation en attente de validation : elle bloque déjà la salle, mais elle peut encore être refusée. .

Deux navigateurs : bob dans l’un, alice dans l’autre, tous deux connectés.

# Action Résultat attendu
1.1 bob réserve A-101, motif « Répétition » avant l’envoi, l’étiquette « Partira en demande d’approbation » ; puis « Demande d’approbation envoyée. »
1.2 bob → « Mes réservations » la ligne porte le statut « En attente d’approbation »
1.3 Chez alice, sans recharger un compteur apparaît sur l’entrée « Validations » de la navigation
1.4 alice → Validations la demande est là, avec le demandeur, la salle, le créneau, le motif et « Demandée le … »
1.5 alice → « Valider » « Demande validée — réservation confirmée. » ; la demande quitte la file
1.6 Chez bob, sans recharger le statut passe à « Confirmée »
1.7 alice recharge et retente la même validation la demande n’est plus dans la file — elle a été traitée
# Action Résultat attendu
2.1 bob soumet une nouvelle demande elle apparaît dans la file d’alice
2.2 alice → « Refuser » sans rien saisir le bouton de confirmation reste inactif — le motif est obligatoire
2.3 Saisir « Salle réservée aux examens », confirmer « Demande refusée. Le demandeur est informé. »
2.4 Chez bob statut « Refusée », avec le motif affiché : « Refusée : Salle réservée aux examens »
2.5 Rechercher ce créneau la salle est de nouveau disponible — un refus libère
# Action Résultat attendu
3.1 bob soumet une demande sur A-101 elle apparaît dans la file
3.2 alice → « Proposer une alternative » le dialogue « Proposer une autre salle » liste les salles libres du même créneau
3.3 Choisir A-102, message « A-102 est plus adaptée », valider « Alternative proposée au demandeur. » ; la demande d’origine est close et A-101 libérée
3.4 Chez bob « Alternative proposée : A-102 », avec un bouton « Accepter »
3.5 bob clique « Accepter » une nouvelle réservation est créée, qui repasse par les règles de son profil
3.6 bob clique « Accepter » une seconde fois le bouton a disparu — l’offre se consomme une seule fois

Compte dave, « Valideur A », limité au campus A.

# Action Résultat attendu
4.1 bob demande une salle du campus A (A-101) dave voit la demande dans sa file
4.2 bob demande B-201 (campus B) dave ne la voit pas ; alice, non limitée, la voit
4.3 Comparer le compteur de dave et celui d’alice ils diffèrent — chacun compte ce qui le concerne

C’est le seul écran du produit où la portée d’un rôle est réellement appliquée. Le détail est sur Rôles.

# Action Résultat attendu
5.1 bob demande une salle sur un créneau qui commence dans quelques minutes la demande apparaît dans la file
5.2 Ne rien faire, attendre le passage de l’heure de début, puis une minute de plus la demande quitte la file sans que personne ne l’ait décidée
5.3 Chez bob statut « Expirée », sans motif — personne n’a refusé
5.4 Rechercher ce créneau la salle est libre — l’expiration l’a libérée
  • Une demande en attente occupe déjà la salle. Elle ne peut pas être doublée pendant qu’elle attend, et c’est pourquoi son expiration compte.
  • Le contrôle d’expiration passe environ toutes les minutes. Une demande peut rester visible quelques dizaines de secondes après l’heure de son créneau : ce n’est pas un blocage.
  • Une alternative est un refus, plus une offre. La salle d’origine est libérée avant que bob n’ait vu quoi que ce soit ; quelqu’un d’autre peut la prendre entre-temps.

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
File d’approbation, trois décisions STORY-017 V34
Règle « Approbation requise » STORY-012 V61
Portée d’un rôle appliquée STORY-004
Badge en temps réel STORY-014
Expiration automatique STORY-017

Couvert par les tests automatisés : apps/api/src/approvals/approvals.e2e.spec.ts. Les trois décisions et le filtrage par portée y sont couverts côté API ; le badge en temps réel et la consommation de l’offre côté demandeur ne le sont pas.

  • Règle « Approbation requise » seule sur le profil « Demandeur »
  • bob réserve → « Partira en demande d’approbation » puis « Demande d’approbation envoyée. »
  • Chez alice sans recharger → un compteur apparaît sur « Validations »
  • « Valider »« Demande validée — réservation confirmée. », et chez bob le statut passe à « Confirmée » sans rechargement
  • « Refuser » sans motif → le bouton reste inactif
  • Refus motivé → chez bob, « Refusée » avec le motif affiché
  • Après refus, la salle est de nouveau disponible
  • « Proposer une alternative » → chez bob, « Alternative proposée : A-102 » + « Accepter »
  • Second clic sur « Accepter » → le bouton a disparu
  • dave, limité au campus A, ne voit pas la demande sur B-201
  • Demande non traitée avant son créneau → « Expirée », sans motif, salle libérée
Documentation technique source (2)