Telegram-бот для каталога товаров.
Перед запуском проверок (make check) необходимо установить dev-зависимости:
pip install -r requirements.txt
pip install -r requirements-dev.txtmake check— все проверки (компиляция, smoke_suite, callback_coverage, ruff)make check-fast— быстрые проверки (без ruff)make check-smoke— только smoke_suitemake check-callback— только callback_coveragemake check-compile— только компиляцияmake check-ruff— только ruff (F401, F841)
Стабильный набор (основная команда для CI и перед релизом):
python3 -m pytest -m "(unit or db) and not integration" -v --tb=shortВоспроизводимо на любой машине, без зависимости от data/catalog_bot.db. Тестовая БД создаётся автоматически (seed + копия на тест для @pytest.mark.db).
Интеграционные тесты (отдельно, не блокируют стабильный набор):
python3 -m pytest -m "integration" -v --tb=shortВсе тесты:
python3 -m pytest tests/ -v --tb=shortПодробнее: см. tests/README_TESTS.md (маркеры unit/db/integration, как гонять локально).
Перед релизом запустить по порядку:
- pytest — стабильные тесты (unit + db, без тяжёлых integration):
python3 -m pytest tests/ -m "(unit or db) and not integration" -v --tb=short
или полный набор:python3 -m pytest tests/ -v --tb=short - smoke_db_checks — проверка БД и инвариантов (без Telegram):
python3 scripts/smoke_db_checks.py
Должен завершиться с кодом 0 (иначе — исправить инварианты serial/stock или доступ к таблицам). - Сценарии из SMOKE.md — пройти вручную 4 ключевых сценария (каталог→заявка, trade-in, stock, гарантия) и убедиться, что ожидания из SMOKE.md выполнены.
Подробное описание сценариев, окружения и критериев PASS/FAIL — в файле SMOKE.md в корне проекта.
- Секреты хранятся в
.env(не коммитить). Пример:.env.example. - В
.gitignoreуже добавлены:.env,.env.local,.env.*.local,*.env(исключение:!*.env.example). - В коде токены и пароли не логируются. При запуске бота окружение проверяется через
utils.env.validate_env(); при отсутствииBOT_TOKEN(если не CI) — понятная ошибка без вывода значения. - Подробнее: docs/verification/run_local.md (как запустить локально, в CI, что будет при отсутствии env).
bot.py— точка входаhandlers/— обработчики сообщений и callback'овcatalog/— логика каталога товаровscripts/— guard-скрипты и утилиты проверкиdocs/— документация и отчёты