Современная backend система для образовательной платформы с ИИ-тьютором через Telegram бота. Управляет студентами, материалами курсов, расписанием и предоставляет REST API для интеграции с внешними системами.
- ИИ-тьютор через Telegram бота
- Образовательная система с программами, потоками, модулями и уроками
- 3 типа материалов: лекционные, задания, методические
- Расписание занятий с разными типами (лекции, практика, самостоятельная работа)
- Управление студентами с Telegram интеграцией
- Админ панель для управления всеми данными
- Система заданий с отслеживанием статусов
- История сообщений и ответов ИИ-тьютора
- FastAPI - современный веб-фреймворк с автоматической документацией
- SQLAlchemy 2.0 - ORM с асинхронной поддержкой
- PostgreSQL - реляционная база данных
- Alembic - система миграций
- SQLAdmin - админ панель
- Docker - контейнеризация
- Pydantic - валидация данных
TutorAI/
├── app/ # Основное приложение
│ ├── main.py # Точка входа FastAPI
│ ├── core/ # Ядро приложения
│ │ ├── config.py # Конфигурация
│ │ └── database.py # Настройка БД
│ ├── models/ # Модели данных
│ │ └── education.py # SQLAlchemy модели
│ ├── api/ # API endpoints
│ │ └── v1/ # Версия API v1
│ │ ├── students.py # Студенты API
│ │ ├── materials.py # Материалы API
│ │ └── messages.py # Сообщения API
│ └── admin/ # Админ панель
│ └── views.py # Настройка админки
├── alembic/ # Миграции БД
│ ├── env.py # Конфигурация Alembic
│ ├── script.py.mako # Шаблон миграций
│ └── versions/ # Файлы миграций
├── db/ # Схемы БД
│ ├── init.sql # Инициализация
│ └── schema.sql # Полная схема
├── scripts/ # Утилиты
│ ├── init_db.py # Инициализация БД
│ ├── seed_data.py # Тестовые данные
│ └── create_user.py # Создание пользователей
├── docker-compose.yml # Docker конфигурация
├── Dockerfile # Docker образ
├── requirements.txt # Зависимости Python
├── alembic.ini # Конфигурация Alembic
└── README.md # Документация
Минимальные требования:
- Python 3.8+ (рекомендуется 3.11+)
- Docker и Docker Compose
- Git (для клонирования репозитория)
Windows:
# Скачайте Python с https://python.org
# При установке ОБЯЗАТЕЛЬНО отметьте "Add Python to PATH"Windows:
- Скачайте Docker Desktop
- Установите и запустите Docker Desktop
# Клонируйте репозиторий
git clone <repository-url>
cd TutorAI# 1. Установить зависимости Python
pip install -r requirements.txt
# 2. Запустить автоматическую настройку (все остальное сделает скрипт)
python scripts/auto_setup.py- Админ панель: http://localhost:8000/admin
- API документация: http://localhost:8000/docs
- Главная страница: http://localhost:8000 (редирект на админку)
Если при установке зависимостей возникает ошибка:
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.44.35207\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
Failed to build asyncpg
Решения (в порядке предпочтения):
# Установить предкомпилированную версию asyncpg
pip install --only-binary=all asyncpg
# Затем установить остальные зависимости
pip install -r requirements.txt# Обновить pip
python -m pip install --upgrade pip
# Установить Microsoft C++ Build Tools
# Скачайте: https://visualstudio.microsoft.com/visual-cpp-build-tools/
# При установке выберите "C++ build tools"
# Перезапустите терминал и попробуйте снова
pip install -r requirements.txt# Запуск через Docker (все зависимости уже установлены)
docker-compose up -d# Скрипт автоматически решит проблемы с зависимостями
python scripts/auto_setup.py# Создать новую миграцию
alembic revision --autogenerate -m "Описание изменений"
# Применить миграции
alembic upgrade head
# Откатить миграцию
alembic downgrade -1
# Показать историю миграций
alembic history- Студенты - управление студентами
- Программы курсов - образовательные программы
- Потоки - потоки обучения
- Модули - разделы курсов
- Уроки - темы уроков
- Материалы курса - файлы и контент
- Расписания - расписание занятий
- Задания - студенческие задания
- Сообщения - история чатов (только просмотр)
- Ответы бота - ответы ИИ (только просмотр)
После запуска приложения доступна:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- OpenAPI JSON: http://localhost:8000/openapi.json
- GET
/- Главная страница (редирект на админку) - GET
/health- Проверка состояния - GET
/admin- Админ панель - GET
/docs- API документация
| Модель | Описание |
|---|---|
| Student | Студенты с Telegram интеграцией |
| CourseProgram | Образовательные программы |
| Stream | Потоки обучения |
| Module | Модули курса (разделы) |
| Lesson | Уроки/темы внутри модулей |
| CourseMaterial | Материалы курса (3 типа) |
| Message | Сообщения студентов |
| BotResponse | Ответы ИИ-тьютора |
| Assignment | Задания студентов |
| Schedule | Расписание занятий |
| Prompt | Промпты для ИИ |
- Лекционные (
lecture) - информация для слушателя - Задания (
assignment) - тестирования и практические работы - Методические (
methodical) - критерии проверки и оценки
- Лекционная работа - с датой и временем
- Практическая работа - с датой и временем
- Самостоятельная работа - только дата
Система хранит промпты в таблице prompts с типами:
- question_classifier - классификация вопросов студентов
- faq_response - ответы на часто задаваемые вопросы
- material_response - работа с материалами курса
- Сообщения студентов сохраняются в таблице
messages - Ответы ИИ-тьютора в таблице
bot_responses - Связь через
telegram_user_idиtelegram_username - Поддержка множественных чатов
# Запуск тестов
pytest
# С покрытием кода
pytest --cov=app# Инициализация БД
python scripts/init_db.py --create --migrate --seed
# Загрузка тестовых данных
python scripts/seed_data.py
# Проверка состояния
curl http://localhost:8000/healthMIT License