From 5b63d7d5cd5a40eb8ce7af8efe9c9f1c77903fe2 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 22 Aug 2026 13:10:43 +0000 Subject: [PATCH] docs(audit): documenter les correctifs P1 locaux --- docs/ui-audit/BUGS.md | 22 ++++++++++++++++++++++ docs/ui-audit/PROGRESS.md | 24 ++++++++++++++++++++---- docs/ui-audit/REPORT.md | 22 ++++++++++++++++++++++ 3 files changed, 64 insertions(+), 4 deletions(-) diff --git a/docs/ui-audit/BUGS.md b/docs/ui-audit/BUGS.md index 76804d5..64f6702 100644 --- a/docs/ui-audit/BUGS.md +++ b/docs/ui-audit/BUGS.md @@ -324,3 +324,25 @@ téléchargement/suppression dans le détail. - Impact : l'utilisateur ne sait pas si son fichier a été enregistré et ne peut pas le gérer depuis l'intervention. + +## Corrections locales — passe P1 + +Les éléments ci-dessous sont **CORRIGÉS DANS LE CODE — À REVALIDER SUR VM DE TEST**. +La VM et sa base `TEST_UI_*` ne sont pas accessibles depuis cet environnement. + +| Bug | Cause racine | Correction locale | Tests locaux | +|---|---|---|---| +| UI-001 | `ReusableContainer` manquait dans les imports de la route | Import explicite du modèle et chargement défensif de la page | `test_cleaning_module.py`, `test_ui_p1_regressions.py` | +| UI-002 | Le nom de contexte `config` masquait la configuration Flask dans `base.html`, en plus de l'import manquant | Import de `CleaningForecastConfig` et contexte renommé `forecast_config` | `test_ui_p1_regressions.py::test_cleaning_pages_load_without_reference_data` | +| UI-003 | La route ne fournissait pas `buildings` au template et n'assurait pas la cohérence zone/bâtiment | Contexte complet, validation serveur et conservation des saisies | `test_ui_p1_regressions.py::test_room_form_lists_buildings_and_rejects_cross_building_zone`, `test_equipment_forms.py` | +| UI-015 | Le nom entreprise était envoyé directement en base sans validation | Validation obligatoire et retour formulaire HTTP 400 | `test_ui_p1_regressions.py::test_empty_intervention_and_company_are_validation_errors` | +| UI-016 | Le titre et les dates d'intervention étaient parsés sans validation | Validation du titre et des dates/heures avec message français | `test_ui_p1_regressions.py::test_empty_intervention_and_company_are_validation_errors` | +| UI-017 | Le template appelait `interv.equipment.name` lorsque l'équipement était absent | Affichage salle/localisation générale de remplacement | `test_ui_p1_regressions.py::test_optional_location_is_safe_in_interventions` | +| UI-019 | Le dashboard appelait `interv.equipment.name` lorsque l'équipement était absent | Garde équipement/salle/aucune localisation | `test_ui_p1_regressions.py::test_optional_equipment_is_safe_on_dashboard` | +| UI-022 | La vue stock n'injectait pas `current_date`, utilisé par le template | Passage explicite de la date courante | `test_ui_p1_regressions.py::test_cleaning_pages_load_without_reference_data`, tests stock existants | +| UI-024 | `Decimal()` non protégé dans l'édition produit | Validation numérique et rollback sans 500 | `test_ui_p1_regressions.py::test_invalid_product_quantity_is_validation_error` | +| UI-030 | La fiche module utilisait des endpoints de documents inexistants et une relation dynamique directement dans Jinja | Endpoints réels, liste de documents matérialisée dans la route et template | `test_ui_p1_regressions.py::test_intervention_detail_template_exposes_document_actions` | +| UI-012 | Les groupes de navigation et liens métier étaient statiques | Filtrage des groupes, liens et raccourci logs par `has_permission()` | Vérification de compilation/rendu des templates et suite ciblée | + +Les résultats ci-dessus sont des tests automatisés locaux uniquement ; ils ne +valident pas la base distante ni le rendu sur la VM d'audit. diff --git a/docs/ui-audit/PROGRESS.md b/docs/ui-audit/PROGRESS.md index fa9d6a2..ee3f410 100644 --- a/docs/ui-audit/PROGRESS.md +++ b/docs/ui-audit/PROGRESS.md @@ -155,12 +155,28 @@ terminé. celui déjà réalisé sur entreprises, faute de navigateur disponible dans cette reprise. - La prévision détaillée `/cleaning/forecast/1` répond 200 et affiche stock, - consommation, sécurité et commande ; la configuration globale reste 500 - (UI-002). + consommation, sécurité et commande ; la configuration globale a été + corrigée dans le dépôt local (UI-002), à revalider sur VM. ## Prochaine étape Revalider la disponibilité, puis poursuivre les contrôles de formulaires, responsive/accessibilité et les scénarios stock non destructifs ; les -scénarios dépendant d'une salle restent bloqués par UI-003 et les 500 UI-001, -UI-002, UI-017 et UI-019. +scénarios dépendant d'une salle étaient bloqués par UI-003 et les 500 UI-001, +UI-002, UI-017 et UI-019 ; les correctifs sont maintenant dans le dépôt et +doivent être revalidés sur la VM. + +## Passe de corrections locales P1 — 2026-08-22 + +État : correctifs implémentés dans le dépôt, revalidation VM requise. + +Corrigés dans le code : UI-001, UI-002, UI-003, UI-012, UI-015, UI-016, +UI-017, UI-019, UI-022, UI-024 et UI-030. + +Tests locaux ajoutés dans `tests/integration/test_ui_p1_regressions.py` et +exécutés avec les suites équipements, nettoyage et audit intervention. + +À revalider sur VM : création salle avec bâtiments existants, trois pages +cleaning sur données `TEST_UI_*`, dashboard/liste avec relations nulles, +upload puis affichage d'un document, et visibilité des menus pour les profils +RBAC existants. diff --git a/docs/ui-audit/REPORT.md b/docs/ui-audit/REPORT.md index 30dc878..ccce599 100644 --- a/docs/ui-audit/REPORT.md +++ b/docs/ui-audit/REPORT.md @@ -86,6 +86,28 @@ Une soumission isolée du formulaire produit a dépassé 30 secondes. Elle n'a pas été répétée afin de respecter la faible capacité de la VM ; ce résultat reste classé comme instabilité à confirmer. +## Correctifs P1 réalisés dans le dépôt local + +Une passe corrective a traité les anomalies P1 documentées UI-001, UI-002, +UI-003, UI-012, UI-015, UI-016, UI-017, UI-019, UI-022, UI-024 et UI-030. +Les causes ont été corrigées dans les routes/templates concernés, avec +validation serveur des formulaires et filtrage de navigation via le RBAC +existant. Aucun watchdog, intégration externe, configuration générale ou +utilisateur réel n'a été modifié. + +Statut de chaque correctif : **CORRIGÉ DANS LE CODE — À REVALIDER SUR VM DE +TEST**. Les tests locaux ne donnent aucune garantie sur la base distante qui +contient les données `TEST_UI_*`. + +Tests locaux exécutés : `tests/integration/test_cleaning_module.py`, +`tests/integration/test_equipment_forms.py`, +`tests/integration/test_intervention_location_and_template_audit.py` et +`tests/integration/test_ui_p1_regressions.py`. + +La revalidation VM doit être faite après récupération des commits et, si le +déploiement utilise Docker, après reconstruction de l'image applicative. Aucun +test distant n'a été exécuté depuis cet environnement. + La soumission d'un formulaire de personnel prévention a rencontré le même blocage. Aucun retry rapproché n'a été effectué.