Files
specs/openspec/changes/archive/2026-08-14-add-backend-structured-logging/proposal.md
T
2026-08-14 17:19:10 +03:00

2.8 KiB

Зачем

Текущие точечные backend-логи не имеют единого формата и сквозной связи с HTTP-запросом, поэтому ошибки API и вызовов T-Bank трудно диагностировать. Нужны безопасные структурированные события, которые позволяют связать ответ клиенту с обработкой запроса и внешней интеграцией без записи секретов или финансовых данных.

Что меняется

  • Ввести единый JSON-формат backend-логов в stdout для lifecycle-событий, HTTP-запросов, авторизации, доменных сервисов и вызовов T-Bank.
  • Генерировать server-side request ID для каждого HTTP-запроса, передавать его в связанные события и возвращать клиенту в X-Request-ID через CORS.
  • Установить уровни и обязательный безопасный контекст для HTTP- и T-Bank-событий, включая стабильный public error code для ошибок.
  • Исключить из логов секреты, HTTP-тела, заголовки, прямые персональные и финансовые данные; разрешить только внутренние идентификаторы пользователя и брокерского счёта.
  • Добавить валидируемую конфигурацию LOG_LEVEL и мигрировать существующие ручные backend-логи на общую схему.

Возможности

Новые возможности

  • backend-structured-logging: безопасные структурированные backend-логи, сквозная корреляция HTTP-запросов и событий T-Bank.

Изменяемые возможности

Нет.

Влияние

  • Backend: bootstrap, HTTP pipeline, CORS, exception handling, auth, T-Bank client и сервисы с существующими ручными логами.
  • Зависимости: nestjs-pino для JSON-вывода, request-scoped logger и интеграции с Nest.
  • Конфигурация: новая валидируемая переменная окружения LOG_LEVEL.
  • API: response header X-Request-ID становится доступным browser-клиенту через CORS; тело и status существующих ответов не меняются.
  • Инфраструктура: backend пишет JSON в stdout; collector, хранение, alerting и frontend telemetry не входят в это изменение.