Skip to content

ADR 0020 — Retrait de Grafana Faro ; les funnels d'erreur basculent sur PostHog

Retire les ADR 0016 (télémétrie Faro) et 0017 (traces HTTP faro-web-tracing). Ne touche pas l'ADR 0016-outbound-date-serialization (collision de numérotation historique).

Contexte

Faro (ADR 0016/0017) fournissait une observabilité dev/staging uniquement, errors-only : erreurs (funnels handleError/logError, handler Vue, router.onError), sessions, events http_request et spans HTTP CLIENT sur échec, vers l'Alloy d'équipe (Loki/Tempo), derrière la façade feuille services/telemetry.ts.

Depuis, PostHog est en place (ADR 0019) avec sa propre façade feuille services/analytics.ts et captureErrorposthog.captureException. Les deux systèmes remontaient les erreurs en parallèle (handler Vue) ; maintenir deux stacks d'observabilité — deux façades, deux collecteurs, deux paires de dépendances — fait double emploi.

Décision

Faro est retiré complètement ; PostHog (captureError) reprend les funnels d'erreur.

  1. Suppression totale : services/telemetry.ts, les deux dépendances @grafana/faro-web-sdk / @grafana/faro-web-tracing (et leurs ~23 transitives @opentelemetry/*), la variable VITE_FARO_COLLECTOR_URL (.env.staging, env.d.ts), le test unitaire dédié.
  2. Funnels d'erreur → PostHog : captureError (étendu d'un paramètre props optionnel, passé à posthog.captureException(err, props)) remplace trackError dans error-handler.ts (handleError/logError), le handler Vue de main.ts et router.onError — avec les mêmes tags { source, … } qu'avant. Différence de portée assumée : le reporting est désormais opt-in-gated (consentement analytics, ADR 0019) et couvre tous les environnements, plus seulement dev/staging sans consentement.
  3. Pertes assumées, sans remplacement :
    • events http_request + spans HTTP CLIENT sur échec (les échecs HTTP remontent déjà en ApiError par les funnels d'erreur) — le wrapper de timing ApiClient.request(), devenu un pass-through pur, est supprimé (performRequest renommé request) ;
    • setView par navigation (router.afterEach) et le session tracking Faro ;
    • la corrélation user dev/staging (setTelemetryUser/resetTelemetryUser) — PostHog identifyUser/resetUser existe déjà sur le chemin login/logout.

Conséquences

  • Plus aucune dépendance @grafana/*/@opentelemetry/* ; le collecteur Alloy (telemetry.internal.spektrum-suisse.ch) ne reçoit plus rien du mobile.
  • Une seule doctrine de façade subsiste : patterns.md → « Émettre de l'analytics produit » (la section « Émettre de la télémétrie » est supprimée).
  • Les erreurs des utilisateurs sans consentement analytics (ou avant consentement) ne remontent nulle part — console uniquement. C'est le prix accepté de l'alignement sur l'opt-in strict d'ADR 0019.
  • En dev local, plus aucun signal d'erreur distant (Faro était le seul canal hors console).

Contributors

No contributors

Changelog

No recent changes