Skip to content

[Enhancement] Управляемое отключение фронтенд-метрик через env-флаг с обязательной env-валидацией #61

@kapitulin24

Description

@kapitulin24

Контекст

Необходимо внедрить конфигурируемый механизм включения/выключения метрик на фронтенде через переменные окружения, чтобы управлять поведением по окружениям (development, staging, production) без ручных изменений в коде.

Ключевое требование: новый флаг должен быть добавлен в централизованную схему валидации окружения в src/shared/config/env.ts, чтобы исключить невалидные значения и конфигурационные ошибки.


Технические требования

  • Локация логики: src/shared/config/metrics/FrontendObservability.tsx, src/shared/config/env.ts, конфигурационные файлы окружения (.env.example, .env.local, .env.production/CI secrets)
  • Инструменты: Next.js, переменные NEXT_PUBLIC_*, @grafana/faro-web-sdk, @grafana/faro-web-tracing, текущий механизм валидации env в src/shared/config/env.ts
  • Логика работы:
    1. Добавить NEXT_PUBLIC_METRICS_ENABLED в схему/типизацию и экспорт валидированного окружения в src/shared/config/env.ts.
    2. Ограничить допустимые значения флага ('true' | 'false') и задать безопасный дефолт для development (по согласованной политике команды).
    3. Использовать валидированное значение в FrontendObservability для раннего выхода из инициализации метрик при выключенном флаге.

Цель и критерии приемки (Definition of Done)

  • База: В src/shared/config/env.ts добавлен NEXT_PUBLIC_METRICS_ENABLED в валидацию, типы и экспортируемый env-объект.
  • Функционал: При NEXT_PUBLIC_METRICS_ENABLED=false инициализация Faro/трейсинга не выполняется; при true — выполняется по текущей схеме.
  • Лимиты/SLA: В development отсутствуют telemetry-отправки при выключенном флаге; добавленная проверка не влияет заметно на время инициализации приложения.
  • Интеграция: Обновлены .env.example и переменные окружения CI/CD; при невалидном значении флага приложение падает на этапе env-валидации с понятной диагностикой.

Важные указания

  • Производительность: Проверка флага должна происходить до создания instrumentation-объектов.
  • Ошибки: Использовать стандартный механизм ошибок env-валидации из src/shared/config/env.ts; не допускать silent-accept невалидных значений.
  • Безопасность: Применять только публичный не-секретный флаг NEXT_PUBLIC_METRICS_ENABLED; не логировать чувствительные env-данные.

Metadata

Metadata

Assignees

No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions