Similar presentations:
BotTrainer_Presentation
1.
Bot Trainer PlatformDjango + 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 Composedb: 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.
Troubleshooting502 от 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 → в трекере