docs(audit): documenter les corrections des blocages
Some checks are pending
CI - Tests et Syntax / lint-and-test (push) Waiting to run

This commit is contained in:
root 2026-08-22 14:17:58 +00:00
parent f2783a05c8
commit ce6d8ae9de
4 changed files with 96 additions and 3 deletions

View file

@ -375,3 +375,47 @@ Les groupes `TEST_UI_EQ_CHAISES` (30 individuels) et
renvoient HTTP 500. `/equipments/<id>/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**.

View file

@ -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 |

View file

@ -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`.

View file

@ -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.