Skip to main content

Fil de nouveautés — détails techniques

Fiche fonctionnelle

Description et fonctionnalités de ce module : Fil de nouveautés.

Couverture de tests

1 scénario(s) e2e couvrent ce module — dossier apps/open-ent-e2e/src/modules/17_fil_nouveautes.

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

Fil de nouveautés 01_acces_et_chargement_du_fil.spec.ts

  • accès et chargement du fil

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

La page « toutes les notifications » du dashboard (/dashboard/home/notifications) est en outre couverte par apps/dashboard-e2e/src/tests/13_notifications_page.spec.ts (rendu du fil et des dates importantes, « Tout marquer comme lu », lien interne de la cloche), exécutée sous le profil chef.

Intégration dashboard (page plein écran)

Sur Open ENT v3, le fil de nouveautés est intégré au dashboard plutôt que servi par l'ancienne application timeline. L'expérience repose sur le cœur timeline entcore existant, enrichie côté dashboard sans patch du backend.

AspectMise en œuvre
Pageapps/dashboard/src/app/home/notifications/page.tsx — onglets Fil de nouveautés (paginé, filtres par application, regroupement par période) et Dates importantes.
Hooksrc/hooks/useNotifications.ts — pagination via @openent/ts-client (loadNotifications/hasMorePage), filtre preferences.type, showMine, polling optionnel (badge de la cloche).
État de lectureentcore ne marque jamais une notification « lue » côté serveur (markEventsAsRead est inutilisé). L'état « non lu » est dérivé d'un horodatage lastRead persisté en préférence utilisateur /userbook/preference/timelineRead ; « Tout marquer comme lu » avance cet horodatage.
Dates importantesAgrégées côté dashboard : GET /api/notifications/agendaGET /calendar/calendars puis GET /calendar/events/widget (événements dont endMoment ≥ maintenant).
Anniversaires (option)GET /api/notifications/birthdaysGET /userbook/person/birthday (élèves de la classe, mois courant). Désactivés par défaut (opt-in), préférence dans timelineRead.
Routes proxysrc/app/api/notifications/{read-state,agenda,birthdays} (+ defaults, preferences, :id/discard existantes), authentifiées via buildOpenEntHeaders.
Pas de patch entcore

Cette fonctionnalité est 100 % côté dashboard (frontend) : aucun module entcore n'est modifié, donc pas de tag/nexus/fat-jar. Le déploiement suit le cycle habituel du dashboard (build nx + image docker + rollout).

Surface historique /timeline/timeline (AngularJS entcore)

La page /timeline/timeline reste servie par l'application timeline entcore (AngularJS), en parallèle de l'intégration dashboard. Son rendu par défaut a été rendu plus sobre :

AspectMise en œuvre
Filtre déplié à l'ouverturetimeline/src/main/resources/public/ts/timeline/controller.ts$scope.display = { slide: true } (panneau « Filtrer vos nouveautés » ouvert d'emblée ; auparavant replié). Même comportement pour la variante timeline2 (ts/timeline2/directives/timeline.directive.ts : timeline GSAP jouée d'emblée).
Types tous cochésinitFilters() coche tous les types de notification par défaut (aucune préférence utilisateur).
Libellés d'état vide sobresi18n empty.timeline.notifications.{title,nofilters.title,noresults.title} (portal + portal-mui) : « Aucune nouveauté pour le moment », « Aucun filtre sélectionné », « Aucune nouveauté à afficher » — remplace l'ancienne blague « Qui a éteint la lumière ? ».
Sans illustrationRetrait de l'illustration « lumière éteinte » (empty-filters.svg / empty-timeline.svg) des écrans vides (public/template/notifications.html v1 + timeline.directive.html v2).
Patch entcore (contrairement à l'intégration dashboard)

Ces ajustements modifient bien le module entcore timeline (frontend + i18n). Ils sont déployés sous le pin 6.14.9-patched (tag 6.14.9-patched de open-ent/entcore-v2, sans bump de version), et non côté dashboard. Test e2e : tests/timeline-filtre-defaut.spec.ts (open-ent-mods).

Conformité

Évaluation au référentiel Open ENT NG (module timeline).

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