ML-сервис для оптимизации очередей на защиту лабораторных работ. Использует Ridge-регрессию для предсказания времени защиты и динамического расчета времени ожидания.
- Интеллектуальный прогноз: Предсказание времени на основе сложности лабы, опыта преподавателя и прогресса пары.
- Сбор данных: Автоматическое логгирование каждой защиты для последующего переобучения модели.
- Гибкость: Поддержка одиночных и пакетных запросов (для всей очереди сразу).
- Отказоустойчивость: Автоматический переход на Fallback-алгоритм при отсутствии обученной модели.
Самый простой способ запустить сервис — использовать Docker Compose:
docker-compose up --buildAPI будет доступно по адресу http://localhost:8000.
Проект использует uv для управления зависимостями.
-
Установка зависимостей:
uv sync
-
Обучение модели (первичный запуск):
uv run python train.py
-
Запуск сервера:
uv run python -m api.main
POST /api/v1/predict— Одиночный расчет времени для студента.POST /api/v1/predict/batch— Пакетный пересчет времени для всей очереди.
POST /api/v1/queue/create— Открыть новую очередь (для преподавателя).POST /api/v1/queue/add— Записаться в очередь (для студента).POST /api/v1/queue/next— Вызвать следующего студента.POST /api/v1/queue/finish-student— Завершить защиту и сохранить данные для обучения.
api/— Основной код FastAPI сервиса.api/models/— Сериализованные ML модели (.joblib).data/— База данных SQLite и CSV-логи для обучения.train.py— Скрипт для (пере)обучения модели.docker-compose.yml— Конфигурация для быстрого развертывания.
Чтобы улучшить точность предсказаний, после накопления новых данных в data/defense_history.csv (происходит автоматически при вызове finish-student), запустите скрипт обучения:
uv run python train.pyПосле чего перезапустите сервис, чтобы он подхватил новую версию модели.