diff --git a/docs/ui-audit/BUGS.md b/docs/ui-audit/BUGS.md index 5a26e41..c9ac64b 100644 --- a/docs/ui-audit/BUGS.md +++ b/docs/ui-audit/BUGS.md @@ -375,3 +375,47 @@ Les groupes `TEST_UI_EQ_CHAISES` (30 individuels) et renvoient HTTP 500. `/equipments//hierarchy` renvoie une liste de zones vide. Les déplacements et cycles de vie restent donc bloqués. Anomalie documentée uniquement, sans correction pendant cette passe. + +## Passe corrective ciblée — 22 août 2026 + +Les trois blocages restants ont été corrigés dans le dépôt local. La VM +auditée n'est pas accessible depuis cette passe : chaque statut ci-dessous +reste **CORRIGÉ DANS LE CODE — À REVALIDER SUR VM**. + +### UI-017 — liste des interventions + +- Cause : les templates de liste et du planning préventif accédaient + directement à `interv.equipment.name` pour des relations optionnelles. +- Correction : affichage conditionnel de l'équipement, puis de la salle, puis + du libellé humain `Localisation non renseignée`. +- Fichiers : les deux templates `interventions/index.html` et les deux + templates `interventions/planning.html`. +- Tests : quatre combinaisons salle/équipement couvrent liste, détail et + dashboard. +- Statut : **CORRIGÉ DANS LE CODE — À REVALIDER SUR VM**. + +### UI-031 — détail et hiérarchie des équipements groupés + +- Cause du détail 500 : le template global affichait + `equipment.preventive_count`, propriété absente du modèle `Equipment`. +- Correction : ajout de cette propriété calculée au modèle, sans migration. +- Cause de la hiérarchie vide : l'endpoint ne sélectionnait que les + descendants ; une famille quantitative sans enfant produisait zéro ligne, + même si sa salle était renseignée. +- Correction : si aucun descendant n'est trouvé, l'équipement racine est + ajouté avec son bâtiment, sa zone, sa salle et sa quantité effective. +- Fichiers : `app_new/core/models/equipment.py` et + `app_new/equipments/main.py`. +- Tests : famille quantitative de quantité 30, détail rendu et endpoint + hierarchy vérifié avec zone/salle/quantité. +- Statut : **CORRIGÉ DANS LE CODE — À REVALIDER SUR VM**. + +### Résidu UI-012 — lien Journaux + +- Cause : la navigation vérifiait `audit.view`, alors que la garde globale de + `logs.index` exige `watchdog_dnd.view`. +- Correction : le bouton `/logs/` utilise désormais exactement + `has_permission('watchdog_dnd.view')`. +- Fichier : `app_new/templates/base.html`. +- Tests : concordance vérifiée avec `required_permission('logs.index', 'GET')`. +- Statut : **CORRIGÉ DANS LE CODE — À REVALIDER SUR VM**. diff --git a/docs/ui-audit/PAGES_MATRIX.md b/docs/ui-audit/PAGES_MATRIX.md index 078352f..e4e3fd3 100644 --- a/docs/ui-audit/PAGES_MATRIX.md +++ b/docs/ui-audit/PAGES_MATRIX.md @@ -7,7 +7,7 @@ Matrice initiale issue du smoke test authentifié avec `chatgpt`. | Dashboard | `/` | 200 | Revalidé VM ; affiche « Aucun équipement » si la relation est absente | | Alertes | `/alerts` | 200 | Accessible | | Messagerie | `/messagerie` | 200 | Accessible | -| Interventions | `/interventions/` | 500 | UI-017 toujours reproductible avec intervention sans salle/équipement | +| Interventions | `/interventions/` | 500 | UI-017 corrigé dans le code, à revalider sur VM | | Nouvelle intervention | `/interventions/new` | 200 | Formulaire affiché | | Planning | `/planning/` | 200 | Smoke test | | Horaires | `/planning/time` | 200 | Formulaire affiché | @@ -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 observé après création de `TEST_UI_EQ_CHAISES` | +| Équipement détail groupe | `/equipments/1` | 500 | UI-031 corrigé dans le code, à revalider sur VM | | 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 | Incohérence à analyser | +| Logs | `/logs/` | 403 | Résidu UI-012 corrigé dans le code ; bouton aligné sur `watchdog_dnd.view` | | 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 30b5d74..f35aa65 100644 --- a/docs/ui-audit/PROGRESS.md +++ b/docs/ui-audit/PROGRESS.md @@ -206,3 +206,19 @@ Suite complète locale : **117 passed, 1 failed, 1 error**. Le test échoué est (la configuration de contexte GMAO est explicitement exclue) ; son teardown échoue également sur une contrainte `gmao_context.user_id` nulle. Aucun échec des tests ciblés par les correctifs P1. + +## Passe corrective ciblée locale — 22 août 2026 + +UI-017, UI-031 et le résidu UI-012 sont **CORRIGÉS DANS LE CODE — À +REVALIDER SUR VM**. UI-017 accepte désormais les quatre combinaisons de +relations optionnelles ; UI-031 rend les fiches d'équipement groupé et sa +hiérarchie même sans enfant ; UI-012 aligne le bouton Journaux sur +`watchdog_dnd.view`. + +Tests ciblés : **10 passed** ; suites demandées : **19 passed**. +Suite complète : **120 passed, 2 failed, 1 error**. Le test historique de +lookback GMAO échoue toujours avec son teardown ; un test stock échoue aussi +après modification du rôle admin par les tests RBAC. Ces résultats sont hors +des trois correctifs ciblés. + +Commits : `8c54f46`, `864f65d`, `f2783a0`. diff --git a/docs/ui-audit/REPORT.md b/docs/ui-audit/REPORT.md index 0a9df62..549fecc 100644 --- a/docs/ui-audit/REPORT.md +++ b/docs/ui-audit/REPORT.md @@ -158,3 +158,36 @@ références, mouvements et emplacements. Les écrans utilisateurs/rôles ont également été sollicités avant l'interruption du lot ; aucune régression 500 n'a été observée sur les pages parcourues, en dehors de UI-017 et UI-031 déjà documentés. + +## Passe corrective ciblée locale — 22 août 2026 + +Cette passe n'a traité que UI-017, UI-031 et le résidu UI-012. La VM n'étant +pas accessible depuis l'environnement de correction, aucun résultat ne vaut +validation VM. + +1. **UI-017** : les templates supposaient que `Intervention.equipment` + existait. Les quatre combinaisons de relations sont maintenant rendues + avec des libellés humains, dont « Localisation non renseignée ». +2. **UI-031** : la fiche demandait une propriété absente + (`preventive_count`) ; elle existe maintenant sur `Equipment`. La requête + de hiérarchie ignorait aussi la racine sans enfant ; elle la réinjecte + avec sa localisation effective. +3. **UI-012** : le menu contrôlait `audit.view` alors que `/logs/` exigeait + `watchdog_dnd.view`. Le template et la garde utilisent désormais la même + permission. + +### Validation locale + +- `test_ui_p1_regressions.py` : **10 passed**. +- Suites ciblées P1/équipements/cleaning/interventions : **19 passed**. +- `pytest` complet : **120 passed, 2 failed, 1 error**. Les échecs sont le + test historique GMAO/lookback et un test stock dépendant de l'état du rôle + admin après les tests RBAC ; le teardown du premier échoue également. Aucun + test ciblant les trois correctifs ne se termine en échec. + +### Revalidation VM requise + +Après déploiement des commits `8c54f46`, `864f65d` et `f2783a0`, vérifier avec +les données `TEST_UI_*` : `/interventions/`, `/`, `/equipments/1`, +`/equipments/2`, `/equipments/1/hierarchy`, et la visibilité de `/logs/` pour +un compte sans `watchdog_dnd.view`. Aucune migration Alembic n'est nécessaire.