feat: health-чекер сервисов — раздел «Сервисы» + спека health-эндпоинтов
Панель опрашивает health-URL внешних gnexus-сервисов (GET, параллельно,
каждые GHARD_HEALTH_INTERVAL=30с, таймаут 5с) и показывает их состояние
отдельным разделом: карточки с состоянием/latency/причиной, история
отклика за 24ч (график), retention точек 7 дней.

Прогрессивный минимум интерпретации: 2xx = up; JSON-тело со строковым
status — ok-набор → up, degraded-набор → деградация, незнакомая строка
→ вниз; не-2xx / таймаут / сеть → вниз. Контракт зафиксирован в
docs/health-endpoint-spec.md (минимум + рекомендуемое расширение checks).

- backend: tables services/service_samples, services_probe.py (волны
  проб через asyncio.gather, cap тела 64KB), api/services.py (CRUD +
  samples, мгновенный замер на POST/PATCH url), config GHARD_HEALTH_*
- frontend: страница /services, api-методы, nav «Сервисы»,
  i18n en/uk/ru
1 parent b1a82e2 commit c6e86985239f3f9a31119f416869b4be0b1b06b8
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 7 hours ago
Showing 15 changed files
View
README.md
View
docs/health-endpoint-spec.md 0 → 100644
View
panel/backend/.env.example
View
panel/backend/app/api/services.py 0 → 100644
View
panel/backend/app/config.py
View
panel/backend/app/main.py
View
panel/backend/app/schema.sql
View
panel/backend/app/services_probe.py 0 → 100644
View
panel/frontend/src/App.vue
View
panel/frontend/src/api.js
View
panel/frontend/src/i18n/messages/en.js
View
panel/frontend/src/i18n/messages/ru.js
View
panel/frontend/src/i18n/messages/uk.js
View
panel/frontend/src/pages/ServicesPage.vue 0 → 100644
View
panel/frontend/src/router.js