Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0787745098 |
@ -2,6 +2,12 @@
|
|||||||
|
|
||||||
Формат: семантическое версионирование `MAJOR.MINOR.PATCH`. Git-теги `v1.0.0`, `v1.1.0` и т.д. — см. [docs/VERSIONING.md](docs/VERSIONING.md).
|
Формат: семантическое версионирование `MAJOR.MINOR.PATCH`. Git-теги `v1.0.0`, `v1.1.0` и т.д. — см. [docs/VERSIONING.md](docs/VERSIONING.md).
|
||||||
|
|
||||||
|
## [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
|
## [1.4.0] — 2026-04-03
|
||||||
|
|
||||||
Правое меню «Разделы» на главной и на страницах модулей, пункты из `MODULE_MOUNTS` (`title` + `ui_router`).
|
Правое меню «Разделы» на главной и на страницах модулей, пункты из `MODULE_MOUNTS` (`title` + `ui_router`).
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
# onGuard24
|
# onGuard24
|
||||||
|
|
||||||
**Версия: 1.4.0** · Модульный монолит на **Python (FastAPI)**: ядро, приём алертов из Grafana, заготовки модулей (дежурства, контакты, светофор), PostgreSQL, проверки Vault / Grafana / Forgejo.
|
**Версия: 1.4.1** · Модульный монолит на **Python (FastAPI)**: ядро, приём алертов из Grafana, заготовки модулей (дежурства, контакты, светофор), PostgreSQL, проверки Vault / Grafana / Forgejo.
|
||||||
|
|
||||||
| Документ | Назначение |
|
| Документ | Назначение |
|
||||||
|----------|------------|
|
|----------|------------|
|
||||||
@ -82,7 +82,7 @@ Vite проксирует `/api` на `http://127.0.0.1:8080` (см. `web/vite.c
|
|||||||
|
|
||||||
## Миграции БД (Alembic)
|
## Миграции БД (Alembic)
|
||||||
|
|
||||||
- URL БД: переменная **`DATABASE_URL`** (как у приложения; в `alembic/env.py` используется синхронный драйвер `postgresql+psycopg`).
|
- URL БД: переменная **`DATABASE_URL`** (как у приложения; в `alembic/env.py` используется синхронный драйвер `postgresql+psycopg`). К URL автоматически добавляется **`client_encoding=utf8`**, чтобы миграции не падали с `TypeError: ... bytes-like object`, если на сервере PostgreSQL включён режим вроде `SQL_ASCII`.
|
||||||
- Применить схему: `alembic upgrade head`.
|
- Применить схему: `alembic upgrade head`.
|
||||||
- Новая ревизия: `alembic revision -m "описание"` и правка файла в `alembic/versions/`.
|
- Новая ревизия: `alembic revision -m "описание"` и правка файла в `alembic/versions/`.
|
||||||
|
|
||||||
|
|||||||
@ -20,6 +20,14 @@ if config.config_file_name is not None:
|
|||||||
target_metadata = None
|
target_metadata = None
|
||||||
|
|
||||||
|
|
||||||
|
def _ensure_psycopg_client_encoding(url: str) -> str:
|
||||||
|
"""Иначе psycopg3 при SQL_ASCII на сервере отдаёт version() как bytes → падает SQLAlchemy re.match."""
|
||||||
|
if "+psycopg" not in url or "client_encoding=" in url:
|
||||||
|
return url
|
||||||
|
join = "&" if "?" in url else "?"
|
||||||
|
return f"{url}{join}client_encoding=utf8"
|
||||||
|
|
||||||
|
|
||||||
def get_sync_url() -> str:
|
def get_sync_url() -> str:
|
||||||
url = os.environ.get("DATABASE_URL", "").strip()
|
url = os.environ.get("DATABASE_URL", "").strip()
|
||||||
if not url:
|
if not url:
|
||||||
@ -30,7 +38,7 @@ def get_sync_url() -> str:
|
|||||||
url = url.replace("postgresql://", "postgresql+psycopg://", 1)
|
url = url.replace("postgresql://", "postgresql+psycopg://", 1)
|
||||||
if "+asyncpg" in url:
|
if "+asyncpg" in url:
|
||||||
url = url.replace("+asyncpg", "+psycopg")
|
url = url.replace("+asyncpg", "+psycopg")
|
||||||
return url
|
return _ensure_psycopg_client_encoding(url)
|
||||||
|
|
||||||
|
|
||||||
def run_migrations_offline() -> None:
|
def run_migrations_offline() -> None:
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
"""onGuard24 — модульный монолит (ядро + модули)."""
|
"""onGuard24 — модульный монолит (ядро + модули)."""
|
||||||
|
|
||||||
__version__ = "1.4.0"
|
__version__ = "1.4.1"
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "onguard24"
|
name = "onguard24"
|
||||||
version = "1.4.0"
|
version = "1.4.1"
|
||||||
description = "onGuard24 — модульный сервис (аналог IRM)"
|
description = "onGuard24 — модульный сервис (аналог IRM)"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
|
|||||||
Reference in New Issue
Block a user