48 lines
3.0 KiB
Markdown
48 lines
3.0 KiB
Markdown
# Архитектура проекта
|
||
|
||
Репозиторий разделен по зонам ответственности рантайма:
|
||
|
||
```text
|
||
backend/ Python-код приложения
|
||
bot/ Telegram-бот, aiohttp API, вебхуки, сервисы
|
||
config/ Pydantic-настройки и загрузчики тарифов/тем
|
||
db/ SQLAlchemy-модели, DAL, миграции
|
||
main_backend.py точка входа aiohttp backend
|
||
main_worker.py точка входа фонового worker
|
||
main_migrate.py одноразовый запуск миграций
|
||
requirements.txt Python-зависимости рантайма
|
||
|
||
frontend/ Svelte/Vite Mini App и админка
|
||
src/ исходный код Svelte
|
||
scripts/ вспомогательные скрипты сборки frontend
|
||
package.json Node-скрипты и зависимости
|
||
|
||
deploy/
|
||
docker/ Dockerfile, nginx- и caddy-конфиги рантайма
|
||
examples/ готовые Docker Compose примеры запуска
|
||
|
||
data/ данные рантайма, монтируемые в контейнеры
|
||
locales/ переводы бота и Web App
|
||
tests/ Python-тесты
|
||
```
|
||
|
||
Основной `docker-compose.yml` находится в корне репозитория, чтобы `docker compose up` оставался простым продакшен-путем. Он собирает три прикладных образа из `deploy/docker/Dockerfile`:
|
||
|
||
- `backend`: aiohttp API и вебхуки.
|
||
- `worker`: worker тарифов, синхронизация с панелью, обработчики очередей вебхуков.
|
||
- `frontend`: статические Svelte-ассеты, которые отдает nginx.
|
||
|
||
Сервис `migrate` - одноразовый контейнер на базе backend-образа. Он входит в стандартный Compose-граф: Postgres и Redis переходят в healthy-состояние, `migrate` применяет `Base.metadata.create_all` и ожидающие `schema_migrations`, а затем `backend` и `worker` стартуют только после успешного завершения `migrate`. Так миграции остаются автоматическими для `docker compose up`, но не запускаются внутри каждой backend-реплики.
|
||
|
||
Python-импорты намеренно остаются в пространствах `bot.*`, `config.*` и `db.*`. Контейнеры рантайма выставляют `PYTHONPATH=/app/backend`; локальные тесты используют такую же раскладку через `pytest.ini`.
|
||
|
||
Основные команды:
|
||
|
||
```bash
|
||
docker compose up -d --build
|
||
docker compose run --rm migrate
|
||
docker compose logs -f backend worker frontend
|
||
npm run build:webapp
|
||
pytest -q
|
||
```
|