feat: журнал событий + интеграция с Gnexus Synapse (этап 4)
Все ивенты панели пишутся в единый журнал (events, retention 90 дней,
GET /api/v1/events) и — при настроенном GHARD_SYNAPSE_* — уходят конвертом
v1 в Synapse (gn-synapse-client-py, fire-and-forget, high/critical через
send с логом ошибок, остальное через emit).

Источники ивентов: пороги cpu/ram/swap/disk/load с гистерезисом (пары
*_high/*_recovered, disk — по маунтам), watchdog server_offline/online,
diff docker-контейнеров между пакетами, переходы сервисов
service_down/degraded/recovered на краях инцидент-периодов. Журнал сам
служит состоянием: пары открытие/закрытие переживают рестарт панели,
повторных оповещений нет; повторяющиеся открытия получают dedup_key
{type}-{id}-{UTC-день}, ttl конверта 24 ч.

Конверты не содержат адресатов и каналов — маршрутизацию решает Synapse.
Тройки subject×action регистрируются в админке Synapse заранее; пустой
GHARD_SYNAPSE_API_KEY = интеграция выключена (только журнал).
1 parent af2cd8f commit fe6b21ed477d1765851cbfadd1bd3df1c256b260
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 3 hours ago
Showing 8 changed files
View
README.md
View
panel/backend/app/api/events.py 0 → 100644
View
panel/backend/app/api/ingest.py
View
panel/backend/app/config.py
View
panel/backend/app/events.py 0 → 100644
View
panel/backend/app/main.py
View
panel/backend/app/services_probe.py
View
panel/backend/pyproject.toml