Перейти к содержанию

Analytics Service

Analytics Service отвечает за сбор метрик и отчётность.

Обзор

Параметр Значение
Порт 8086
База данных postgres-analytics (dedicated, TimescaleDB)
Схема analytics_service

Ответственности

  • Сбор событий (event tracking)
  • Агрегация метрик
  • Дашборды для организаторов
  • Экспорт отчётов

API Endpoints

Method Endpoint Description
POST /api/v1/analytics/track Трекинг события
GET /api/v1/analytics/events/{eventId}/dashboard Дашборд события
GET /api/v1/analytics/events/{eventId}/funnel Воронка
GET /api/v1/analytics/organizations/{orgId}/report Отчёт организации
POST /api/v1/analytics/export Экспорт данных

Модель данных

-- TimescaleDB hypertable для событий
CREATE TABLE analytics_events (
    id UUID PRIMARY KEY,
    tenant_id UUID NOT NULL,
    event_type VARCHAR(100) NOT NULL,
    event_id UUID,
    user_id UUID,
    properties JSONB,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

SELECT create_hypertable('analytics_events', 'created_at');

-- Индексы
CREATE INDEX idx_analytics_tenant_type ON analytics_events(tenant_id, event_type, created_at DESC);
CREATE INDEX idx_analytics_event ON analytics_events(event_id, created_at DESC);

Типы событий

Event Type Описание
page.view Просмотр страницы события
registration.started Начало регистрации
registration.completed Завершение регистрации
registration.cancelled Отмена регистрации
checkin.completed Check-in

Трекинг

Процесс: 1. Получение события (из API или RabbitMQ) 2. Обогащение контекстом (tenant_id, user_id) 3. Сохранение в TimescaleDB hypertable

Properties (JSONB): - Произвольные данные для каждого типа события - Например: ticketTypeId, registrationId, source

Дашборд события

Метрики:

Метрика Описание
totalViews Общее количество просмотров
uniqueViews Уникальные посетители
totalRegistrations Всего регистраций
confirmedRegistrations Подтверждённых
checkedIn Пришедших
viewToRegistrationRate Конверсия просмотр → регистрация
registrationToCheckinRate Конверсия регистрация → check-in

Группировки: - По дням (графики динамики) - По типам билетов - По источникам трафика

Воронка регистраций

Этап Описание
Page views Просмотры страницы события
Registration started Начали заполнять форму
Registration completed Завершили регистрацию
Checked in Пришли на событие

Конверсии: - startRate = started / views - completionRate = completed / started - attendanceRate = checkedIn / completed

События (RabbitMQ)

Потребляемые

Event Действие
event.published Начало трекинга
registration.created registration.completed
registration.cancelled registration.cancelled
checkin.completed checkin.completed
payment.completed payment.completed

Экспорт

Форматы

Формат MIME Type
CSV text/csv
XLSX application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

Параметры запроса

Параметр Описание
eventId ID события (опционально)
organizationId ID организации
dateFrom Начало периода
dateTo Конец периода
format Формат экспорта (csv/xlsx)

Retention

Политика хранения: - Автоматическое удаление данных старше 1 года - Реализовано через TimescaleDB retention policy

SELECT add_retention_policy('analytics_events', INTERVAL '1 year');

Дальнейшее чтение