Apparence
Référentiel organisationnel (back-office)
Le seul chapitre qui se joue dans le back-office (/admin/ sur l'hôte de l'API) et non dans l'application. C'est là que se tient le référentiel : sites, pôles, établissements, services, codes de paye.
Pour qui : un compte is_staff disposant des permissions du domaine Établissements. Un super-utilisateur les a toutes.
Prérequis communs : la stack tourne (make up), un compte administrateur existe (make superuser) et le référentiel de démonstration est en place (make seed-establishments).
Le mode d'emploi complet de ces écrans est le guide d'administration ; les scénarios ci-dessous ne recettent que ce que le ticket demandait.
1. Créer un établissement sans intervention technique
Tickets : APAJH-188 · Rôle : Admin · Prérequis : make seed-establishments
Critères d'acceptation du ticket
- Étant donné un administrateur, quand il crée ou modifie un établissement, alors nom, code paye, horaires et jours ouvrables sont gérables sans le prestataire.
Le ticket dit « jours ouvrables » ; l'écran distingue deux notions et les deux sont vérifiées ici : les Jours d'ouverture (les jours où l'établissement accueille du public) et la Base de décompte (la convention de décompte des congés).
Connectez-vous au back-office et ouvrez Établissements dans la section Établissements.
Cliquez sur Ajouter établissement.
✅ Résultat attendu : un formulaire, sans aucun champ technique. Les Jours d'ouverture se présentent en sept cases à cocher — « Lundi » à « Dimanche » — et non en zone de texte à remplir de crochets et de virgules.
Renseignez le Nom :
Recette Établissement.Choisissez un Code de paye dans le champ de recherche.
✅ Résultat attendu : la frappe de quelques caractères propose les codes existants ; aucun identifiant numérique n'est demandé.
Renseignez l'Heure d'ouverture
07:00et l'Heure de fermeture21:00.Cochez les Jours d'ouverture du lundi au vendredi.
Choisissez la Base de décompte Jours ouvrables (lundi au samedi).
Renseignez la Couleur
#00888a.Cliquez sur Enregistrer.
✅ Résultat attendu : l'établissement apparaît dans la liste. La colonne Jours d'ouverture affiche « Lun, Mar, Mer, Jeu, Ven », la colonne Couleur un carré teal suivi de
#00888a, et les colonnes Code de paye, Heure d'ouverture et Heure de fermeture les valeurs saisies.
Couverture automatique : aucune spec Playwright ne couvre ce scénario, et c'est structurel — le back-office n'est pas l'application React, il n'entre pas dans le périmètre de la suite end-to-end. Côté serveur, backend/tests/test_establishment.py vérifie que les pages du référentiel répondent, que les jours d'ouverture sont bien rendus en cases à cocher et qu'un enregistrement complet du formulaire aboutit. Ce que seul un humain constate ici, c'est qu'un administrateur y arrive sans aide : pas de champ technique, pas de format à deviner, pas d'identifiant à connaître.
2. Modifier les horaires et les jours d'ouverture d'un établissement
Tickets : APAJH-188 · Rôle : Admin · Prérequis : make seed-establishments
C'est la seconde moitié du critère : « quand il crée ou modifie ».
Ouvrez Établissements et cliquez sur un établissement existant.
✅ Résultat attendu : le formulaire s'ouvre avec les valeurs actuelles, les cases des jours d'ouverture déjà cochées.
Changez l'Heure de fermeture pour
22:30, décochez le vendredi, cochez le samedi, puis Enregistrez.✅ Résultat attendu : un bandeau vert confirme la modification, et la ligne de la liste montre la nouvelle heure et « Lun, Mar, Mer, Jeu, Sam ».
Rouvrez la fiche et remettez les valeurs d'origine.
Couverture automatique : aucune spec Playwright (même raison qu'au § 1). backend/tests/test_establishment.py couvre l'aller-retour du formulaire ; l'enchaînement à l'écran est à rejouer à la main.
3. Refuser une saisie invalide avec un message compréhensible
Tickets : APAJH-188 · Rôle : Admin · Prérequis : make seed-establishments
« Sans le prestataire » suppose qu'une erreur de saisie se corrige seul, donc qu'elle est expliquée.
Sur la fiche d'un établissement, mettez l'Heure de fermeture égale à l'Heure d'ouverture, puis Enregistrez.
✅ Résultat attendu : l'enregistrement est refusé et le message « L'heure de fermeture doit différer de l'heure d'ouverture. » s'affiche sous le champ Heure de fermeture — celui qu'il faut corriger.
Décochez les sept Jours d'ouverture, puis Enregistrez.
✅ Résultat attendu : refus, avec « Renseignez au moins un jour d'ouverture. ».
Saisissez
bleudans Couleur, puis Enregistrez.✅ Résultat attendu : refus. Le navigateur peut bloquer la soumission de lui-même (le champ attend la forme
#RRGGBB) ; sinon le message « La couleur doit être un hexadécimal de la forme #RRGGBB (ex. #00888a). » s'affiche.Donnez à l'établissement le nom d'un établissement existant, puis Enregistrez.
✅ Résultat attendu : refus, le nom devant rester unique.
Couverture automatique : aucune spec Playwright. backend/tests/test_establishment.py vérifie chacune de ces règles au niveau du modèle et de l'API ; ce qui reste à constater à la main, c'est que le message arrive au bon endroit dans le formulaire.
Points d'attention
- Un pôle ne se compose pas depuis l'établissement seulement. La fiche d'un pôle liste ses établissements et permet d'en rattacher, mais sans case de suppression : retirer un établissement d'un pôle se fait en vidant le champ Pôle sur la fiche de l'établissement. Si vous cherchez une case de suppression sur la page du pôle, ce n'est pas un défaut.
- Les suppressions du back-office sont définitives et certaines sont volontairement bloquées (un code de paye utilisé, un établissement porté par un contrat). Un refus de suppression est le comportement attendu, pas une régression.
- Les écrans du back-office ne sont pas responsives. C'est l'interface d'administration de Django, prévue pour un poste de travail ; aucun scénario mobile n'est attendu ici, contrairement aux chapitres de l'application.