Концепції, цінність і типові сценарії
Концепції, цінність і типові сценарії
Preparing Ring content
Preparing Ring content
Preparing Ring content
Використовуйте вкладки Founder / Developer у бічній панелі, щоб відфільтрувати цю сторінку. Поверхні адмін-консолі споживають ці маршрути; сторонні провайдери — опційні env-хуки.
Ring постачає first-party аналітичний пайплайн: клієнтська телеметрія інгестується через /api/analytics/*, валідується Zod на межі маршруту, зберігається в analytics_events / web_vitals / analytics_errors і читається назад адмін-scoped GET-маршрутами. Зберігання можна повністю вимкнути на середовище — тоді кожен маршрут підтверджує без запису.
| Previous (GA-only setup) | Ring equivalent |
|---|---|
| Third-party SDK only, data leaves your clone | First-party інгест у вашу власну базу |
| One opaque dashboard | Адмін-scoped читання + platform stats з role gates |
| No device/session context | Батчі sessionId, device telemetry з tunnel fan-out |
| Web Vitals left unmeasured | Інгест Core Web Vitals + обчислений performanceScore |
| Endpoint | Method | Auth | Purpose |
|---|---|---|---|
/api/analytics/app | POST | optional userId | Батчовані app-події → analytics_events |
/api/analytics/device | POST | session required | Device telemetry → device_telemetry + fan-out у user tunnel |
/api/analytics/navigation | POST | — | Легкий acknowledgement stub (без зберігання) |
/api/analytics/errors | POST | optional userId | Захоплення клієнтських помилок → analytics_errors (відкладений запис) |
/api/analytics/errors |
platform admin.ANALYTICS_DISABLE_STORAGE=true вимикає persistence без змін коду; endpoints продовжують відповідати.getPlatformAnalytics).| Variable | Provider |
|---|---|
GA_TRACKING_ID / GA4_MEASUREMENT_PROTOCOL_SECRET | Google Analytics |
MIXPANEL_TOKEN | Mixpanel |
AMPLITUDE_API_KEY | Amplitude |
SENTRY_DSN | Sentry error tracking |
| / |
| Variable | Default | Effect |
|---|---|---|
ANALYTICS_DISABLE_STORAGE | unset | "true" підтверджує події без запису в базу |
Використовуйте вкладки Founder / Developer у бічній панелі, щоб відфільтрувати цю сторінку. Поверхні адмін-консолі споживають ці маршрути; сторонні провайдери — опційні env-хуки.
Ring постачає first-party аналітичний пайплайн: клієнтська телеметрія інгестується через /api/analytics/*, валідується Zod на межі маршруту, зберігається в analytics_events / web_vitals / analytics_errors і читається назад адмін-scoped GET-маршрутами. Зберігання можна повністю вимкнути на середовище — тоді кожен маршрут підтверджує без запису.
| Previous (GA-only setup) | Ring equivalent |
|---|---|
| Third-party SDK only, data leaves your clone | First-party інгест у вашу власну базу |
| One opaque dashboard | Адмін-scoped читання + platform stats з role gates |
| No device/session context | Батчі sessionId, device telemetry з tunnel fan-out |
| Web Vitals left unmeasured | Інгест Core Web Vitals + обчислений performanceScore |
| Endpoint | Method | Auth | Purpose |
|---|---|---|---|
/api/analytics/app | POST | optional userId | Батчовані app-події → analytics_events |
/api/analytics/device | POST | session required | Device telemetry → device_telemetry + fan-out у user tunnel |
/api/analytics/navigation | POST | — | Легкий acknowledgement stub (без зберігання) |
/api/analytics/errors | POST | optional userId | Захоплення клієнтських помилок → analytics_errors (відкладений запис) |
/api/analytics/errors |
platform admin.ANALYTICS_DISABLE_STORAGE=true вимикає persistence без змін коду; endpoints продовжують відповідати.getPlatformAnalytics).| Variable | Provider |
|---|---|
GA_TRACKING_ID / GA4_MEASUREMENT_PROTOCOL_SECRET | Google Analytics |
MIXPANEL_TOKEN | Mixpanel |
AMPLITUDE_API_KEY | Amplitude |
SENTRY_DSN | Sentry error tracking |
| / |
| Variable | Default | Effect |
|---|---|---|
ANALYTICS_DISABLE_STORAGE | unset | "true" підтверджує події без запису в базу |
Використовуйте вкладки Founder / Developer у бічній панелі, щоб відфільтрувати цю сторінку. Поверхні адмін-консолі споживають ці маршрути; сторонні провайдери — опційні env-хуки.
Ring постачає first-party аналітичний пайплайн: клієнтська телеметрія інгестується через /api/analytics/*, валідується Zod на межі маршруту, зберігається в analytics_events / web_vitals / analytics_errors і читається назад адмін-scoped GET-маршрутами. Зберігання можна повністю вимкнути на середовище — тоді кожен маршрут підтверджує без запису.
| Previous (GA-only setup) | Ring equivalent |
|---|---|
| Third-party SDK only, data leaves your clone | First-party інгест у вашу власну базу |
| One opaque dashboard | Адмін-scoped читання + platform stats з role gates |
| No device/session context | Батчі sessionId, device telemetry з tunnel fan-out |
| Web Vitals left unmeasured | Інгест Core Web Vitals + обчислений performanceScore |
| Endpoint | Method | Auth | Purpose |
|---|---|---|---|
/api/analytics/app | POST | optional userId | Батчовані app-події → analytics_events |
/api/analytics/device | POST | session required | Device telemetry → device_telemetry + fan-out у user tunnel |
/api/analytics/navigation | POST | — | Легкий acknowledgement stub (без зберігання) |
/api/analytics/errors | POST | optional userId | Захоплення клієнтських помилок → analytics_errors (відкладений запис) |
/api/analytics/errors |
platform admin.ANALYTICS_DISABLE_STORAGE=true вимикає persistence без змін коду; endpoints продовжують відповідати.getPlatformAnalytics).| Variable | Provider |
|---|---|
GA_TRACKING_ID / GA4_MEASUREMENT_PROTOCOL_SECRET | Google Analytics |
MIXPANEL_TOKEN | Mixpanel |
AMPLITUDE_API_KEY | Amplitude |
SENTRY_DSN | Sentry error tracking |
| / |
| Variable | Default | Effect |
|---|---|---|
ANALYTICS_DISABLE_STORAGE | unset | "true" підтверджує події без запису в базу |
| GET |
| platform admin |
| Список помилок із фільтрами severity/component |
/api/analytics/web-vitals | POST | optional userId | Core Web Vitals + performanceScore → web_vitals (відкладений запис) |
/api/analytics/web-vitals | GET | platform admin | Підсумок scope=platform або per-user; timeframe 24h / 7d / 30d |
/api/analytics/platform-stats | GET | platform admin | Живі підрахунки для users, entities, opportunities |
DD_API_KEYDD_APP_KEY| Datadog |
Жоден не обовʼязковий — власний пайплайн Ring працює без них.
web-vitalswebVitalsInputSchema + calculatePerformanceScore |
web_vitals із виявленими platform/browser |
navigation | none (stub) | нічого — повертає { ok: true } |
GET /api/analytics/platform-stats — гейт isPlatformAdmin(session.user.role); паралельні countDocs над users / entities / opportunities.GET /api/analytics/web-vitals?scope=platform&timeframe=30d — platform summary через getPlatformAnalyticsSummary; без scope — per-user метрики.features/analytics/services/get-platform-analytics.ts (core summary + docs not-found + personal-page stats).| GET |
| platform admin |
| Список помилок із фільтрами severity/component |
/api/analytics/web-vitals | POST | optional userId | Core Web Vitals + performanceScore → web_vitals (відкладений запис) |
/api/analytics/web-vitals | GET | platform admin | Підсумок scope=platform або per-user; timeframe 24h / 7d / 30d |
/api/analytics/platform-stats | GET | platform admin | Живі підрахунки для users, entities, opportunities |
DD_API_KEYDD_APP_KEY| Datadog |
Жоден не обовʼязковий — власний пайплайн Ring працює без них.
web-vitalswebVitalsInputSchema + calculatePerformanceScore |
web_vitals із виявленими platform/browser |
navigation | none (stub) | нічого — повертає { ok: true } |
GET /api/analytics/platform-stats — гейт isPlatformAdmin(session.user.role); паралельні countDocs над users / entities / opportunities.GET /api/analytics/web-vitals?scope=platform&timeframe=30d — platform summary через getPlatformAnalyticsSummary; без scope — per-user метрики.features/analytics/services/get-platform-analytics.ts (core summary + docs not-found + personal-page stats).| GET |
| platform admin |
| Список помилок із фільтрами severity/component |
/api/analytics/web-vitals | POST | optional userId | Core Web Vitals + performanceScore → web_vitals (відкладений запис) |
/api/analytics/web-vitals | GET | platform admin | Підсумок scope=platform або per-user; timeframe 24h / 7d / 30d |
/api/analytics/platform-stats | GET | platform admin | Живі підрахунки для users, entities, opportunities |
DD_API_KEYDD_APP_KEY| Datadog |
Жоден не обовʼязковий — власний пайплайн Ring працює без них.
web-vitalswebVitalsInputSchema + calculatePerformanceScore |
web_vitals із виявленими platform/browser |
navigation | none (stub) | нічого — повертає { ok: true } |
GET /api/analytics/platform-stats — гейт isPlatformAdmin(session.user.role); паралельні countDocs над users / entities / opportunities.GET /api/analytics/web-vitals?scope=platform&timeframe=30d — platform summary через getPlatformAnalyticsSummary; без scope — per-user метрики.features/analytics/services/get-platform-analytics.ts (core summary + docs not-found + personal-page stats).