diff --git a/max_bot/CHANGELOG.md b/max_bot/CHANGELOG.md index c0ff8fb..e3bad9f 100644 --- a/max_bot/CHANGELOG.md +++ b/max_bot/CHANGELOG.md @@ -1,6 +1,8 @@ # Changelog — AegisOne MAX Bot ## 1.7.1 (29.05.2026) +### Новые функции +- **Тестовый прогон:** мок MAX API для test user_id (>=999999000) — сообщения не уходят в MAX ### Исправления - **P1 (CRITICAL):** _add_column_if_not_exists — async def + await, миграции выполняются - **P2 (CSS):** bot_consent, bot_tickets, bot_kb, bot_settings — var(--light-bg) → var(--bg-card), хардкод цвета → CSS-переменные @@ -23,6 +25,7 @@ - **M4 (Double-load race):** settings_cache.py — asyncio.Lock - **M5 (ORG regex):** захват полного ORG без обрезки по ; - **M7 (bot_test.html):** тема наследуется через CSS-переменные + скрипт инициализации +- **bot_test.html:** исправлен ключ localStorage (theme → aegisone_service_theme), var(--bg-page) → var(--bg-body), добавлена стилизация скроллбара - **L1 (Dead code):** _extract_name_from_vcf удалена - **L2 (Импорты):** неиспользуемые Optional, json, config_reader удалены - **L3 (.gitignore):** .opencode/, .env.example добавлены diff --git a/max_bot/app/main.py b/max_bot/app/main.py index 3701fc2..4d0df1d 100644 --- a/max_bot/app/main.py +++ b/max_bot/app/main.py @@ -99,6 +99,8 @@ async def _add_column_if_not_exists(conn, table: str, column: str, col_type: str END IF; END $$; """)) + except Exception as e: + logger.warning(f"Migration add column {table}.{column}: {e}") def _validate_sql_name(name: str) -> None: @@ -109,11 +111,9 @@ def _validate_sql_name(name: str) -> None: def _validate_sql_type(col_type: str) -> None: import re - allowed = r'^(VARCHAR\(\d+\)|TEXT|INTEGER|BOOLEAN( DEFAULT (TRUE|FALSE))?|TIMESTAMP)$' + allowed = r'^(VARCHAR\(\d+\)|TEXT|INTEGER( DEFAULT \d+)?|BOOLEAN( DEFAULT (TRUE|FALSE))?|TIMESTAMP)$' if not re.match(allowed, col_type.strip()): raise ValueError(f"Invalid SQL type: {col_type}") - except Exception as e: - logger.warning(f"Migration add column {table}.{column}: {e}") async def _seed_default_settings(): diff --git a/max_bot/app/max_api.py b/max_bot/app/max_api.py index 9d5a6ac..724b243 100644 --- a/max_bot/app/max_api.py +++ b/max_bot/app/max_api.py @@ -1,7 +1,12 @@ +import logging import httpx from typing import Optional from app.config import settings +logger = logging.getLogger(__name__) + +TEST_USER_THRESHOLD = 999999000 + class MaxAPI: def __init__(self): @@ -58,6 +63,9 @@ class MaxAPI: format: Optional[str] = None, notify: bool = True, ) -> dict: + if user_id >= TEST_USER_THRESHOLD: + logger.info(f"MOCK send_message to test user {user_id}: {text[:50]}") + return {"ok": True, "mock": True} payload = {"text": text, "notify": notify} if attachments: payload["attachments"] = attachments diff --git a/py_service/CHANGELOG.md b/py_service/CHANGELOG.md index 04e6705..f466560 100644 --- a/py_service/CHANGELOG.md +++ b/py_service/CHANGELOG.md @@ -2,6 +2,7 @@ ## 1.7.1 (29.05.2026) ### Исправления +- **bot_test.html:** исправлен ключ localStorage для темы, var(--bg-page)→var(--bg-body), стилизация скроллбара - **P2 (CSS):** bot_consent, bot_tickets, bot_kb, bot_settings — var(--light-bg)→var(--bg-card), хардкод цвета→CSS-переменные - **M7 (bot_test.html):** тема наследуется через CSS-переменные + скрипт инициализации - **C3 (Email typo):** contact proxy — user.email вместо user.phone diff --git a/py_service/app/templates/pages/bot_test.html b/py_service/app/templates/pages/bot_test.html index 1640862..f5fd296 100644 --- a/py_service/app/templates/pages/bot_test.html +++ b/py_service/app/templates/pages/bot_test.html @@ -6,13 +6,13 @@