v1.1.0: Alembic, pytest, домен и документация
- Миграции PostgreSQL через Alembic; DDL убран из lifespan приложения. - Тесты: health, status, ingress Grafana; моки Vault/Grafana/Forgejo. - Пакет onguard24/domain/ (сущности, шина событий), docs/DOMAIN.md. - Обновлены README, CHANGELOG, ARCHITECTURE. Made-with: Cursor
This commit is contained in:
30
README.md
30
README.md
@ -1,6 +1,6 @@
|
||||
# onGuard24
|
||||
|
||||
**Версия: 1.0.0** · Модульный монолит на **Python (FastAPI)**: ядро, приём алертов из Grafana, заготовки модулей (дежурства, контакты, светофор), PostgreSQL, проверки Vault / Grafana / Forgejo.
|
||||
**Версия: 1.1.0** · Модульный монолит на **Python (FastAPI)**: ядро, приём алертов из Grafana, заготовки модулей (дежурства, контакты, светофор), PostgreSQL, проверки Vault / Grafana / Forgejo.
|
||||
|
||||
| Документ | Назначение |
|
||||
|----------|------------|
|
||||
@ -8,6 +8,7 @@
|
||||
| [docs/VERSIONING.md](docs/VERSIONING.md) | Теги, откат к предыдущей версии |
|
||||
| [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) | Структура кода, куда что класть |
|
||||
| [docs/AI_CONTEXT.md](docs/AI_CONTEXT.md) | Краткий контекст для доработок |
|
||||
| [docs/DOMAIN.md](docs/DOMAIN.md) | Сущности (инцидент, алерт, эскалация), шина событий |
|
||||
|
||||
**Репозиторий:** [forgejo.pvenode.ru/admin/onGuard24](https://forgejo.pvenode.ru/admin/onGuard24)
|
||||
|
||||
@ -16,13 +17,13 @@
|
||||
## Что уже есть (функционал v1)
|
||||
|
||||
- Запуск HTTP API (`uvicorn`), конфиг из `.env`.
|
||||
- **PostgreSQL:** пул asyncpg, таблица `ingress_events` для сырых тел webhook Grafana.
|
||||
- **PostgreSQL:** пул asyncpg, таблица `ingress_events` для сырых тел webhook Grafana; схема через **Alembic** (отдельные ревизии в `alembic/versions/`).
|
||||
- **POST `/api/v1/ingress/grafana`** — приём JSON алерта (опционально защита `X-OnGuard-Secret`).
|
||||
- **GET `/`**, **GET `/api/v1/status`** — проверки: БД, Vault, Grafana (service account), Forgejo (PAT).
|
||||
- **Модули-заглушки:** `/api/v1/modules/schedules|contacts|statusboard/`.
|
||||
- **Фронт (опционально):** `web/` — Vite + React, прокси на API.
|
||||
|
||||
Чего **ещё нет** (следующие версии): Alembic, авторизация API, доменная модель инцидентов, эскалации, фоновые задачи.
|
||||
Чего **ещё нет** (следующие версии): авторизация публичных API (кроме секрета webhook), полноценная бизнес-логика IRM в коде (эскалации, дежурства, светофор), фоновые задачи. Доменные сущности и задел под модули описаны в [docs/DOMAIN.md](docs/DOMAIN.md).
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
@ -33,7 +34,11 @@ source .venv/bin/activate # Windows: .venv\Scripts\activate
|
||||
pip install -e .
|
||||
```
|
||||
|
||||
Скопируй `.env.example` в `.env` и заполни секреты (см. ниже).
|
||||
Скопируй `.env.example` в `.env` и заполни секреты (см. ниже). Перед первым запуском с БД примените миграции:
|
||||
|
||||
```bash
|
||||
alembic upgrade head
|
||||
```
|
||||
|
||||
```bash
|
||||
python -m uvicorn onguard24.main:app --reload --host 0.0.0.0 --port 8080
|
||||
@ -73,3 +78,20 @@ cd web && npm install && npm run dev
|
||||
```
|
||||
|
||||
Vite проксирует `/api` на `http://127.0.0.1:8080` (см. `web/vite.config.ts`).
|
||||
|
||||
## Миграции БД (Alembic)
|
||||
|
||||
- URL БД: переменная **`DATABASE_URL`** (как у приложения; в `alembic/env.py` используется синхронный драйвер `postgresql+psycopg`).
|
||||
- Применить схему: `alembic upgrade head`.
|
||||
- Новая ревизия: `alembic revision -m "описание"` и правка файла в `alembic/versions/`.
|
||||
|
||||
Приложение **не** выполняет DDL при старте — только пул соединений.
|
||||
|
||||
## Тесты
|
||||
|
||||
```bash
|
||||
pip install -e ".[dev]"
|
||||
pytest
|
||||
```
|
||||
|
||||
Покрытие: `/health`, `/api/v1/status`, webhook Grafana; внешние вызовы (Vault, Grafana, Forgejo) в тестах статуса подменяются моками.
|
||||
|
||||
Reference in New Issue
Block a user