[Taiga #78] Добавить endpoint /api/v1/debug-info для безопасной диагностики #8

Open
opened 2026-05-18 22:18:49 +00:00 by Grigo · 0 comments
Owner

Linked Taiga story: #78

Suggested branch:
feature/taiga-78-dobavit-endpoint-api-v1-debug-info-dlya-bezopasnoy-diagnosti

Project type: work
AI tags: work, ais, backend, diagnostics, rest-api, operations, debugging

Description

Создать новый REST endpoint для получения диагностической информации сервиса без чувствительных данных. Endpoint должен предоставить: версию, конфигурацию запущенных компонентов (какие источники включены), состояние основных подсистем, активные очереди и их размеры, последнюю ошибку каждого supervisor'а если была. Информация должна быть безопасной для логирования и отправки в техподдержку. Реализовать в src/ais_hub/publish/rest.py с использованием существующего состояния из src/ais_hub/core/state.py и статистики из src/ais_hub/core/stats.py.

Taiga: https://tasks.grigowashere.ru/project//us/78

Acceptance criteria

  • Endpoint GET /api/v1/debug-info доступен и возвращает статус 200
  • Ответ содержит версию приложения (из src/ais_hub/version.py)
  • Ответ содержит информацию о включённых ingester'ах (AIS UDP, GPS UART, radio UDP - какие активны)
  • Ответ содержит информацию о включённых publisher'ах (REST, WebSocket, UDP events, UDP NMEA, TX outbox - какие активны)
  • Ответ содержит текущие размеры основных очередей (parser_in, storage_in, bus и т.д.)
  • Ответ содержит статус supervisor'ов (количество рестартов, последнее время рестарта если было)
  • Ответ НЕ содержит чувствительных данных: координаты судов, история, сырые NMEA, пути к файлам БД
  • Endpoint документирован в docs/API.md
  • Добавлены unit-тесты в tests/

Code notes

  • В src/ais_hub/app.py вероятно уже есть структура с supervisor'ами; нужно проверить как они хранят состояние и ошибки.
  • src/ais_hub/core/stats.py содержит счётчики типа parser_in_dropped, bus_dropped и т.д. - использовать для информации об очередях.
  • src/ais_hub/config.py содержит конфигурацию; нужно использовать для определения включённых компонентов (check enabled: true/false для каждого ingester/publisher).
  • tests/test_rest_smoke.py - образец существующих REST-тестов, можно использовать как шаблон.
  • Убедиться, что debug-info не выполняет тяжёлые операции (вроде full state copy) - собирать только необходимую информацию для диагностики.

Questions

  • Какой уровень детализации supervisor'ов нужен? Достаточно ли restart_count и last_restart_time, или нужна история последних ошибок (первые N символов последней exception)?
  • Нужно ли включать информацию о текущем потреблении памяти / открытых подключениях или это выходит за рамки 'безопасной диагностики'?
  • Должен ли debug-info быть защищён проверкой прав доступа (вроде token'а) или это публичный endpoint как /health?
Linked Taiga story: #78 Suggested branch: `feature/taiga-78-dobavit-endpoint-api-v1-debug-info-dlya-bezopasnoy-diagnosti` Project type: `work` AI tags: work, ais, backend, diagnostics, rest-api, operations, debugging ## Description Создать новый REST endpoint для получения диагностической информации сервиса без чувствительных данных. Endpoint должен предоставить: версию, конфигурацию запущенных компонентов (какие источники включены), состояние основных подсистем, активные очереди и их размеры, последнюю ошибку каждого supervisor'а если была. Информация должна быть безопасной для логирования и отправки в техподдержку. Реализовать в src/ais_hub/publish/rest.py с использованием существующего состояния из src/ais_hub/core/state.py и статистики из src/ais_hub/core/stats.py. Taiga: https://tasks.grigowashere.ru/project//us/78 ## Acceptance criteria - Endpoint GET /api/v1/debug-info доступен и возвращает статус 200 - Ответ содержит версию приложения (из src/ais_hub/version.py) - Ответ содержит информацию о включённых ingester'ах (AIS UDP, GPS UART, radio UDP - какие активны) - Ответ содержит информацию о включённых publisher'ах (REST, WebSocket, UDP events, UDP NMEA, TX outbox - какие активны) - Ответ содержит текущие размеры основных очередей (parser_in, storage_in, bus и т.д.) - Ответ содержит статус supervisor'ов (количество рестартов, последнее время рестарта если было) - Ответ НЕ содержит чувствительных данных: координаты судов, история, сырые NMEA, пути к файлам БД - Endpoint документирован в docs/API.md - Добавлены unit-тесты в tests/ ## Code notes - В src/ais_hub/app.py вероятно уже есть структура с supervisor'ами; нужно проверить как они хранят состояние и ошибки. - src/ais_hub/core/stats.py содержит счётчики типа parser_in_dropped, bus_dropped и т.д. - использовать для информации об очередях. - src/ais_hub/config.py содержит конфигурацию; нужно использовать для определения включённых компонентов (check enabled: true/false для каждого ingester/publisher). - tests/test_rest_smoke.py - образец существующих REST-тестов, можно использовать как шаблон. - Убедиться, что debug-info не выполняет тяжёлые операции (вроде full state copy) - собирать только необходимую информацию для диагностики. ## Questions - Какой уровень детализации supervisor'ов нужен? Достаточно ли restart_count и last_restart_time, или нужна история последних ошибок (первые N символов последней exception)? - Нужно ли включать информацию о текущем потреблении памяти / открытых подключениях или это выходит за рамки 'безопасной диагностики'? - Должен ли debug-info быть защищён проверкой прав доступа (вроде token'а) или это публичный endpoint как /health?
Grigo added the workaisbackendrest-apidiagnosticsoperationsdebugging labels 2026-05-18 22:18:51 +00:00
Sign in to join this conversation.