Skip to content

Séparer le projet PostHog du développement et traiter les événements de recette envoyés #162

Closed

Description

@PaulThiberville

Contexte

Epic : #13
Architecture-Technique › PostHog et Sentry par environnement · Securite-et-RGPD · Analytics · D-059
Maquette : sans objet — réponse DESIGN D-059 (https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog#d-059--2026-09-28) publiée le 2026-09-28

Découverte de CODE pendant #33 (Inbox) : apps/mobile/.env.local porte une EXPO_PUBLIC_POSTHOG_KEY non vide (fichier ignoré par git, valeur non lue par l'agent). En développement, expo/virtual/env relit .env.local à l'exécution, même quand la variable est vidée dans le shell. Toute session de développement qui accepte la bannière de consentement envoie donc ses événements au projet PostHog de cette clé. Pendant la recette de #33, avant la redirection vers la console, sont partis : app_opened, map_search_zone et result_card_viewed initiaux, et une sonde route_shared avec route_id: "probe".

Règle retenue (D-059) : le développement local n'a aucune clé PostHog et n'envoie rien (journal console seulement, EXPO_PUBLIC_ANALYTICS_DEBUG=1) ; l'app ignore une clé présente en développement. Staging (build preview) et production ont deux projets PostHog distincts, PostHog Cloud UE, « Widoo — staging » et « Widoo — production ». Sentry garde un projet par surface, séparé par environment. Les clés vivent dans l'environnement EAS du profil preview ou production et dans Secret Manager, jamais dans un fichier versionné ni dans l'environnement EAS development.

Comportement attendu

Pour CODE

  • Garde-fou dans apps/mobile/src/analytics : aucun client PostHog n'est créé quand EXPO_PUBLIC_APP_ENV est vide, absent ou vaut development, que EXPO_PUBLIC_POSTHOG_KEY soit renseignée ou non. Seuls preview et production créent le client (si la clé est présente). Le journal console EXPO_PUBLIC_ANALYTICS_DEBUG=1 continue de fonctionner en développement. La décision est une fonction pure testée (analytics.test.ts ou voisin) : environnement vide, development, preview, production, avec et sans clé.
  • apps/mobile/.env.example : EXPO_PUBLIC_POSTHOG_KEY laissée vide en local, avec un commentaire qui dit que la clé est ignorée en développement et que les builds la reçoivent de l'environnement EAS du profil (preview → projet staging, production → projet production).
  • README (racine) : aucune clé PostHog en local ; un événement se vérifie d'abord dans le journal local (EXPO_PUBLIC_ANALYTICS_DEBUG=1 : nom, propriétés, consentement), puis son arrivée réelle sur un build preview, dans le projet « Widoo — staging ».
  • Hors périmètre : Sentry (inchangé, déjà séparé par environment), création des projets et des clés.

Actions hors agents (Ilan ou Paul)

État au 2026-09-29, d'après le constat de Paul.

  • Projet PostHog « Widoo - Staging » : existe (eu.posthog.com, organisation Inprogress Agency, seul projet de l'organisation). « Widoo - Production » : création reportée à la préparation de la production (v1.0), l'offre gratuite ne donnant qu'un projet et le second demandant une carte (décision de Paul) → Créer le projet PostHog Widoo - Production et poser sa clé dans EAS #264.
  • Réglage D-019 « Discard client IP data » vérifié activé sur « Widoo - Staging ». Point « pas de PostHog AI » : abandonné par décision de Paul (aucun interrupteur dans PostHog, jugé sans importance) ; non vérifié.
  • Poser les clés dans les environnements EAS preview et production ; aucune dans l'environnement EAS development. Staging → preview au premier build preview : Poser les variables EAS preview et lancer le premier build preview Android #266. Production → Créer le projet PostHog Widoo - Production et poser sa clé dans EAS #264.
  • Clé retirée de apps/mobile/.env.local (EXPO_PUBLIC_POSTHOG_KEY vide chez Paul).
  • Projet de la clé qui était dans .env.local identifié : « Widoo - Staging ». Les événements de la recette du 2026-09-25 (dont route_shared route_id = probe) y sont restés, sans suppression : le projet staging sert à la recette (D-059).

Critères d'acceptation

  • Règle des projets PostHog par environnement écrite dans le wiki (D-059)
  • Aucun client PostHog en développement (EXPO_PUBLIC_APP_ENV vide ou development), même avec une clé renseignée : couvert par un test
  • Le client PostHog est créé en preview et en production quand la clé est présente : couvert par un test
  • Le journal EXPO_PUBLIC_ANALYTICS_DEBUG=1 fonctionne toujours en développement
  • apps/mobile/.env.example et README à jour
  • Événements de recette traités dans le projet concerné, ou constat qu'il ne s'agissait pas de staging ni de production (commentaire d'Ilan ou Paul ; ne bloque pas la PR) : commentaire de Paul du 2026-09-29, projet staging, événements conservés

Notes techniques

Activity

  1. added this to the v0.2 milestone on Sep 25, 2026
  2. added
    type:choreOutillage, infra, process
    needs-designQuestion ou maquette à produire en mode DESIGN
    area:infraGCP, CI, déploiement
    status:readySpec complète, prêt à coder
    and removed
    needs-designQuestion ou maquette à produire en mode DESIGN
    on Sep 25, 2026
  3. PaulThiberville commented on Sep 28, 2026

    @PaulThiberville
    CollaboratorAuthor

    @IlanAMG — DESIGN a publié la règle dans D-059 (Architecture-Technique › PostHog et Sentry par environnement). Le ticket passe status:ready pour la partie code : le garde-fou qui empêche tout envoi en développement ne dépend d'aucune des deux questions ci-dessous. Il attend la fusion de #33 (PR #159), dont il reprend le journal local.

    Deux questions restent ouvertes pour toi :

    1. Sentry sans projet par environnement : D-059 garde un projet par surface (widoo-mobile, widoo-api) et sépare staging et production par le champ environment, et écarte un projet Sentry par environnement. Tu confirmes ?
    2. Noms des projets PostHog : « Widoo — staging » et « Widoo — production », dans la même organisation PostHog Cloud UE. Tu confirmes ces noms, ou des projets existent déjà sous un autre nom ?

    Si ta réponse change la règle, DESIGN met à jour D-059 et le ticket suit. Les actions hors agents (créer les projets, poser les clés EAS, retirer la clé de .env.local, traiter les événements de la recette du 25/09) sont listées dans le corps du ticket.

  4. PaulThiberville commented on Sep 28, 2026

    @PaulThiberville
    CollaboratorAuthor

    🔨 Démarrage — plan : branche issue/162-posthog-dev-guard empilée sur issue/33-discovery-analytics (PR #159). Fonction pure chooseAnalyticsSink dans apps/mobile/src/analytics : PostHog seulement si EXPO_PUBLIC_APP_ENV vaut preview ou production et que la clé est présente ; sinon journal console si EXPO_PUBLIC_ANALYTICS_DEBUG=1 en développement, sinon rien. Tests sur la matrice environnement × clé. Mise à jour de apps/mobile/.env.example et du README (D-059). Vérification sur simulateur iOS avec la clé encore présente dans .env.local.

  5. added
    status:blockedBloqué, voir commentaire ⛔
    and removed
    status:readySpec complète, prêt à coder
    on Sep 29, 2026
  6. PaulThiberville commented on Sep 29, 2026

    @PaulThiberville
    CollaboratorAuthor

    Constat du 2026-09-29, fait dans PostHog (eu.posthog.com, organisation Inprogress Agency).

    • La clé qui était dans mon apps/mobile/.env.local est celle du projet « Widoo - Staging », seul projet de l'organisation. Les événements de la recette du 2026-09-25, dont la sonde route_shared route_id = probe, sont donc partis en staging, pas en production. Je ne les supprime pas : le projet staging sert à la recette (D-059).
    • « Discard client IP data » est activé sur ce projet.
    • J'ai vidé EXPO_PUBLIC_POSTHOG_KEY dans mon .env.local.
    • L'organisation est en offre gratuite, qui ne donne qu'un projet. Le projet « Widoo - Production » demande d'ajouter une carte : sa création est reportée à la préparation de la production (v1.0).
    • La clé de staging sera posée dans l'environnement EAS preview au moment du premier build preview.
  7. PaulThiberville commented on Sep 29, 2026

    @PaulThiberville
    CollaboratorAuthor

    📋 MANAGER — mise à jour après le constat de Paul du 2026-09-29.

    Cochés dans « Actions hors agents » : réglage « Discard client IP data » vérifié sur « Widoo - Staging » ; clé retirée de .env.local ; projet de la clé identifié (staging), événements de la recette du 25/09 conservés, puisque le projet staging sert à la recette (D-059). Le point « pas de PostHog AI » est noté abandonné par décision de Paul, pas vérifié.

    Critère coché : « Événements de recette traités », sur le commentaire de Paul. Les quatre critères de code restent à la PR #192.

    Reportés, suivis à part pour ne rien perdre :

    #262 est recentré sur la vérification en staging ; ses tableaux production passent à #264.

    Ce ticket reste ouvert : il se ferme par la fusion de la PR #192. Les lignes « création des projets » et « clés EAS » restent non cochées tant que #264 et #266 ne sont pas faits.

  8. IlanAMG commented on Oct 13, 2026

    @IlanAMG
    Member

    Chef de projet (point du 2026-10-13) : colonne À review → À déployer : ticket fermé par le merge, la colonne n'avait pas suivi. Il passe en Terminés après vérification en staging par Ilan ou Paul.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions