infra: каркас проекта — uv, линтеры, тесты, Docker Compose #3
Notifications
Due Date
No due date set.
Blocks
Reference: HSE/tgit#3
Reference in New Issue
Block a user
Описание
Основа репозитория по ARCHITECTURE §7 и «Требованиям к оформлению» (отдельные каталоги кода, тестов, конфигов, инфраструктуры). Стек — ADR-009.
Желаемый результат
make install / lint / fmt / test / up / down / logsработают на чистой машине.make upподнимаетbot(пока заглушка) иpostgresв Compose.make lint(ruff check + ruff format --check + mypy) иmake testзелёные на пустом проекте.Подзадачи
pyproject.toml: Python 3.12, зависимости ADR-009, настройки ruff/mypy (strict дляapp/)/pytest/coverageapp/ config/ infra/ examples/ tests/с__init__.py/README-заглушкамиMakefileс целями вышеDockerfile(multi-stage, uv, non-root),docker-compose.yml(bot + postgres 16, healthcheck, лимиты памяти).env.exampleсо всеми переменными и комментариями.dockerignore,.python-version, обновить.gitignoreАнализ
Затрагиваемые файлы
pyproject.tomlMakefileDockerfiledocker-compose.yml.env.exampleОграничения и риски
Лимиты памяти в Compose — из бюджета ARCHITECTURE §6 (бот ≤ 256 МБ, postgres ≤ 256 МБ).
uv.lockкоммитим.Как проверить
make install && make lint && make test && make up && docker compose ps— оба сервисаhealthy/running.Лог выполнения
2026-10-13
pyproject.toml(Python 3.12, ADR-009, ruff + mypy strict + pytest/coverage),app/с заглушкой-точкой входа (graceful shutdown по SIGTERM), каталогиconfig/ infra/ examples/ tests/с README,Makefile,Dockerfile,docker-compose.yml,.env.example,.dockerignore,uv.lock.uid 10001, в рантаймеgit+openssh-client(нужны #9).apt-get update— в локальной сети заблокирован обычный HTTP (дажеexample.com), HTTPS работает. Источники apt переключены наhttps://— работает в любой сети.make lint(ruff, format, mypy strict) иmake testзелёные;make up→ postgreshealthy, botrunningотtgit;docker compose stop bot→ «tgit stopped», exit 0 без таймаута; образ 311 МБ.fail_underпокрытия пока не задан — порог вводится в #6.