Реестр MODULE_MOUNTS: API, ui_router, фрагменты главной, EventBus. Главная и страницы модулей с правой навигацией из реестра; wrap_module_html_page. Ingress: публикация alert.received после сохранения в БД. Документация MODULES.md; pytest покрывает API, UI и навигацию. Made-with: Cursor
4.8 KiB
4.8 KiB
Changelog
Формат: семантическое версионирование MAJOR.MINOR.PATCH. Git-теги v1.0.0, v1.1.0 и т.д. — см. docs/VERSIONING.md.
[1.4.0] — 2026-04-03
Правое меню «Разделы» на главной и на страницах модулей, пункты из MODULE_MOUNTS (title + ui_router).
nav_rail_html,wrap_module_html_page, общие стилиAPP_SHELL_CSSвmodules/ui_support.py.- Модуль schedules в реестре переименован для примера:
title= «Календарь дежурств».
[1.3.0] — 2026-04-03
Веб-UI модулей с главной страницы и изоляция ошибок превью.
Добавлено
ModuleMount: поляslug,title, опциональноui_router,render_home_fragment./ui/modules/<slug>/— монтированиеui_routerкаждого модуля (полные HTML-страницы, не в OpenAPI).- Главная
/: секция «Модули» с карточками; фрагменты черезui_support.safe_fragment(падение одного модуля не ломает страницу). - Примеры в
schedules,contacts,statusboard; тестыtests/test_root_ui.py.
[1.2.0] — 2026-04-03
Модульная разработка без правок main.py на каждый новый роутер.
Добавлено
onguard24/modules/registry.py— единый списокMODULE_MOUNTS(роутер, префикс URL,register_events). Подключение роутеров вcreate_app()циклом.- У каждого модуля (
schedules,contacts,statusboard) функцияregister_events(EventBus)— заготовка подписки наalert.received. app.state.event_bus: при старте создаётсяInMemoryEventBus, вызываетсяregister_module_events.- Ingress Grafana:
INSERT … RETURNING id, затемpublish_alert_receivedс ссылкой на строкуingress_events. - Документация: docs/MODULES.md.
[1.1.0] — 2026-04-03
Инфраструктура разработки и задел под домен IRM.
Добавлено
- Миграции: Alembic (
alembic.ini,alembic/env.py, ревизии вalembic/versions/). Начальная схема: таблицаingress_events(как раньше в коде). Команда:alembic upgrade head. DDL при старте приложения убран — только пул asyncpg. - Тесты:
pytest,pytest-asyncio, моки интеграций; тесты API:/health,/api/v1/status,POST /api/v1/ingress/grafana(в т.ч. секрет webhook). Установка:pip install -e ".[dev]". - Домен (задел): пакет
onguard24/domain/— сущностиAlert,Incident, эскалация;EventBus/InMemoryEventBus, протоколModuleдля подписки на события. Описание: docs/DOMAIN.md.
Зависимости
- Прод:
sqlalchemy,alembic,psycopg[binary](для CLI миграций). - Dev (optional):
pytest,pytest-asyncio,respx.
Тег в репозитории (после публикации): v1.1.0.
[1.0.0] — 2026-04-03
Первый зафиксированный релиз каркаса (scaffold).
Что входит
- Backend: FastAPI, uvicorn, конфиг из
.env(путь к.envот корня репозитория). - БД: PostgreSQL через asyncpg, пул, миграция
ingress_events(сырой SQL вonguard24/db.py). - Ingress:
POST /api/v1/ingress/grafana— сохранение JSON алерта в БД; опциональноX-OnGuard-Secret+GRAFANA_WEBHOOK_SECRET. - Статус:
GET /,GET /api/v1/status— проверки database, Vault, Grafana (SA token), Forgejo (PAT + fallback безread:user). - Модули-заглушки:
schedules,contacts,statusboardпод префиксом/api/v1/modules/.... - Фронт: Vite + React в
web/(прокси на API). - Документация: README,
.env.example,docs/ARCHITECTURE.md.
Не входит (следующие версии)
- Alembic / полноценные миграции.
- Авторизация публичных API (кроме секрета webhook).
- Бизнес-логика IRM (эскалации, дежурства, светофор) — только заготовки модулей.
Тег в репозитории: v1.0.0.