Catalogue d'événements
Défini dans packages/analytics/src/core/events.ts. Les noms et les charges utiles sont vérifiés
à la compilation, puis validés à l'exécution par Zod avant tout envoi.
C'est le seul fichier propre au projet : pour réutiliser les paquets ailleurs, on le remplace. Aucun adaptateur ne connaît un nom d'événement.
| Événement | Version | Propriétés | Émis par |
|---|---|---|---|
page_viewed | 1 | path, locale | PageTracker (intégration) |
search_performed | 1 | outcome, resultCount, locale | À brancher sur la recherche |
outbound_link_clicked | 1 | target, fromSection | À brancher sur OutboundLinkTracker |
record_viewed | 1 | kind, recordId, locale | Fiches hors personnes |
feature_used | 1 | feature, surface? | Libre |
Les cinq sont câblés depuis le 27/10/2026, chacun depuis un seul point d'appel partagé avec
les compteurs Prometheus (src/features/analytics/events.ts) :
| Événement | Où il est émis |
|---|---|
page_viewed | PageTracker, dans la mise en page |
search_performed | PagefindSearch, au même endroit que l'envoi vers /api/telemetry |
outbound_link_clicked | OutboundLinkTracker, avec la section d'origine en plus de la catégorie |
record_viewed | Fiches de structure, projet, groupe et thématique — jamais personne |
feature_used | Usage réel des filtres de liste |
record_viewed n'est pas émis sur les fiches de personnes : enregistrer quels chercheurs sont
consultés dépasse ce que l'ADR 006 autorise, et la DPO ne s'est pas prononcée.
Ce que le catalogue interdit volontairement
Le vocabulaire est fermé, dans la continuité de la route /api/telemetry existante :
- aucun terme de recherche :
search_performedne porte que l'issue et le nombre de résultats ; - aucune URL complète ni query string ;
recordIdest un identifiant public de structure (numéro RNSR), jamais un identifiant de personne ;fromSectionetsurfacesont des énumérations, pas du texte libre, pour borner la cardinalité.
Versionner un schéma
eventVersion accompagne chaque envoi. L'incrémenter dès qu'un changement casse la compatibilité :
propriété retirée, type modifié, sémantique différente. Ajouter une propriété facultative ne la
change pas.
Déduplication
eventId est un identifiant unique par événement. Les fournisseurs qui savent dédupliquer peuvent
s'en servir. La livraison reste « au mieux » : ni Umami ni Matomo ne garantissent l'unicité.
Ajouter un événement
- Déclarer le schéma dans
EVENT_SCHEMAS, avec sa version. - Le documenter ici, en indiquant qui l'émet.
- Vérifier que les propriétés respectent les interdits ci-dessus.
- L'appeler via
useTrackEvent()côté navigateur, ou le client serveur.
Aucune modification d'adaptateur n'est nécessaire.