# Analytics System Implementation
## Обзор
В проект `witlab-app` была добавлена система аналитики на основе Yandex Metrika по аналогии с `witlab-funnel`:
- **Yandex Metrika** - отслеживание просмотров страниц и событий
- **PageViewTracker** - автоматическая отслежка переходов между страницами
- **AnalyticsService** - управление параметрами пользователя и событиями
## Структура файлов
```
src/
├── components/analytics/
│ ├── PageViewTracker.tsx # Отслеживание переходов
│ ├── YandexMetrika/
│ │ ├── YandexMetrika.tsx # Компонент Яндекс Метрики
│ │ └── index.ts
│ └── index.ts # Экспорты аналитики
├── providers/
│ └── analytics-provider.tsx # Провайдер аналитики
├── services/analytics/
│ ├── analyticsService.ts # Сервис аналитики
│ └── index.ts
└── shared/constants/
└── analytics.ts # Константы ID счетчиков
```
## Конфигурация
### Статичные константы
```typescript
// src/shared/constants/analytics.ts
export const YANDEX_METRIKA_ID = "103412914";
```
## Использование
### Автоматическая отслежка страниц
Система автоматически отслеживает все переходы между страницами через `PageViewTracker`.
### Параметры пользователя
При инициализации система автоматически загружает данные пользователя через `/users/me` и устанавливает параметры в Yandex Metrika:
- `user_id` - ID пользователя
- `email` - email пользователя
- `locale` - язык пользователя
- `timezone` - часовой пояс
- `profile_name`, `profile_gender`, `profile_age`, `profile_sign` - данные профиля
- `partner_gender`, `partner_age`, `partner_sign` - данные партнера
- `country`, `region`, `city` - геолокация
### Отслеживание событий
```typescript
import { analyticsService } from "@/services/analytics";
// Отправить событие в Yandex Metrika
analyticsService.trackEvent("button_click", {
button_name: "subscribe_now",
screen: "retaining"
});
```
### Доступ к данным пользователя
```typescript
import { analyticsService } from "@/services/analytics";
if (analyticsService.isReady()) {
const user = analyticsService.getUser();
console.log("Current user:", user);
}
```
## Логирование
Система предоставляет детальное логирование в консоли:
```
✅ [YM] Page View Event Sent
✅ [Analytics] Service initialized with user data
✅ [YM] User parameters set
```
## Интеграция в layout
Компоненты аналитики добавлены в `src/app/[locale]/layout.tsx`:
```tsx
{/* ... */}
{/* ... */}
```
## Отличия от witlab-funnel
1. **Только Yandex Metrika** - без Google Analytics
2. **Статичный ID** - Яндекс Метрика использует статичный ID вместо динамического из воронки
3. **Параметры пользователя** - Автоматическая загрузка и установка параметров из `/me`
4. **Унифицированный сервис** - Единый `AnalyticsService` для управления
## Проверка работы
1. Откройте консоль разработчика в браузере
2. Перейдите между страницами приложения
3. Вы увидите сообщения об отправке событий в YM
4. Проверьте наличие cookies `_ym_uid`
## Совместимость
- ✅ TypeScript
- ✅ ESLint (без ошибок, только предупреждения о существующих `any`)
- ✅ Next.js 15
- ✅ Server-side rendering
- ✅ Динамические маршруты