From 8d49bfe242da8384a8ec7f340980c5029910dc81 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 22 Aug 2026 15:25:29 +0000 Subject: [PATCH] =?UTF-8?q?audit(ui):=20documenter=20validation=20locale?= =?UTF-8?q?=20et=20workflows=20=C3=A9quipements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ui-audit/BUGS.md | 28 ++++++++++++++++++ docs/ui-audit/CREATED_TEST_DATA.md | 18 ++++++++++++ docs/ui-audit/PAGES_MATRIX.md | 4 +-- docs/ui-audit/PROGRESS.md | 46 ++++++++++++++++++++++++++++++ docs/ui-audit/REPORT.md | 21 ++++++++++++++ 5 files changed, 115 insertions(+), 2 deletions(-) diff --git a/docs/ui-audit/BUGS.md b/docs/ui-audit/BUGS.md index 0d20181..b03f978 100644 --- a/docs/ui-audit/BUGS.md +++ b/docs/ui-audit/BUGS.md @@ -451,3 +451,31 @@ dashboard ne contient plus aucun lien `logs`. Les identifiants des anciens comptes à permissions réduites ne sont pas documentés ; aucun compte n'a été modifié et `alban` n'a pas été touché. Le contrôle positif avec `watchdog_dnd.view` devra être réalisé lors d'une prochaine passe. + +## Reproduction et correction locale — UI-031 — 22 août 2026 + +Sur la copie locale de la base VM, `/equipments/1` reproduisait le 500. Le +traceback exact était `jinja2.exceptions.TemplateRuntimeError: No filter +named 'nl2br' found`, dans `app_new/templates/equipments/detail.html`. + +Le filtre est désormais enregistré dans la factory Flask avec échappement du +contenu et conversion des retours à la ligne. Après reconstruction Docker, +les détails réels des équipements 1, 2 et 3 répondent 200. Le test ciblé de +non-régression passe (`1 passed`). + +Statut : **VALIDÉ LOCALEMENT SUR COPIE VM**. + +## Scénarios équipements locaux + +- Groupe quantitatif ID 3 : 30 chaises en salle 2 ; déplacements de 1 puis 5 + unités vers salle 3, groupe cible ID 4 avec 6 unités et mouvements tracés. +- Quantité 999 : refus métier, sans mouvement supplémentaire ni stock + négatif. +- Réparation : unité ID 5 individualisée, intervention ID 3 créée, puis + remise en service et événements de cycle de vie présents. +- Rebut : unité ID 6 proposée puis confirmée, statut final `jete`, localisation + supprimée et historique conservé. +- Équipement fixe : `TEST_UI_EQ_LUMINAIRE_LOCAL` ID 7, déplacement refusé. + +Ces scénarios sont **VALIDÉS LOCALEMENT SUR COPIE VM** ; ils restent à +rejouer sur la VM distante si une validation distante est nécessaire. diff --git a/docs/ui-audit/CREATED_TEST_DATA.md b/docs/ui-audit/CREATED_TEST_DATA.md index 184e7bc..953b13e 100644 --- a/docs/ui-audit/CREATED_TEST_DATA.md +++ b/docs/ui-audit/CREATED_TEST_DATA.md @@ -111,3 +111,21 @@ Aucune donnée supplémentaire n'a été créée pendant la revalidation des commits `8c54f46`, `864f65d`, `f2783a0` et `ce6d8ae`. Les objets listés ci-dessus ont été réutilisés ; aucune donnée `TEST_UI_*` n'a été supprimée ou modifiée. + +## Données ajoutées pendant la reprise locale — 22/08/2026 + +- Groupe quantitatif `TEST_UI_EQ_CHAISES_GROUP_CORRECT` (ID 3), quantité 30, + salle `TEST_UI_CLASSE_101` ; groupe cible de déplacement ID 4 en salle + `TEST_UI_CLASSE_102` (6 unités après deux mouvements). +- Unité réparée ID 5, individualisée depuis le groupe ID 3, intervention de + réparation ID 3, remise en service. +- Unité rebutée ID 6, individualisée depuis le groupe ID 3, rebut confirmé et + événements conservés. +- `TEST_UI_EQ_LUMINAIRE_LOCAL` (ID 7), équipement fixe en salle 2 ; tentative + de déplacement refusée. +- Rôle `TEST_UI_ROLE_LOGS` (ID 11) et utilisateur + `TEST_UI_REVALIDATION_RBAC` (ID 5) pour le contrôle positif Journaux. Le + mot de passe est conservé uniquement localement et n'est pas versionné. + +Le groupe importé ID 1 a été replacé dans sa salle d'origine après un essai +de déplacement ; aucune donnée antérieure ni `alban` n'a été supprimée. diff --git a/docs/ui-audit/PAGES_MATRIX.md b/docs/ui-audit/PAGES_MATRIX.md index d71bb87..c9b7221 100644 --- a/docs/ui-audit/PAGES_MATRIX.md +++ b/docs/ui-audit/PAGES_MATRIX.md @@ -25,7 +25,7 @@ Matrice initiale issue du smoke test authentifié avec `chatgpt`. | Export DUERP | `/prevention/duerp.csv` | 200 | CSV généré avec en-tête UTF-8 et téléchargement | | Formations | `/training/` | 200 | Smoke test | | Équipements | `/equipments/` | 200 | Smoke test | -| Équipement détail groupe | `/equipments/1` | 500 | UI-031 toujours reproductible sur VM | +| Équipement détail groupe | `/equipments/1` | 200 local | UI-031 validé localement après enregistrement du filtre `nl2br` | | Catégories | `/equipments/categories` | 200 | Accessible | | Bâtiments | `/equipments/buildings/` | 200 | Confusion Site/Bâtiment | | Zones | `/equipments/zones/` | 200 | Accessible | @@ -77,7 +77,7 @@ Matrice initiale issue du smoke test authentifié avec `chatgpt`. | Utilisateurs | `/admin/users` | 200 | RBAC vérifié | | Permissions | `/admin/permissions` | 200 | RBAC vérifié | | Status | `/status/` | 200 | Accessible | -| Logs | `/logs/` | 403 | UI-012 : lien absent pour `chatgpt` sans `watchdog_dnd.view`, contrôle négatif validé | +| Logs | `/logs/` | 403/200 | UI-012 : absent/403 sans permission ; visible/200 avec `TEST_UI_REVALIDATION_RBAC` | | Export interventions | `/exports/interventions` | 200 | Page d'export accessible | | Export coûts CSV | `/exports/costs/csv` | 200 | Réponse courte ; téléchargement non sauvegardé | | Logements | `/housing/` | 200 | Page accessible | diff --git a/docs/ui-audit/PROGRESS.md b/docs/ui-audit/PROGRESS.md index 0c526d9..b13c8fa 100644 --- a/docs/ui-audit/PROGRESS.md +++ b/docs/ui-audit/PROGRESS.md @@ -245,6 +245,52 @@ zones interdites et l'utilisateur `alban` n'ont pas été touchés. Prochaine étape : corriger UI-031 dans une passe de code distincte, puis revalider sur la VM avant de reprendre les mouvements d'équipements. + +## Reprise locale sur copie de VM — 22 août 2026 + +URL locale : `http://127.0.0.1:5080/`. + +- Docker : MariaDB, Flask et Adminer démarrés et sains ; migrations Alembic + appliquées au démarrage. +- Base : copie locale de la VM, données `TEST_UI_*` présentes et conservées. +- Build exécuté avec le commit `d4d80a3`, puis relancé avec le correctif + `08c5b65`. +- Watchdogs/intégrations : non configurés et non sollicités. + +### Correctifs et revalidation locale + +- **UI-017 — VALIDÉ LOCALEMENT SUR COPIE VM** : liste, détails, planning et + dashboard en 200 pour les relations optionnelles ; libellés humains. +- **UI-031 — VALIDÉ LOCALEMENT SUR COPIE VM** : cause reproduite dans les + logs (`TemplateRuntimeError: No filter named 'nl2br'`), filtre enregistré + dans la factory, détail et hiérarchie des équipements 1/2 en 200. +- **UI-012 — VALIDÉ LOCALEMENT SUR COPIE VM** : contrôle négatif avec + `chatgpt` (lien absent/403) et contrôle positif avec + `TEST_UI_REVALIDATION_RBAC` (lien présent/`/logs/` en 200). + +### Scénarios équipements exécutés + +Un groupe correctement déclaré `TEST_UI_EQ_CHAISES_GROUP_CORRECT` (ID 3, +quantité 30, salle 2) a été créé pour compléter le scénario importé dont le +champ historique `is_group` était faux. Déplacements quantitatifs de 1 puis +5 unités vers la salle 3 : mouvement journalisé, groupe cible ID 4 avec 6 +unités, refus d'une quantité 999 sans quantité négative. + +Une unité a été retirée pour réparation (ID 5), l'intervention ID 3 créée, +puis la réparation terminée et l'unité remise en service. Une autre unité +(ID 6) a été proposée puis confirmée au rebut ; elle est `jete`, sans salle, +et conserve ses événements de cycle de vie. + +Un luminaire fixe `TEST_UI_EQ_LUMINAIRE_LOCAL` (ID 7) a été créé. La tentative +de déplacement est refusée par la règle de mobilité fixe et l'équipement +reste dans sa salle. + +### Contrôle de régression local + +Le balayage séquentiel des pages principales (patrimoine, interventions, +planning, prévention, stock, RBAC, détail équipements) n'a relevé aucun 500. +`/documents/` reste un 404 connu (UI-011). Le test ciblé +`test_grouped_equipment_detail_and_hierarchy` passe : **1 passed**. après modification du rôle admin par les tests RBAC. Ces résultats sont hors des trois correctifs ciblés. diff --git a/docs/ui-audit/REPORT.md b/docs/ui-audit/REPORT.md index c86d23f..f40e6e9 100644 --- a/docs/ui-audit/REPORT.md +++ b/docs/ui-audit/REPORT.md @@ -210,3 +210,24 @@ un compte sans `watchdog_dnd.view`. Aucune migration Alembic n'est nécessaire. Aucune nouvelle donnée n'a été créée et aucune donnée `TEST_UI_*` n'a été supprimée. `alban`, les watchdogs et les intégrations interdites n'ont pas été touchés. + +## Audit local sur copie VM — 22 août 2026 + +L'application locale (`http://127.0.0.1:5080/`) a été reconstruite avec le +correctif `08c5b65`. Le traceback UI-031 a été reproduit puis supprimé en +enregistrant le filtre Jinja `nl2br` dans la factory. Les détails groupés et +les hiérarchies réelles répondent maintenant 200. + +Les trois points ciblés sont validés localement : UI-017, UI-031 et UI-012. +Le contrôle UI-012 a été effectué avec `chatgpt` sans permission (lien absent, +403) et avec le compte temporaire `TEST_UI_REVALIDATION_RBAC` disposant de +`watchdog_dnd.view` (lien présent, `/logs/` 200). + +Les scénarios équipements ont été exécutés sur un groupe quantitatif local : +déplacements 1 + 5 unités, refus d'une quantité excessive, individualisation +et réparation d'une unité, rebut confirmé d'une autre, et refus de déplacement +d'un luminaire fixe. Les événements et mouvements sont présents en base. + +Un balayage séquentiel des pages principales n'a révélé aucun nouveau 500. +Le seul défaut HTTP connu retrouvé est `/documents/` en 404 (UI-011). Les +watchdogs et intégrations restent hors périmètre et non sollicités.