13 KiB
Avancement de l'audit
Dernière mise à jour : 22 août 2026 — reprise après interruption.
État global
État : en cours. Revalidation VM P1 effectuée ; l'audit fonctionnel doit continuer sur les scénarios encore testables.
Phases
| Phase | État | Notes |
|---|---|---|
| Santé, connexion, version | Terminé | Version 0.1.0-dev.2, commit unknown |
| Menu et smoke test | Partiel | Pages principales testées séquentiellement |
| RBAC | Partiel avancé | multi-rôles, retrait/deny et accès directs testés ; menu non filtré |
| Établissement | Partiel | Sites, bâtiments et zones créés ; confusion site/bâtiment |
| Salles | Partiel avancé | Sélection bâtiment/zone corrigée et création/rejet croisé revalidés |
| Équipements | Bloqué partiel | Groupes créés, mais détail /equipments/<id> en 500 (UI-031) |
| Interventions | Partiel | Création/validation et dashboard revalidés ; liste encore en 500 (UI-017) |
| Planning | Partiel | time/availability/tâches testés ; disponibilité semble dupliquée |
| Prévention | Partiel | Validation invalide et création d'un agent TEST_UI vérifiées |
| Stock / produits | Partiel avancé | Produit/référence/conditionnement, emplacements, lots, réception, sortie FEFO, transfert et inventaire testés ; état du stock 500, transvasement/prévision 500 |
| Personnel | Partiel | Agent TEST_UI créé et retrouvé dans la page prévention |
| Documents | Partiel | /documents/ 404 ; /cleaning/documents 200 ; upload réel non effectué faute de cible publique stable |
| Responsive/accessibilité | Partiel | entreprises 390x844 et 768x1024 sans débordement |
Dernière action réussie
- Connexion
chatgpt. - Vérification HTTP des pages principales.
- Création de données
TEST_UI_*listées dansCREATED_TEST_DATA.md. - Smoke responsive
/companies/en 390x844 et 768x1024 sans débordement. - Formulaire produit ouvert et rempli ; la soumission est restée bloquée plus de 30 secondes, sans nouvelle tentative pour ne pas charger la VM.
- Formulaire prévention ouvert et rempli ; la soumission est restée bloquée, sans répétition.
Blocages
/cleaning/transvasement→ 500./cleaning/forecast-config→ 500./equipments/rooms/new→ aucun bâtiment dans le sélecteur.- L'instance a déjà subi des indisponibilités temporaires lors d'un crawl trop rapide ; reprendre avec une seule session et des délais longs.
- La soumission de
/cleaning/products/newa de nouveau dépassé le délai lors d'un test isolé ; données de produit à vérifier avant toute répétition. - La soumission d'un agent prévention a également dépassé le délai ; analyser les logs/ressources avant de qualifier le comportement applicatif.
- Intervention ID 1 créée sans salle : détail/édition 200, liste principale 500 ; cas ajouté aux bugs UI-017/UI-018.
- Reproduction du tableau de bord après cette création :
/répond 500 ; le journal confirmedashboard/index.html:495(interv.equipment.namesur une relation nulle), ajouté en UI-019. - Smoke complémentaire : scheduled, meters, consumables, admin-tasks, rules,
formations personnelles, prévention, lifecycle, à jeter, anciens, services
et types de salles répondent 200 ;
/documents/répond 404. - Création RBAC : rôles 9/10 et utilisateurs 3/4 ; union multi-rôles, deny individuel et 403 directs vérifiés.
- Filtres lots/équipements/interventions testés ; pagination incohérente sur interventions/entreprises et absence de recherche visible sur entreprises.
- Validations vides : entreprises et interventions renvoient 500 ; rôles et produits restent sur le formulaire avec validation.
- Smoke complémentaire : stock/emplacements/transferts/mouvements/inventaire, création équipement avancée et assistant inventaire, pièces, contrats, formations, services, types de salles, lot, tâches et formulaires de disponibilité/fermeture répondent 200.
- Navigation :
/logs/reste visible dans le HTML mais répond 403 pourchatgpt, ajouté en UI-020. - Les liens supplémentaires du menu (exports, logements, compteurs, planificateur, profil, alertes et messagerie) ont répondu 200 ; aucun bouton de synchronisation/intégration n'a été déclenché.
/planning/répond 200 en environ 5,5 s et produit une page d'environ 347 Ko sur cette VM ; à surveiller comme performance perçue, sans test de charge.- Dernier contrôle santé :
/health/répond 200, base MySQL connectée, environnementdevelopment, version0.1.0-dev.2, commitunknown; un accès anonyme à/redirige correctement vers la connexion. - Contrôle des identifiants inexistants : équipements, interventions, entreprises, lots, produits, pièces, contrats et formations renvoient tous 404 proprement (aucun 500 observé).
- Paramètres de liste invalides (
page=abc, page négative, recherche avec caractères spéciaux, filtres inconnus) : les quatre URLs testées répondent 200 sans erreur serveur. - Connexion avec identifiants inconnus : le formulaire reste en 200 et affiche un message d'erreur, sans redirection ni ouverture de session.
- La validation métier prévention
/prevention/riskavec unité/danger vides et cotations hors plage redirige vers la page avec message d'erreur, sans créer de donnée. - Création personnel :
TEST_UI_AGENT ENTRETIENa été créé via/prevention/staff, puis retrouvé dans la page (HTTP 302 puis 200). - Création prévention complémentaire : risque DUERP et entrée de registre
TEST_UI_*créés, puis retrouvés dans/prevention/après redirection. - Export DUERP :
/prevention/duerp.csvrépond 200 avec un CSV UTF-8 et un nom de fichier de téléchargement correct. - Les formulaires de fermeture et de nouvelle tâche planning s'appuient sur l'injection JavaScript du CSRF ; sans ce script, aucun champ caché n'est présent et le serveur renvoie 400 (UI-021).
- La vue journalière
/planning/day/2026-08-25et les écrans planning scheduled/meters/consumables/admin-tasks/rules répondent 200. - API anonyme :
/api/v1/status,/api/v1/equipmentset/api/v1/interventionsrenvoient chacun 401 JSON avec un message d'authentification, conformément au deny-by-default. - Les listes pièces, services, contrats et formations ne contenaient pas de lien de détail au moment du test ; le détail de l'entreprise ID 1 répond 200.
- Les POST vides avec CSRF valide sur réception, sortie et transfert restent sur le formulaire en 200 ; l'inventaire n'offre aucune ligne d'action tant qu'aucun emplacement n'est disponible. Les POST sans CSRF testés plus tôt renvoient 400.
- Scénario stock sans salle : produit, référence, conditionnement, deux
emplacements et deux lots créés ; réception 2×5 L et 3×5 L réussie ; sortie
d'1 L et transfert de 5 L réussis. Le journal confirme que la sortie a
choisi
TEST_UI_LOT_EARLY(DLU la plus proche), donc FEFO fonctionne sur ce cas. Inventaire validé avec correction tracée ;/cleaning/stockrépond toutefois 500 après ces opérations (UI-022). - Fiches papier : profil
TEST_UI_PROFIL_ENTRETIENcréé puis fiche/cleaning/requests/print/1vérifiée avec le personnel TEST_UI. Aucun produit n'était autorisé sur les fiches carrequest_enabledest désactivé par défaut ; ce point limite le test des lignes imprimées. - Le champ métier
request_enabledn'est exposé ni à la création ni à l'édition d'un produit ; aucun produit n'est donc sélectionnable dans le profil (UI-023). - Sorties stock invalides (
-1puis999999) : le formulaire reste en 200 avec message métier, sans mouvement supplémentaire ni stock négatif. - Création d'un produit générique portant un nom déjà existant : le formulaire reste en 200 et affiche « existe déjà », sans doublon détecté.
- Édition produit avec
stock_minimum=abc: HTTP 500 (UI-024), alors que la création gère ce cas avec un message d'erreur. - Création d'une seconde référence commerciale portant le même nom : acceptée sans avertissement, deux lignes apparaissent (UI-025).
- Vérification structurelle des formulaires : les labels produits/stock et
prévention sont visuellement présents mais non reliés par
for/id, ajouté en UI-026. - L'étiquette du mouvement de réception
/cleaning/labels/1répond 200 et reprend le produit de test ; les identifiants sans mouvement retournent 404. - Action prévention
TEST_UI_ACTION_SECURITEcréée puis testée avec les statutsen_cours, invalide etcloturee; le statut invalide redirige sans modifier l'action et la clôture est persistée. - Le formulaire d'habilitation accepte une date d'expiration antérieure à la date d'émission (POST 302 sans erreur), ajouté en UI-027.
- Après cette soumission, aucun tableau d'habilitations n'est rendu sur
/prevention/, ajouté en UI-028. - Les listes produits, références, mouvements et profils de demande ont été inspectées : aucun champ de recherche, filtre ou pagination visible (UI-029).
- Transfert d'une quantité supérieure au stock : le formulaire reste en 200 avec message métier et aucun transfert supplémentaire.
- Document artificiel
test_document.pdftéléversé sur l'intervention 1 : téléchargement ID 1 répond 200, mais le détail ne l'affiche pas (UI-030). - Téléversement d'un fichier
.exeartificiel : redirection avec rejet et aucun second document téléchargeable (ID 2 renvoie 404). - Vérification responsive structurelle : les pages produits, stock, prévention, planning et intervention contiennent la meta viewport et des classes Bootstrap responsive ; le seul rendu multi-viewport visuel reste celui déjà réalisé sur entreprises, faute de navigateur disponible dans cette reprise.
- La prévision détaillée
/cleaning/forecast/1répond 200 et affiche stock, 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
Qualifier ultérieurement UI-017 et UI-031 dans une passe de code dédiée, puis reprendre les déplacements et cycles de vie d'équipements. Les contrôles stock, formulaires et planning indépendants restent à poursuivre.
Revalidation VM — 22 août 2026
- VALIDÉ SUR VM : UI-001, UI-002, UI-003, UI-015, UI-016, UI-019, UI-022, UI-024 et UI-030.
- TOUJOURS REPRODUCTIBLE : UI-017 (
/interventions/en 500 avec relation salle absente). - CORRIGÉ PARTIELLEMENT — PROBLÈME RÉSIDUEL : UI-012 (lien global Journaux encore visible malgré le 403).
Le dashboard est revenu en 200 et affiche « Aucun équipement ». Six salles, deux groupes d'équipements, une entreprise, une intervention, un PDF artificiel et un mouvement de transvasement ont été ajoutés et laissés dans la base ; aucune donnée antérieure n'a été supprimée.
Contrôle de non-régression séquentiel après revalidation : bâtiments, zones, salles, équipements, entreprises, prévention, planning, produits, références, mouvements et emplacements renvoient 200. La VM reste lente mais stable sur ce lot (environ 0,8 à 3,7 s par page) ; aucun test de charge n'a été lancé.
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.
Dernière exécution locale ciblée : 16 passed (pytest sur les quatre
fichiers concernés).
Suite complète locale : 117 passed, 1 failed, 1 error. Le test échoué est
test_gmao_config_caps_lookback_at_one_year, hors périmètre de cette passe
(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.