📊 Statistiques — validation e2e
Cette page documente la validation du module natif « Statistiques » (fr.wseduc~stats,
servi à /stats) à l'aide d'un test Playwright automatisé.
Elle complète la description fonctionnelle des indicateurs (et les captures du tableau de bord) : Statistiques.
Périmètre testé​
Le module natif expose un tableau de bord d'usage agrégé par établissement : connexions, visiteurs uniques, comptes activés, application / support les plus utilisés, pics de connexion.
- Route :
/stats(à ne pas confondre avec l'application externe Matomo, qui couvre le suivi de navigation web). - Droits d'accès (
stats.view) : super-administrateur, administrateur local (ADML) et chef d'établissement (groupe Direction de la structure). - Scope : le périmètre « structure » est déterminé par le compte connecté. Un chef d'établissement ne voit que son établissement.
Test automatisé​
Le test vit dans le projet open-ent-e2e :
frontend/apps/open-ent-e2e/src/modules/39_statistiques_2d/01_acces_au_module.spec.ts
Il s'exécute sous le profil Chef d'établissement (emael.shafy001, chef du
collège CLG-Pierre Mendès France - Morlaix) et vérifie :
- l'accès Ă
/stats(HTTP 200, pas de redirection vers le login) ; - l'affichage du scope établissement (nom de la structure du compte) ;
- la présence des cartes d'indicateurs (41 éléments détectés) ;
- la bascule vue grille / vue liste.
Lancer le test​
cd frontend/apps/open-ent-e2e
BASE_URL=http://localhost:8090 \
npx playwright test --project=chef \
src/modules/39_statistiques_2d/01_acces_au_module.spec.ts
Les captures sont écrites sous test-results/screenshots/<profil>/39_statistiques_2d/
(le tableau de bord et la vue liste obtenus sont repris sur la page fonctionnelle
Statistiques).
Architecture retenue (Mongo)​
L'interface affiche des données réelles : connexions, visiteurs uniques, comptes activés, application et connecteur les plus utilisés, etc. — agrégées pour l'établissement du compte connecté.
Le frontend de cette version interroge Ă l'origine un backend PostgreSQL (PGStatsService).
Or l'ENT historise ses événements dans MongoDB (collection events), et le pipeline
PostgreSQL d'origine (microservice ODE : schéma stats dédié, parquet, synchronisation du
référentiel) n'est pas déployé sur cette plateforme.
La donnée est donc servie depuis MongoDB :
- Les événements (
events) sont agrégés par le mécanisme entcore (org.entcore.common.aggregation) dans la collectionstats, déclenchable viaPOST /stats/recalculate/:from/:to(super-admin) ou le cronaggregation-cron. - Le service de lecture
StatsServiceMongoImpl.listStatsa été adapté pour comprendre le contrat du frontend (indicatoraccounts/access,frequency,entity,entitylevel,from/to) et servir ces agrégats Mongo au format attendu (StatsAccountsResponse/StatsAccessResponse), regroupés par période côté serveur.
Limites connues : l'agrégation Mongo ne stocke pas le type d'appareil ni le détail horaire. Les cartes « Support le plus utilisé » et « Pic de connexions journalier » restent donc vides ; tous les autres indicateurs sont alimentés.