Le dépôt sortait 7 erreurs eslint au début de cette série de correctifs,
dont certaines antérieures. Il n'en reste aucune.
- Dashboard et Users appelaient setState de façon synchrone dans un
effet, ce qui provoque des rendus en cascade. Le chargement initial
passe par une fonction asynchrone qui n'écrit qu'après l'await, avec
annulation au démontage. Sur le Dashboard, l'indicateur de chargement
est allumé par les gestionnaires d'événement, et le bouton Actualiser
relance l'effet via un compteur plutôt qu'en appelant le chargement.
- L'import ExternalLink de Documentation.jsx n'était pas utilisé.
- AuthContext.jsx exportait à la fois un composant, le contexte et un
hook, ce qui désactivait le rafraîchissement à chaud de Vite pour ce
fichier. Le contexte et le hook vivent désormais dans leurs propres
modules ; les 5 fichiers concernés sont mis à jour.
- KpiCard était déclaré dans Dashboard.jsx : sorti dans son propre
fichier avec ses styles, les règles CSS devenues orphelines sont
supprimées de Dashboard.module.css.
- La clé localStorage 'ds_user' était définie séparément dans api.js
(USER_KEY) et AuthContext.jsx (STORAGE_KEY). AuthContext importe
désormais la constante exportée par api.js : un renommage ne peut
plus casser silencieusement la restauration de session.
- hooks/useApi.js n'était importé nulle part : supprimé.
Les select de service et catégorie utilisaient getServices()/getCategories(),
soit les référentiels complets — dont certaines entrées (ex. "Business
Intelligence") n'ont aucun monitoring rattaché et menaient sur un dashboard
vide. Bascule vers le nouvel endpoint GET /dashboard/filtres (VUE_CONSO),
avec filtrage en cascade : sélectionner un service restreint la liste des
catégories proposées à celles qui ont réellement des résultats pour ce
service.