bot: точка входа, конфиг, главное меню, FSM-хранилище, healthcheck #4
Notifications
Due Date
No due date set.
Reference: HSE/tgit#4
Reference in New Issue
Block a user
Описание
Каркас интерфейса по SPEC §4.0 (M-1…M-4) и ARCHITECTURE §2.1: long polling (ADR-002), меню разделов, FSM, переживающий рестарт.
Желаемый результат
python -m appзапускает бота; главное меню (reply-клавиатура): 📝 Коммит · 🩺 Статус · 📜 Логи · 🚨 Алерты (+ 👥 Участники для админа); разделы пока заглушки./menuиз любого состояния.fsm_state).pydantic-settingsпо классу на подсистему; healthcheck контейнера.Подзадачи
app/config.pyapp/main.py— сборка Bot/Dispatcher, роутеры, graceful shutdownapp/bot/menu.py— клавиатуры,CallbackDataс короткими id→ перенесено в #5 (нужна БД)app/bot/fsm_storage.py—BaseStorageповерх БДconfig/texts.yamlHEALTHCHECKАнализ
Затрагиваемые файлы
app/main.pyapp/config.pyapp/bot/menu.pyapp/bot/fsm_storage.pyconfig/texts.yamlОграничения и риски
callback_data ≤ 64 байт. Токен бота не логировать. Один экземпляр polling на токен.
Как проверить
make up; меню видно, кнопки разделов открывают заглушки, «Назад»//menuработают; рестарт контейнера посреди сценария — состояние сохранилось.Лог выполнения
2026-10-13
2026-10-13
app/config.py(pydantic-settings по подсистемам,ADMIN_IDSчерез запятую),config/texts.yaml+app/texts.py(валидация при старте),app/bot/menu.py,app/bot/routers/common.py(/start,/menu,/help, разделы-заглушки, «Назад»/«Отмена» редактируют сообщение на месте),app/health.py+HEALTHCHECK, JSON-логи.AccessMiddleware(outer, сообщения и кнопки) пускает толькоADMIN_IDS; посторонним — одна фраза в сутки, устаревшие кнопки молча гасятся. В #25 предикат заменится на участников из БД.make_storage()отдаётMemoryStorage.CONFIG_DIR(по умолчаниюconfigот рабочего каталога): пакет в Docker ставится в site-packages, путь «рядом с кодом» не работает.Dispatcher— 20 тестов, покрытие 89 %.Unauthorized→ аккуратная остановка;python -m app.health→ 1 без heartbeat, 0 со свежим.TELEGRAM_BOT_TOKEN— проверю меню в Telegram, как только токен появится в.env.bot: точка входа, конфиг, /start и /help, healthcheckto bot: точка входа, конфиг, главное меню, FSM-хранилище, healthcheck