# @mostajs/analytics — fiche LLM

RÔLE
  Statistiques de visite « privacy-first » (façon Plausible/Umami/GoatCounter). Sans cookie, sans PII.
  Visiteur unique = hash SHA-256 journalier salé de (ip+ua), non réversible, rotation quotidienne.
  N'agrège QUE par jour : vues, visiteurs uniques/jour, pages, référents (hôte), appareils.
  N3, nature technique, reutilisabilite multi-domaine, depend_de [], zéro dépendance (node:crypto built-in).

NE FAIT PAS
  Ni persistance (store INJECTÉ {all,get,save,remove}, une entrée/jour id='YYYY-MM-DD'), ni UI (à composer),
  ni tracking cross-site, ni stockage d'IP/UA en clair, ni cookie.

API
  createAnalytics({ store?, now?, salt?, countBots? }) -> { track, summary, series, prune, store }
  track({ path, ip, ua, referrer, host }) -> agrégat jour | null (bot ignoré par défaut)
  summary(days=30) -> { days, views, visitors, series:[{day,views,visitors}], topPaths[], topReferrers[], devices{} }
  series(days=30) -> [{ day, views, visitors }]
  prune(keepDays=400) -> nb supprimés
  deviceOf(ua) -> 'mobile'|'tablet'|'desktop'|'bot' ; refHost(ref, selfHost) -> hôte externe | ''
  memoryStore() ; DEVICES

INTÉGRATION
  Appeler track() sur les pages vues (jamais assets/API/admin). ip via x-forwarded-for (derrière proxy).
  Rendu du tableau de bord au niveau app (ou @mostajs/reporting-ui). Persistance : injecter un store durable.

PRIVACY
  Aucune donnée personnelle stockée. Hash salé journalier => ni ré-identification, ni suivi inter-jours.
  Pas de bandeau cookie nécessaire.
