Analytics and Observability
Назначение
Клиент собирает product analytics для основных пользовательских сценариев и экранов статистики. Цель не в raw event spam, а в измеримом понимании того:
- какие экраны реально открывают;
- какие metric blocks просматривают;
- где пользователь взаимодействует со статистикой и фильтрами;
- как auth lifecycle влияет на identity и session tracking.
Основные компоненты
AnalyticsTrackerвcommonMainзадает общий контракт;CompositeAnalyticsTrackerfan-out'ит события на несколько провайдеров;- debug/dev слой может логировать события локально;
- production providers включают PostHog и Firebase integrations.
Event model
Событие содержит:
- имя;
- timestamp;
- session id;
- optional user id;
- properties map с экраном, блоком, типом действия и дополнительными параметрами.
Что реально трекается
screen_viewed;- visibility/view events для metric blocks;
- focus events на ключевых статистических блоках;
- tap/expand interactions;
- изменения настроек статистики только при фактическом изменении состава или порядка блоков.
Защита от шума
Аналитика не должна стрелять на каждый scroll tick. Для этого используются:
- thresholds по
visibleRatio; - минимальная длительность видимости блока;
- debounce/throttle для interaction-heavy flows;
- агрегация focus time по нескольким появлениям блока за один экранный сеанс.
Identity lifecycle
- после логина пользователь идентифицируется безопасным application-level id;
- при logout identity и session-sensitive state сбрасываются;
- при уходе приложения в background выполняется flush;
- при возврате в foreground session может быть обновлена.
Что важно не нарушить при развитии
- не дублировать screen events платформенными auto-track механизмами;
- не отправлять чувствительные данные пользователя в event payload;
- не подвязывать analytics к частым recomposition в Compose;
- не добавлять события, которые нельзя потом интерпретировать продуктово.