Контекст
Необходимо внедрить конфигурируемый механизм включения/выключения метрик на фронтенде через переменные окружения, чтобы управлять поведением по окружениям (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
- Логика работы:
- Добавить
NEXT_PUBLIC_METRICS_ENABLED в схему/типизацию и экспорт валидированного окружения в src/shared/config/env.ts.
- Ограничить допустимые значения флага (
'true' | 'false') и задать безопасный дефолт для development (по согласованной политике команды).
- Использовать валидированное значение в
FrontendObservability для раннего выхода из инициализации метрик при выключенном флаге.
Цель и критерии приемки (Definition of Done)
Важные указания
- Производительность: Проверка флага должна происходить до создания instrumentation-объектов.
- Ошибки: Использовать стандартный механизм ошибок
env-валидации из src/shared/config/env.ts; не допускать silent-accept невалидных значений.
- Безопасность: Применять только публичный не-секретный флаг
NEXT_PUBLIC_METRICS_ENABLED; не логировать чувствительные env-данные.
Контекст
Необходимо внедрить конфигурируемый механизм включения/выключения метрик на фронтенде через переменные окружения, чтобы управлять поведением по окружениям (
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.tsNEXT_PUBLIC_METRICS_ENABLEDв схему/типизацию и экспорт валидированного окружения вsrc/shared/config/env.ts.'true' | 'false') и задать безопасный дефолт дляdevelopment(по согласованной политике команды).FrontendObservabilityдля раннего выхода из инициализации метрик при выключенном флаге.Цель и критерии приемки (Definition of Done)
src/shared/config/env.tsдобавленNEXT_PUBLIC_METRICS_ENABLEDв валидацию, типы и экспортируемыйenv-объект.NEXT_PUBLIC_METRICS_ENABLED=falseинициализация Faro/трейсинга не выполняется; приtrue— выполняется по текущей схеме.developmentотсутствуют telemetry-отправки при выключенном флаге; добавленная проверка не влияет заметно на время инициализации приложения..env.exampleи переменные окружения CI/CD; при невалидном значении флага приложение падает на этапеenv-валидации с понятной диагностикой.Важные указания
env-валидации изsrc/shared/config/env.ts; не допускать silent-accept невалидных значений.NEXT_PUBLIC_METRICS_ENABLED; не логировать чувствительныеenv-данные.