2026-08-22 01:53:27 +02:00
|
|
|
|
# Bugs et anomalies
|
|
|
|
|
|
|
|
|
|
|
|
## UI-001 — Transvasement inaccessible
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P1
|
|
|
|
|
|
- Module : Matériel & Produits d'entretien
|
|
|
|
|
|
- URL : `/cleaning/transvasement`
|
|
|
|
|
|
- Compte : `chatgpt` / `super_admin`
|
|
|
|
|
|
- Résultat : HTTP 500, écran générique.
|
|
|
|
|
|
- Attendu : formulaire utilisable ou message métier explicite si le stock est
|
|
|
|
|
|
vide.
|
|
|
|
|
|
- Impact : dilution et transvasement impossibles.
|
|
|
|
|
|
|
|
|
|
|
|
## UI-002 — Configuration des prévisions inaccessible
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P1
|
|
|
|
|
|
- Module : Matériel & Produits d'entretien
|
|
|
|
|
|
- URL : `/cleaning/forecast-config`
|
|
|
|
|
|
- Compte : `chatgpt` / `super_admin`
|
|
|
|
|
|
- Résultat : HTTP 500.
|
|
|
|
|
|
- Attendu : coefficients par défaut affichés et modifiables.
|
|
|
|
|
|
- Impact : coefficients de permanence impossibles à configurer.
|
|
|
|
|
|
|
|
|
|
|
|
## UI-003 — Création de salle bloquée
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P1
|
|
|
|
|
|
- Module : Établissement
|
|
|
|
|
|
- URL : `/equipments/rooms/new`
|
|
|
|
|
|
- Résultat : le select « Bâtiment » est vide malgré des bâtiments visibles
|
|
|
|
|
|
dans `/equipments/buildings/`.
|
|
|
|
|
|
- Attendu : bâtiments proposés, puis zones filtrées par bâtiment.
|
|
|
|
|
|
- Impact : impossibilité de poursuivre les scénarios équipements/interventions.
|
|
|
|
|
|
|
|
|
|
|
|
## UI-004 — Confusion Site/Bâtiment
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P2
|
|
|
|
|
|
- URL : `/equipments/buildings/`
|
|
|
|
|
|
- Résultat : le formulaire principal crée un `Site` (Collège), tandis que le
|
|
|
|
|
|
véritable bâtiment se crée via `/equipments/buildings/new`.
|
|
|
|
|
|
- Recommandation : séparer les deux actions et afficher la hiérarchie
|
|
|
|
|
|
établissement → bâtiment → zone → salle.
|
|
|
|
|
|
|
|
|
|
|
|
## UI-005 — Commit Docker non identifié
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P2
|
|
|
|
|
|
- URL : `/health/`, setup
|
|
|
|
|
|
- Résultat : version `0.1.0-dev.2`, commit `unknown`.
|
|
|
|
|
|
- Recommandation : fournir `GIT_VERSION=$(git rev-parse HEAD)` au build.
|
|
|
|
|
|
|
|
|
|
|
|
## UI-006 — Instabilité sous navigation séquentielle
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P1 à confirmer
|
|
|
|
|
|
- Résultat : temps de réponse parfois supérieur à 8–30 secondes, puis
|
|
|
|
|
|
indisponibilité temporaire.
|
|
|
|
|
|
- Recommandation : surveiller CPU/RAM, Gunicorn, connexions MariaDB et
|
|
|
|
|
|
documenter les temps de réponse sans lancer de test de charge.
|
2026-08-22 01:54:55 +02:00
|
|
|
|
|
|
|
|
|
|
## UI-007 — Disponibilités et horaires semblent partager le même écran
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P2
|
|
|
|
|
|
- URL : `/planning/availability`
|
|
|
|
|
|
- Résultat : titre « Horaires et suivi annuel » et structure identique à
|
|
|
|
|
|
`/planning/time`.
|
|
|
|
|
|
- Attendu : redirection explicite ou écran distinct avec un libellé cohérent.
|
|
|
|
|
|
- Impact : l'utilisateur peut croire qu'il existe deux écrans différents.
|
|
|
|
|
|
|
|
|
|
|
|
## UI-008 — Requête 401 visible dans la console au chargement du login
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P3 à confirmer
|
|
|
|
|
|
- Résultat : Playwright signale une ressource 401 sur `/auth/login`.
|
|
|
|
|
|
- Impact : bruit console et appel potentiellement lancé avant la session.
|
2026-08-22 01:56:20 +02:00
|
|
|
|
|
|
|
|
|
|
## UI-009 — Soumission produit très lente/non confirmée
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P1 à confirmer (environnementale ou applicative)
|
|
|
|
|
|
- URL : `/cleaning/products/new`
|
|
|
|
|
|
- Compte : `chatgpt` / `super_admin`
|
|
|
|
|
|
- Étapes : remplir un produit `TEST_UI_DETERGENT_SOL` puis soumettre une
|
|
|
|
|
|
seule fois.
|
|
|
|
|
|
- Résultat : l'action Playwright est restée bloquée plus de 30 secondes ; la
|
|
|
|
|
|
requête n'a pas été répétée.
|
|
|
|
|
|
- Impact : impossible de confirmer la création d'un produit dans cette passe.
|
|
|
|
|
|
- Qualification : vérifier les logs et la charge VM avant de conclure à un
|
|
|
|
|
|
bug applicatif.
|
2026-08-22 02:13:54 +02:00
|
|
|
|
|
|
|
|
|
|
## UI-010 — Soumission prévention très lente/non confirmée
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P1 à confirmer (environnementale ou applicative)
|
|
|
|
|
|
- URL : `/prevention/`
|
|
|
|
|
|
- Compte : `chatgpt` / `super_admin`
|
|
|
|
|
|
- Étapes : remplir le formulaire d'agent prévention avec des données
|
|
|
|
|
|
`TEST_UI_*`, puis soumettre une seule fois.
|
|
|
|
|
|
- Résultat : clic bloqué au-delà du délai ; aucune répétition.
|
|
|
|
|
|
- Impact : impossible de confirmer la création d'un personnel de prévention
|
|
|
|
|
|
dans cette passe.
|
2026-08-22 02:16:53 +02:00
|
|
|
|
|
|
|
|
|
|
## UI-011 — Lien Documents renvoie 404
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P2
|
|
|
|
|
|
- URL : `/documents/`
|
|
|
|
|
|
- Compte : `chatgpt` / `super_admin`
|
|
|
|
|
|
- Résultat : HTTP 404.
|
|
|
|
|
|
- Attendu : liste documentaire ou redirection vers le module documentaire
|
|
|
|
|
|
réellement utilisé.
|
|
|
|
|
|
- Impact : lien cassé pour un utilisateur qui cherche les documents.
|
2026-08-22 02:20:53 +02:00
|
|
|
|
|
|
|
|
|
|
## UI-012 — Menu non filtré selon les permissions
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P1
|
|
|
|
|
|
- Comptes : `TEST_UI_USER_MULTI` et `TEST_UI_USER_NONE`.
|
|
|
|
|
|
- Résultat : les deux dashboards contiennent les mêmes liens équipements,
|
|
|
|
|
|
interventions et nettoyage, y compris pour `TEST_UI_USER_NONE` sans rôle.
|
|
|
|
|
|
- Backend : `TEST_UI_USER_NONE` reçoit bien 403 sur ces URLs ; le backend est
|
|
|
|
|
|
donc plus strict que le menu.
|
|
|
|
|
|
- Résultat multi-rôles : `TEST_UI_USER_MULTI` reçoit 200 sur patrimoine et
|
|
|
|
|
|
interventions, puis 403 patrimoine après un refus individuel, tandis que
|
|
|
|
|
|
les interventions restent accessibles.
|
|
|
|
|
|
- Impact : UX trompeuse et risque d'erreurs ; un utilisateur voit des liens
|
|
|
|
|
|
qu'il ne peut pas ouvrir.
|
2026-08-22 02:23:16 +02:00
|
|
|
|
|
|
|
|
|
|
## UI-013 — Pagination absente ou non supportée sur plusieurs listes
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P2
|
|
|
|
|
|
- `/lots/?page=2` et `/equipments/?page=2` répondent 200.
|
|
|
|
|
|
- `/interventions/?page=2` et `/companies/?page=2` répondent 404.
|
|
|
|
|
|
- Attendu : pagination cohérente, ou absence explicite du paramètre avec une
|
|
|
|
|
|
interface qui ne l'affiche pas.
|
|
|
|
|
|
- Impact : incohérence de navigation lorsque le volume de données augmente.
|
|
|
|
|
|
|
|
|
|
|
|
## UI-014 — Entreprises sans recherche ni filtre visible
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P2
|
|
|
|
|
|
- URL : `/companies/`
|
|
|
|
|
|
- Résultat : aucune zone de recherche ou de tri dans la liste.
|
|
|
|
|
|
- Attendu : recherche par nom/contact lorsque le nombre d'entreprises croît.
|
2026-08-22 02:24:09 +02:00
|
|
|
|
|
|
|
|
|
|
## UI-015 — Formulaire entreprise vide provoque une erreur 500
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P1
|
|
|
|
|
|
- URL : `/companies/new`
|
|
|
|
|
|
- Étapes : soumettre le formulaire vide avec un CSRF valide.
|
|
|
|
|
|
- Résultat : HTTP 500 au lieu d'une validation utilisateur.
|
|
|
|
|
|
- Attendu : HTTP 400 ou retour formulaire avec champ obligatoire signalé.
|
|
|
|
|
|
|
|
|
|
|
|
## UI-016 — Formulaire intervention vide provoque une erreur 500
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P1
|
|
|
|
|
|
- URL : `/interventions/new`
|
|
|
|
|
|
- Étapes : soumettre le formulaire vide avec un CSRF valide.
|
|
|
|
|
|
- Résultat : HTTP 500.
|
|
|
|
|
|
- Attendu : validation des champs obligatoires et message compréhensible.
|
2026-08-22 02:27:06 +02:00
|
|
|
|
|
|
|
|
|
|
## UI-017 — Liste interventions casse avec une intervention sans salle
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P1
|
|
|
|
|
|
- URL : `/interventions/`
|
|
|
|
|
|
- Donnée : `TEST_UI_INTERVENTION_ELECTRICITE` (ID 1), créée sans salle ni
|
|
|
|
|
|
équipement pour tester le cas autorisé par le formulaire.
|
|
|
|
|
|
- Résultat : le détail `/interventions/1` répond 200, mais la liste renvoie
|
|
|
|
|
|
HTTP 500.
|
|
|
|
|
|
- Attendu : afficher l'intervention avec « Salle non renseignée » ou demander
|
|
|
|
|
|
une salle avant validation.
|
|
|
|
|
|
- Impact : une intervention valide au niveau formulaire rend la liste
|
|
|
|
|
|
principale inutilisable.
|
|
|
|
|
|
|
|
|
|
|
|
## UI-018 — Titre d'édition ambigu
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P2
|
|
|
|
|
|
- URL : `/interventions/1/edit`
|
|
|
|
|
|
- Résultat : le titre HTML reste « Nouvelle intervention » en édition.
|
|
|
|
|
|
- Attendu : « Modifier l'intervention » avec identifiant/titre existant.
|
2026-08-22 02:31:57 +02:00
|
|
|
|
|
|
|
|
|
|
## UI-019 — Tableau de bord en erreur avec une intervention sans équipement
|
|
|
|
|
|
|
|
|
|
|
|
- Priorité : P1
|
|
|
|
|
|
- URL : `/`
|
|
|
|
|
|
- Utilisateur : `chatgpt` (super-administrateur)
|
|
|
|
|
|
- Précondition : l'intervention de test ID 1 existe sans équipement associé.
|
|
|
|
|
|
- Étapes : ouvrir une session puis demander `/`.
|
|
|
|
|
|
- Résultat : HTTP 500. Le journal indique
|
|
|
|
|
|
`dashboard/index.html:495` et l'expression `interv.equipment.name` alors que
|
|
|
|
|
|
`interv.equipment` vaut `None`.
|
|
|
|
|
|
- Attendu : le tableau de bord doit afficher une valeur de remplacement
|
|
|
|
|
|
(« Aucun équipement ») ou exclure proprement la relation absente.
|
|
|
|
|
|
- Impact : erreur critique pour la page d'entrée et perte d'accès au tableau
|
|
|
|
|
|
de bord dès qu'une intervention sans équipement est enregistrée.
|