Livrable 22
Analytics
Instrument de vérité interne. Pas un tableau de vanity. Pas de pixel publicitaire par défaut.
Événements
Noms stables :
search · search_result_click · search_zero · venue_view · event_view · offer_view · map_open · map_marker_click · directions_request · booking_click · booking_start · booking_complete · favorite_add · follow_add · night_plan_created · night_plan_started · share · business_publish · campaign_created · report_submitted
Propriétés communes : city_id, occurred_at, entity_id si pertinent, surface (home|now|map|search|venue|…).
Absents volontairement : lat/lng, IP, user agent complet, texte libre non normalisé au-delà de la query (la query va dans search_gaps normalisée, pas en clair indéfiniment).
booking_complete n'existe que lorsqu'une réservation interne existe. Un clic sortant = booking_click, jamais une réservation.
Définitions de métriques
| Nom | Définition |
|---|---|
| Découverte réussie | session (id éphémère 1re partie, pas un cookie long sans consentement) avec au moins une action forte : directions, booking_click, favorite, follow, share, night_plan_created, offer click |
| Pro actif | sur une fenêtre glissante : login ou business_publish ou edit event ou edit offer |
| Fraîcheur | % d'entités publiées dont le statut n'est pas STALE ni EXPIRED — le dénominateur est « publiées », le numérateur suit la définition Live |
| Couverture | comptage de lieux/events par zone parmi les données ingérées, pas « % de la réalité » |
| Rétention pro | comptes pro avec une action sur deux périodes successives. Pas de % inventé |
North stars produit : voir vision. Aucune cible numérique dans cette architecture.
Interdits
Users online fictifs, trending sans fenêtre et sans seuil, stock, popularité, visiteurs physiques, social proof, « reach estimé », ROI, « clients gagnés ».
Trending, si un jour affiché : top des entités par actions fortes sur 7 jours, dans la ville, avec un minimum d'occurrences (seuil de politique, à fixer quand le bruit est observable — pas maintenant). Sous le seuil : module absent.
Pro
Le pro voit ses counts : vues fiche, vues carte (marker ou liste sur son id), directions, booking clicks, offer clicks, event views. Période affichée. Pas d'extrapolation.
Insight texte : seulement une reformulation du count (« consulté N fois »). N vient de la requête.
City
Recherches sans résultat, entités stale, lieux non claim, events sans source, activité numérique par zone (sums). Export CSV des agrégats.
Décisions
D1 — First party, append-only, puis agrégats
- Alternatives : SaaS analytics (rapide, transfert, consentement). Possible plus tard, pas le défaut.
- Compromis : on construit un petit pipeline.
- Sandbox : table
analytics_events. Pas de warehouse.
D2 — Trois classes, pas un oui global
| Classe | Exemples | Consentement |
|---|---|---|
| Sécurité | login, rate limit, audit | pas une bannière. Rétention courte. Jamais un tableau pro. |
| Agrégat opérationnel | search_gaps (requête normalisée, sans user id, sans IP), comptes d'objets publiés | pas un profil. Durée proposée 30 jours. Requêtes à caractère sensible (santé, religion, orientation, opinion) : non stockées. LEGAL REVIEW REQUIRED avant de traiter ça comme « strictement nécessaire ». |
| Mesure | vues, clics, directions, carte, favoris | off tant que cookies n'est pas oui |
Le dashboard pro n'affiche un count de mesure que parmi les sessions consenties, avec la phrase « sessions ayant accepté la mesure ». S'il n'y en a pas : « pas encore de mesure consentie ». Jamais un 0 nu qui voudrait dire « personne n'est intéressé ».
booking_complete est inactif. La north star « réservation » au MVP est un booking_click sortant, libellé comme tel.
La distance n'est pas une métrique. Sans origine consentie, le filtre distance n'est pas proposé (pas de centroïde silencieux).
Flags
- Pas de volume de référence.
booking_complete: inactif tant qu'il n'y a pas de réservation interne.