270 lines
11 KiB
Markdown
270 lines
11 KiB
Markdown
|
|
# Réaudit fonctionnel, technique et UI
|
||
|
|
|
||
|
|
Date : 14 août 2026
|
||
|
|
|
||
|
|
État audité : branche `main`, commit `8f276b5`
|
||
|
|
|
||
|
|
Périmètre : routes Flask, templates actifs, permissions, données MariaDB,
|
||
|
|
planification, intégrations, Docker, sauvegardes et tests.
|
||
|
|
|
||
|
|
## Verdict
|
||
|
|
|
||
|
|
Le projet est utilisable comme environnement de développement et de
|
||
|
|
démonstration. Il n'est pas encore prêt pour une utilisation réelle au collège.
|
||
|
|
Les principaux blocages sont la planification préventive incohérente, plusieurs
|
||
|
|
pages en erreur, les vocabulaires de statuts divergents, le compte de test
|
||
|
|
`admin/admin`, l'autorisation des documents et une stratégie de restauration
|
||
|
|
incomplète.
|
||
|
|
|
||
|
|
Le dépôt était propre et synchronisé au début de l'audit. L'audit n'a modifié ni
|
||
|
|
la base ni les données de production.
|
||
|
|
|
||
|
|
## Mesures et contrôles
|
||
|
|
|
||
|
|
- 319 règles d'URL et 317 endpoints enregistrés ;
|
||
|
|
- 121 routes GET fixes testées avec un compte administrateur ;
|
||
|
|
- 67 tests automatisés réussis ;
|
||
|
|
- 163 appels à `render_template`, pour 138 templates distincts ;
|
||
|
|
- 15 liens `url_for()` invalides dans les templates actifs ;
|
||
|
|
- 32 noms de templates dupliqués entre le dossier global et les blueprints ;
|
||
|
|
- 5 pages fixes reproduisent une erreur ;
|
||
|
|
- 376 équipements et 470 tâches planifiées dans la base auditée ;
|
||
|
|
- environ 1,15 Mo de HTML pour la liste des 376 équipements.
|
||
|
|
|
||
|
|
## Blocages P0
|
||
|
|
|
||
|
|
### Authentification
|
||
|
|
|
||
|
|
Le compte de test `admin/admin` est actif. Avant ouverture à d'autres
|
||
|
|
utilisateurs, il faut supprimer ce mot de passe, imposer un changement au
|
||
|
|
premier accès, refuser les mots de passe faibles et journaliser les échecs de
|
||
|
|
connexion.
|
||
|
|
|
||
|
|
### Planification préventive
|
||
|
|
|
||
|
|
La base contient 330 tâches de lot et 470 échéances, dont 300 placées un
|
||
|
|
week-end. Les 330 tâches importées sont actuellement classées comme
|
||
|
|
calendaires. Les règles gel, orage, saison, compteur et événement ne sont donc
|
||
|
|
pas correctement représentées.
|
||
|
|
|
||
|
|
Deux chemins de génération coexistent. Le chemin historique ignore une partie
|
||
|
|
du calendrier de travail. Le moteur récent traite mieux les déclencheurs mais
|
||
|
|
ne recalcule pas toujours la prochaine date à partir de la dernière réalisation.
|
||
|
|
|
||
|
|
Un seul moteur doit :
|
||
|
|
|
||
|
|
- partir de la dernière exécution ;
|
||
|
|
- respecter périodicité, anticipation et jours travaillés ;
|
||
|
|
- fermer les vacances scolaires par défaut ;
|
||
|
|
- accepter les jours exceptionnels avec horaires propres à chaque date ;
|
||
|
|
- distinguer calendrier, saison, météo, événement et compteur ;
|
||
|
|
- prévisualiser et réconcilier les échéances avant écriture ;
|
||
|
|
- empêcher les doublons par une contrainte en base.
|
||
|
|
|
||
|
|
### Pages en erreur et navigation
|
||
|
|
|
||
|
|
Les routes fixes suivantes ont échoué pendant le test :
|
||
|
|
|
||
|
|
- `/admin/room-types/new` : template absent ;
|
||
|
|
- `/planning/availability/leave/new` : endpoint de retour inexistant ;
|
||
|
|
- `/room-types/new` : formulaire non transmis au template ;
|
||
|
|
- `/yeastar/api/extensions` : erreur 500 lorsque Yeastar est absent ;
|
||
|
|
- `/yeastar/config` : accès incorrect à une configuration vide.
|
||
|
|
|
||
|
|
La création d'une tâche préventive référence aussi `LotTask` sans import local,
|
||
|
|
et les routes de formation construisent des attributs absents de leurs modèles.
|
||
|
|
|
||
|
|
### Statuts et tableau de bord
|
||
|
|
|
||
|
|
Les équipements présents utilisent notamment `en_service`, `en_panne`,
|
||
|
|
`en_maintenance`, `hs`, `a_jeter` et `jete`, tandis que certains indicateurs
|
||
|
|
recherchent encore `actif` ou `panne`. Les totaux du tableau de bord peuvent
|
||
|
|
donc être faux. L'urgence mélange par endroits le statut et la priorité, et le
|
||
|
|
stock faible est encore fixé à zéro.
|
||
|
|
|
||
|
|
Une énumération unique, une migration des valeurs et des tests de statistiques
|
||
|
|
sont nécessaires.
|
||
|
|
|
||
|
|
### Intégrité des interventions
|
||
|
|
|
||
|
|
Une intervention générale sans équipement peut être associée silencieusement
|
||
|
|
au premier équipement de la base. Une intervention doit pouvoir cibler un
|
||
|
|
équipement, une salle, une zone, un bâtiment, un logement ou aucun objet
|
||
|
|
patrimonial, sans attribution artificielle.
|
||
|
|
|
||
|
|
Le message Outlook ou ENT à l'origine d'une intervention doit être conservé en
|
||
|
|
lecture seule au lieu d'être supprimé après conversion.
|
||
|
|
|
||
|
|
### API, documents et historique
|
||
|
|
|
||
|
|
L'authentification API lit un attribut `api_key` absent du modèle clé/valeur.
|
||
|
|
Les futures clés doivent être hachées, révocables, expirables, limitées par
|
||
|
|
permission et auditées.
|
||
|
|
|
||
|
|
Le blueprint `documents` n'est pas classé explicitement dans les permissions :
|
||
|
|
la lecture peut hériter d'un droit trop large tandis que les mutations exigent
|
||
|
|
un droit système. Les droits doivent venir de l'objet parent. Il faut également
|
||
|
|
contrôler MIME, contenu, taille, checksum et suppression logique.
|
||
|
|
|
||
|
|
Les changements de statut et autres historiques ne sont pas réellement
|
||
|
|
immuables s'ils sont supprimés en cascade avec l'intervention.
|
||
|
|
|
||
|
|
### Sauvegarde et exploitation
|
||
|
|
|
||
|
|
La sauvegarde actuelle ne constitue pas encore un plan de reprise : les uploads
|
||
|
|
et la configuration ne sont pas couverts de bout en bout, il n'y a pas de copie
|
||
|
|
chiffrée hors machine et aucune restauration régulière n'est vérifiée.
|
||
|
|
|
||
|
|
Avant production : reverse proxy HTTPS, cookies sécurisés, sauvegarde complète,
|
||
|
|
copie hors machine, restauration automatisée de contrôle et supervision des
|
||
|
|
échecs.
|
||
|
|
|
||
|
|
## État fonctionnel des données
|
||
|
|
|
||
|
|
| Objet | Nombre |
|
||
|
|
|---|---:|
|
||
|
|
| Bâtiments | 7 |
|
||
|
|
| Zones | 22 |
|
||
|
|
| Salles | 228 |
|
||
|
|
| Logements | 0 |
|
||
|
|
| Catégories | 36 |
|
||
|
|
| Lots | 91 |
|
||
|
|
| Équipements | 376 |
|
||
|
|
| Interventions | 0 |
|
||
|
|
| Tâches de lot | 330 |
|
||
|
|
| Tâches planifiées | 470 |
|
||
|
|
|
||
|
|
Points de qualité : 29 salles n'ont pas de zone, 87 lots déclarés présents
|
||
|
|
n'ont pas d'équipement directement associé et aucun lot n'est marqué absent.
|
||
|
|
Le diagnostic des lots devra compter séparément les équipements directs et les
|
||
|
|
équipements héritant du lot de leur groupe.
|
||
|
|
|
||
|
|
## Navigation et pages orphelines
|
||
|
|
|
||
|
|
Le contrôle automatique a trouvé 34 routes GET sans lien entrant. Elles ne sont
|
||
|
|
pas toutes destinées à la navigation : 19 sont des API, exports, redirections
|
||
|
|
ou formulaires enfants qui doivent être ouverts depuis leur liste parente.
|
||
|
|
|
||
|
|
Les accès directs utiles ajoutés au menu sont :
|
||
|
|
|
||
|
|
- profil utilisateur ;
|
||
|
|
- zones et historique des compteurs ;
|
||
|
|
- ajout de compte et dossiers surveillés Outlook ;
|
||
|
|
- messages et interprétations ENT ;
|
||
|
|
- salles, personnels et professeurs PRONOTE ;
|
||
|
|
- configuration des identifiants et du watchdog DND Yeastar.
|
||
|
|
|
||
|
|
Les routes historiques `/admin/room-types`, `/admin/services` et
|
||
|
|
`/admin/staff` dupliquent des écrans métier existants. Elles ne doivent pas être
|
||
|
|
ajoutées comme seconds écrans dans le menu : elles doivent être redirigées vers
|
||
|
|
les pages canoniques puis supprimées. Les API et téléchargements ne sont pas des
|
||
|
|
pages de menu.
|
||
|
|
|
||
|
|
Une vérification automatique de navigation doit être ajoutée à la CI : toute
|
||
|
|
nouvelle page HTML GET sans paramètre doit soit recevoir un lien, soit être
|
||
|
|
explicitement déclarée comme page enfant, redirection ou écran interne.
|
||
|
|
|
||
|
|
## Proposition UI
|
||
|
|
|
||
|
|
### Architecture de navigation
|
||
|
|
|
||
|
|
Conserver cinq espaces principaux : Accueil, Patrimoine, Interventions,
|
||
|
|
Planning et Prévention. Les intégrations et l'administration restent réservées
|
||
|
|
aux utilisateurs autorisés. À terme, la longue liste actuelle d'intégrations
|
||
|
|
devrait devenir une page d'accueil « Intégrations » composée de cartes avec
|
||
|
|
état, configuration, dernière synchronisation et journaux.
|
||
|
|
|
||
|
|
### Tableau de bord
|
||
|
|
|
||
|
|
Afficher des cartes dépendant du rôle : tâches du jour, retards, urgences,
|
||
|
|
attente de pièce ou prestataire, contrats proches de l'échéance, stocks faibles,
|
||
|
|
lots incohérents et temps de prévention. Chaque carte doit ouvrir une liste déjà
|
||
|
|
filtrée.
|
||
|
|
|
||
|
|
### Inventaire
|
||
|
|
|
||
|
|
Ne plus rendre l'arbre complet. Charger progressivement : catégorie, bâtiment
|
||
|
|
ou logement, zone, salle, groupe puis unité. Ajouter recherche instantanée,
|
||
|
|
filtres mémorisés, sélection multiple et compteurs par niveau.
|
||
|
|
|
||
|
|
### Création d'équipements
|
||
|
|
|
||
|
|
Proposer trois parcours : fiche rapide, groupe quantitatif et assistant
|
||
|
|
multi-salles. Les valeurs venant du lot doivent être visibles comme héritées.
|
||
|
|
La création en masse doit offrir aperçu, validation des anomalies, rapport et
|
||
|
|
annulation.
|
||
|
|
|
||
|
|
### Interventions
|
||
|
|
|
||
|
|
Ajouter liste, Kanban et calendrier. La fiche doit utiliser une chronologie
|
||
|
|
unique pour statut, diagnostic, commentaires, photos, temps, pièces et visite
|
||
|
|
prestataire. La détection de récurrence doit être paramétrable selon la
|
||
|
|
catégorie : prise, fenêtre ou luminaire ne se traitent pas comme chaise ou
|
||
|
|
graffiti.
|
||
|
|
|
||
|
|
### Logements
|
||
|
|
|
||
|
|
Ajouter historique des occupants, états des lieux, clés, compteurs, documents,
|
||
|
|
inventaire et interventions. Les données personnelles de l'occupant exigent
|
||
|
|
une permission séparée de la simple consultation du patrimoine.
|
||
|
|
|
||
|
|
### Prévention
|
||
|
|
|
||
|
|
Séparer tableau de bord, agents, risques, actions, habilitations, formations,
|
||
|
|
incidents, DUERP et temps consacré. La cible de 10 % doit être calculée depuis
|
||
|
|
le temps réellement travaillé et tenir compte de chaque journée exceptionnelle
|
||
|
|
pendant les petites et grandes vacances.
|
||
|
|
|
||
|
|
### Composants et accessibilité
|
||
|
|
|
||
|
|
Réduire les pages de plusieurs centaines de lignes et les nombreux styles ou
|
||
|
|
scripts intégrés. Construire des composants communs pour champs, badges,
|
||
|
|
tableaux, filtres, états vides et erreurs. Corriger les blocs JavaScript nommés
|
||
|
|
`scripts` alors que le layout rend `extra_scripts`, ajouter des libellés aux
|
||
|
|
boutons icône et fournir les ressources critiques localement plutôt que par CDN
|
||
|
|
seulement.
|
||
|
|
|
||
|
|
## Feuille de route
|
||
|
|
|
||
|
|
### Lot 1 — Stabilisation
|
||
|
|
|
||
|
|
- supprimer le mot de passe de test ;
|
||
|
|
- corriger les cinq routes en erreur et les 15 liens invalides ;
|
||
|
|
- réparer création de tâche et formations ;
|
||
|
|
- unifier les statuts et les statistiques ;
|
||
|
|
- empêcher l'attribution artificielle des interventions ;
|
||
|
|
- tester chaque page fixe en CI.
|
||
|
|
|
||
|
|
### Lot 2 — Fiabilité métier
|
||
|
|
|
||
|
|
- fusionner les moteurs de maintenance ;
|
||
|
|
- réconcilier les 470 tâches ;
|
||
|
|
- intégrer complètement calendrier scolaire et horaires exceptionnels ;
|
||
|
|
- corriger permissions documents et clés API ;
|
||
|
|
- rendre les historiques non destructibles ;
|
||
|
|
- tester une restauration complète.
|
||
|
|
|
||
|
|
### Lot 3 — Parcours quotidiens
|
||
|
|
|
||
|
|
- refondre navigation et tableau de bord ;
|
||
|
|
- charger l'inventaire progressivement ;
|
||
|
|
- finaliser la création en masse ;
|
||
|
|
- compléter les logements ;
|
||
|
|
- ajouter le workflow et la récurrence des interventions.
|
||
|
|
|
||
|
|
### Lot 4 — Fonctions avancées
|
||
|
|
|
||
|
|
- générer les visites contractuelles ;
|
||
|
|
- tracer tous les mouvements de stock ;
|
||
|
|
- fiabiliser compteurs et consommables ;
|
||
|
|
- compléter prévention et DUERP ;
|
||
|
|
- fournir exports métier et suivi des coûts.
|
||
|
|
|
||
|
|
### Lot 5 — Mise en production
|
||
|
|
|
||
|
|
- HTTPS et configuration de production ;
|
||
|
|
- dépendances verrouillées et analyse de vulnérabilités ;
|
||
|
|
- sauvegardes chiffrées hors machine ;
|
||
|
|
- test de restauration ;
|
||
|
|
- supervision, accessibilité, tests mobiles et test de charge.
|