8.0 KiB
Changelog
Формат: семантическое версионирование MAJOR.MINOR.PATCH. Git-теги v1.0.0, v1.1.0 и т.д. — см. docs/VERSIONING.md.
[1.8.0] — 2026-04-03
UI каталога Grafana и инцидентов; правки CI/CD деплоя.
Добавлено / изменено
- Каталог Grafana (UI): кнопка синхронизации без
curl, раскрывающееся дерево папок (имя, UID, родитель) и правил (title, rule_uid, группа, интервал, labels); блок namespace без папки в API. - Инциденты (UI): колонка «Создан», ссылка на карточку; карточка с полями и сырым JSON вебхука из
ingress_events. - API
GET …/grafana-catalog/tree: полеorphan_rule_groups. - CI/CD: нормализация ref (
refs/heads/main, semver безv),docker compose --progress plain; отключён pip cache при таймауте Actions cache.
[1.7.0] — 2026-04-03
Каталог Grafana (топология правил), доработки ingress/IRM, тесты.
Добавлено
- Alembic
003_ingress_org_service,004_grafana_catalog— метаданные и снимок папок/правил Grafana. - Модуль
grafana-catalog:POST …/sync,GET …/meta,GET …/tree, UI. onguard24/integrations/grafana_topology.py,grafana_sources.py.- Документация: docs/GRAFANA_TOPOLOGY.md.
- Тесты:
test_grafana_topology.py,test_grafana_catalog_api.py,irm_db_fake.py,test_irm_api_with_fake_db.py.
[1.6.0] — 2026-04-03
Docker-образ, docker-compose.yml, CI/CD Forgejo/Gitea Actions.
Добавлено
Dockerfile,docker-compose.yml,deploy/entrypoint.sh—alembic upgrade+uvicorn(отключение:SKIP_ALEMBIC=1)..gitea/workflows/ci.yml— pytest на push вmainи PR..gitea/workflows/deploy.yml— деплой по пушу тегаv*или вручную; откат = тот же workflow сref= старый тег.- docs/CICD.md — секреты, подготовка
root@pvestandt9, порядок релиза и отката.
[1.5.0] — 2026-04-03
IRM-ядро: инциденты, задачи, эскалации, миграция БД, документация.
Добавлено
- Документация: docs/IRM.md — матрица функций IRM и что настраивать в Grafana.
- Alembic
002_irm_core: таблицыincidents,tasks,escalation_policies. - Модули:
incidents(API + UI, авто-создание изalert.receivedпри наличии БД),tasks,escalations. register_module_events(bus, pool)— подписки получают пул PostgreSQL.- Тесты:
tests/test_irm_modules.py, обновлены тесты навигации.
[1.4.1] — 2026-04-03
Исправлено
- Alembic: к URL с
postgresql+psycopgдобавляетсяclient_encoding=utf8, чтобыalembic upgrade headне падал сTypeError: ... bytes-like objectпри некоторых настройках кодировки на стороне PostgreSQL/psycopg3.
[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.