Files
onGuard24/docs/DOMAIN.md
Alexandr 349cea85a3 v1.4.0: модули с веб-UI, правое меню, расширенные тесты
Реестр MODULE_MOUNTS: API, ui_router, фрагменты главной, EventBus.
Главная и страницы модулей с правой навигацией из реестра; wrap_module_html_page.
Ingress: публикация alert.received после сохранения в БД.
Документация MODULES.md; pytest покрывает API, UI и навигацию.

Made-with: Cursor
2026-04-03 08:45:19 +03:00

2.2 KiB
Raw Permalink Blame History

Доменная модель 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 — простая реализация для тестов и прототипа.

Как модули подписываются (план)

  1. Модуль реализует Module: свойство name, метод on_event(event).
  2. При старте приложения модуль регистрируется: bus.subscribe("alert.received", handler).
  3. После успешного 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 — пока только в памяти; позже — таблицы и маппинг.