Skip to main content

Vie scolaire — détails techniques

Fiche fonctionnelle

Description et fonctionnalités de ce module : Vie scolaire.

Couverture de tests

4 scénario(s) e2e couvrent ce module — dossier apps/open-ent-e2e/src/modules/31_parametrages_vie_scolaire.

4 test(s) e2e dans 4 scénario(s) — voir le détail

Viescolaire 01_init_periodes_scolaires.spec.ts

  • initialisation des périodes scolaires

Vie scolaire — notifications e-mail (Présences) 02_notifications_emails.spec.ts

  • paramétrage des e-mails de notification

Vie scolaire — e-mail de rapport par académie (Présences) 03_email_par_academie.spec.ts (profil super-admin)

  • rapport d'appels agrégé par groupe académie (Collèges/Lycées → e-mail unique, MailHog)

Cahier de texte — paramétrage par classe/groupe 04_cahier_textes_classe_groupe.spec.ts

  • activation/désactivation d'une classe, persistance après rechargement
  • effet réel sur la recherche enseignant/classe du module Cahier de textes (/diary)

➡️ Statut dans le dashboard E2E · Résultats détaillés

Côté dashboard admin (viescolaire-admin), un scénario e2e dédié couvre l'activation du trombinoscope, les onglets Rapports/Erreurs et l'export HTML/PDF : apps/dashboard-e2e/src/modules/03_admin/15_trombinoscope_export.spec.ts.

Trombinoscope — implémentation de l'export

Endpoint unique paramétré, réservé aux gestionnaires (droit viescolaire.trombinoscope.manage) :

GET /viescolaire/structures/:structureId/trombinoscope/export
?scope=structure|classe|groupe&scopeId=<id>&scopeName=<nom>&format=html|pdf
  • TrombinoscopeController::exportTrombinoscope (contrôleur) délègue à DefaultTrombinoscopeExportService (service/impl/).
  • Résolution des élèves : ClasseService.getEleveClasse (agnostique classe / groupe fonctionnel / groupe manuel) pour classe/groupe ; ClasseService.listClasses(classOnly=true) + une résolution par classe pour structure.
  • Photos : lues en mémoire via Storage.readFile (pas sendFile, qui écrit directement dans la réponse HTTP) et embarquées en base64 dans le HTML — le micro-service externe node-pdf-generator n'a pas accès aux cookies de session ni au Storage ENT.
  • Rendu HTML : template Mustache template/trombinoscope/export/trombinoscope-export.txt, traité via FileTemplateProcessor (et non TemplateProcessor seul, qui compile la chaîne passée en argument comme template littéral au lieu de charger un fichier — piège rencontré pendant le développement, qui touchait aussi TrombinoscopeReport, corrigé au passage).
  • PDF : org.entcore.common.pdf.PdfGenerator (PdfFactory), même pattern que le module workflowhub — pas de dépendance Maven supplémentaire.
  • Export « structure » : un fichier HTML/PDF par classe, écrit dans un dossier temporaire puis compressé via org.entcore.common.utils.Zip (niveau de compression explicite 0-9 requis par le service de zip côté plateforme — Deflater.DEFAULT_COMPRESSION (-1) est rejeté).

Conformité

Évaluation au référentiel Open ENT NG (module vie-scolaire).

Maillon de la chaîne qualitéRéférence
🎯 Fonctionnalités attenduesfiche fonctionnelle
🧪 Tests réaliséscouverture e2e
✅ Tests de conformitétableau de conformité