feat(bot): точка входа, конфиг, главное меню, доступ для ADMIN_IDS, healthcheck
- config: pydantic-settings по подсистемам, ADMIN_IDS через запятую - texts.yaml + валидация при старте (лишний/пропущенный ключ — ошибка сразу) - меню: reply-клавиатура разделов (Участники — только админам), инлайн «Назад»/«Отмена» с редактированием сообщения на месте, /start, /menu, /help - AccessMiddleware (outer) на сообщениях и кнопках: до #25 пускает только ADMIN_IDS, постороннему — одна фраза в сутки, устаревшие кнопки молча гасятся - heartbeat-файл + HEALTHCHECK в Dockerfile; JSON-логи - FSM пока в памяти (фабрика), хранилище в БД — в #5 - тесты на фейковой сессии aiogram через настоящий Dispatcher Refs #4 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
import json
|
||||
import logging
|
||||
|
||||
from app.logs_setup import JsonFormatter
|
||||
|
||||
|
||||
def test_json_formatter_one_object_per_line() -> None:
|
||||
record = logging.LogRecord("tgit", logging.INFO, __file__, 1, "hello %s", ("мир",), None)
|
||||
entry = json.loads(JsonFormatter().format(record))
|
||||
assert entry["msg"] == "hello мир"
|
||||
assert entry["level"] == "INFO"
|
||||
assert entry["logger"] == "tgit"
|
||||
Reference in New Issue
Block a user