[Taiga #37] Добавить endpoint /api/v1/startup для проверки завершения инициализации #1

Open
opened 2026-05-18 21:39:44 +00:00 by Grigo · 0 comments
Owner

Linked Taiga story: #37

Project type: work
AI tags: work, ais, backend

Description

Добавить HTTP endpoint /api/v1/startup для проверки, завершена ли инициализация сервиса. Endpoint должен возвращать статус готовности всех подсистем (ingest, parser, storage, publish). Необходимо отслеживать состояние инициализации в файле src/ais_hub/app.py (где находится orchestrator) и в src/ais_hub/core/state.py (где хранится состояние). REST endpoint реализуется в src/ais_hub/publish/rest.py.

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

Acceptance criteria

  • Endpoint GET /api/v1/startup возвращает JSON с флагом is_ready (boolean)
  • При незавершённой инициализации endpoint возвращает HTTP 503 Service Unavailable
  • При завершённой инициализации endpoint возвращает HTTP 200 OK
  • Ответ содержит информацию о статусе каждой подсистемы (ingest, parser, storage, publish)
  • Ответ содержит временные метрики (uptime, time_since_startup)
  • Endpoint документирован в docs/API.md
  • Добавлен тест в tests/test_rest_smoke.py или новый файл test_startup_endpoint.py

Code notes

  • В src/ais_hub/app.py найден класс App (orchestrator) с методом await_running() — там же логично добавить флаги инициализации для каждого супервизора
  • В src/ais_hub/publish/rest.py используется aiohttp.web; handler должен получить app reference для доступа к состоянию инициализации
  • В README.md уже существует /api/v1/health endpoint для 'Liveness + uptime + version' — нужно определить отличие /api/v1/startup от него
  • Существуют тесты в tests/test_rest_smoke.py (test_vessels_endpoint_reflects_state, test_logs_endpoint_is_independent_from_nmea) — можно использовать как образец
Linked Taiga story: #37 Project type: `work` AI tags: work, ais, backend ## Description Добавить HTTP endpoint `/api/v1/startup` для проверки, завершена ли инициализация сервиса. Endpoint должен возвращать статус готовности всех подсистем (ingest, parser, storage, publish). Необходимо отслеживать состояние инициализации в файле src/ais_hub/app.py (где находится orchestrator) и в src/ais_hub/core/state.py (где хранится состояние). REST endpoint реализуется в src/ais_hub/publish/rest.py. Taiga: https://tasks.grigowashere.ru/project//us/37 ## Acceptance criteria - Endpoint GET /api/v1/startup возвращает JSON с флагом is_ready (boolean) - При незавершённой инициализации endpoint возвращает HTTP 503 Service Unavailable - При завершённой инициализации endpoint возвращает HTTP 200 OK - Ответ содержит информацию о статусе каждой подсистемы (ingest, parser, storage, publish) - Ответ содержит временные метрики (uptime, time_since_startup) - Endpoint документирован в docs/API.md - Добавлен тест в tests/test_rest_smoke.py или новый файл test_startup_endpoint.py ## Code notes - В src/ais_hub/app.py найден класс App (orchestrator) с методом await_running() — там же логично добавить флаги инициализации для каждого супервизора - В src/ais_hub/publish/rest.py используется aiohttp.web; handler должен получить app reference для доступа к состоянию инициализации - В README.md уже существует /api/v1/health endpoint для 'Liveness + uptime + version' — нужно определить отличие /api/v1/startup от него - Существуют тесты в tests/test_rest_smoke.py (test_vessels_endpoint_reflects_state, test_logs_endpoint_is_independent_from_nmea) — можно использовать как образец
Sign in to join this conversation.