43.31K

BotTrainer_Presentation

1.

Bot Trainer Platform
Django + DRF + Telegram Bot + PostgreSQL + Docker + Nginx
(+ Celery/Redis optional)

2.

Цели проекта
• Платформа для ведения тренировок с Telegram-ботом и
админ-панелью
• Хранение упражнений/программ, выдача планов клиентам
• Надёжный деплой в Docker/Compose за Nginx, Postgres, Redis
• Тесты (pytest), документация (README), миграции Django

3.

Технологический стек
• Backend: Django (MVT/MTV), Django ORM, CBV/FBV
• API: Django REST Framework (viewsets/serializers)
• Telegram: python-telegram-bot 22.x (dev: polling, prod: webhook через
Nginx)
• DB: PostgreSQL 16; Кэш/брокер: Redis (опционально Celery)
• Инфра: Docker + Docker Compose, Nginx reverse proxy
• Тесты: pytest + coverage; Git-flow; README

4.

Архитектура (упрощённо)
Пользователь ↔ Nginx ↔ Gunicorn ↔ Django (web)
Telegram ↔ Nginx ↔ Django webhook (или polling в dev)
Django ORM ↔ PostgreSQL
Celery (опц.) ↔ Redis (broker/beat)

5.

Сервисы Docker Compose
db: postgres:16-alpine, healthcheck, volume pg_data
redis: redis:7-alpine (опц.)
web: gunicorn + Django, монтирование static/media, healthz
nginx: reverse proxy :8080→web:8000, статика с volume
bot: python-telegram-bot (polling dev / webhook prod)

6.

Модели данных (основные)
Exercise (глобальные упражнения, managed=False)
TrainerExercise (кастом тренера, unique_together (owner, name))
TelegramUser (клиенты TG), TrainerClient (связь тренер↔клиент)
Program, ProgramExercise (план тренировок)
Favorite (избранные упражнения)
Notifications (templates/scheduled)

7.

Потоки бота (пример)
• Команды: /start, /help, /my_program
• При /start:
– • get_or_create TelegramUser
– • приветствие, язык, привязка к тренеру
• При /my_program:
– • загрузка Program по пользователю
– • форматированный ответ/кнопки

8.

API (DRF, high-level)
• Эндпоинты (пример): /api/exercises, /api/programs, /api/clients
• JWT/Token (опц.), пагинация/фильтры/permissions
• Админка Django для контента и справочников

9.

Запуск (локально)
cp .env.example → .env и заполнить PG/Secrets
docker compose up -d --build db redis web nginx
Открыть http://localhost:8080/ (healthz → ok)
Для бота (dev, polling): docker compose up -d --build bot

10.

Прод (webhook через Nginx)
Настроить публичный домен/сертификат
Проброс /telegram/webhook → web:8000
Включить установку webhook при старте бота
Отключить polling; проверить healthz и логи

11.

Тестирование (pytest)
Установка: pip install -r requirements-dev.txt (при наличии)
Запуск: pytest -q
Покрытие: pytest --maxfail=1 --disable-warnings -q --cov=.
CI (опц.): запуск тестов в GitHub Actions/GitLab CI

12.

Безопасность & конфиги
.env: TELEGRAM_BOT_TOKEN, DJANGO_SECRET_KEY, PG*
ALLOWED_HOSTS, CSRF_TRUSTED_ORIGINS
Миграции перед запуском: manage.py migrate
Регулярные бэкапы БД/volumes

13.

Troubleshooting
502 от Nginx: проверить web:8000 (curl внутри контейнера)
400 Bad Request: ALLOWED_HOSTS/CSRF в settings
Бот не стартует: TELEGRAM_BOT_TOKEN, режим polling/webhook
Миграции: manage.py makemigrations/migrate, состояние БД

14.

Дорожная карта
Личный кабинет тренера (UI)
Экспорт/импорт программ, пресеты
Биллинг/подписки (опц.)
Push/уведомления по расписанию (Celery beat)
Документация OpenAPI (drf-spectacular)

15.

Контакты/Спасибо
• Репозиторий: Git (README обновлён)
• Вопросы/issue → в трекере
English     Русский Rules