docs(audit): documenter les correctifs P1 locaux

This commit is contained in:
root 2026-08-22 13:10:43 +00:00
parent 5238b18e39
commit 5b63d7d5cd
3 changed files with 64 additions and 4 deletions

View file

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

View file

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

View file

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