Реестр MODULE_MOUNTS: API, ui_router, фрагменты главной, EventBus. Главная и страницы модулей с правой навигацией из реестра; wrap_module_html_page. Ingress: публикация alert.received после сохранения в БД. Документация MODULES.md; pytest покрывает API, UI и навигацию. Made-with: Cursor
2.2 KiB
2.2 KiB
Доменная модель onGuard24
Версия 1.1+ вводит явные сущности и задел под события между модулями. Таблицы БД для инцидентов пока не добавлены — см. Alembic.
Сущности (код: onguard24/domain/entities.py)
| Сущность | Назначение |
|---|---|
| Alert | Нормализованный алерт после парсинга webhook (Grafana и др.): severity, labels, payload. |
| Incident | Жизненный цикл инцидента: статус, связь с алертами (alert_ids). |
| EscalationPolicy / EscalationStep | Цепочка эскалаций (уведомления, паузы) — задел под модуль schedules/IRM. |
Severity — перечисление: info, warning, critical.
События (код: onguard24/domain/events.py)
| Событие | Когда |
|---|---|
AlertReceived (name=alert.received) |
Алерт принят и (в будущем) сохранён/сопоставлен. |
EventBus — протокол; InMemoryEventBus — простая реализация для тестов и прототипа.
Как модули подписываются (план)
- Модуль реализует
Module: свойствоname, методon_event(event). - При старте приложения модуль регистрируется:
bus.subscribe("alert.received", handler). - После успешного INSERT в
ingress_eventsядро вызываетawait bus.publish_alert_received(Alert, raw_payload_ref=id_строки).
Подключение к шине и регистрация модулей: app.state.event_bus, список модулей — modules/registry.py (см. MODULES.md).
Связь с БД
- ingress_events — сырой JSON от Grafana (
alembicмиграция001_initial). - Сущности Alert / Incident — пока только в памяти; позже — таблицы и маппинг.