Skip to main content

📊 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 :

  1. l'accès à /stats (HTTP 200, pas de redirection vers le login) ;
  2. l'affichage du scope établissement (nom de la structure du compte) ;
  3. la présence des cartes d'indicateurs (41 éléments détectés) ;
  4. 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 :

  1. Les événements (events) sont agrégés par le mécanisme entcore (org.entcore.common.aggregation) dans la collection stats, déclenchable via POST /stats/recalculate/:from/:to (super-admin) ou le cron aggregation-cron.
  2. Le service de lecture StatsServiceMongoImpl.listStats a été adapté pour comprendre le contrat du frontend (indicator accounts/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.