-
Notifications
You must be signed in to change notification settings - Fork 0
Home
В рамках учебных курсов (например, ОПРПО, УПРПО, ВвНСУБД) студентам необходимо объединяться в команды и распределяться по проектам. На практике этот процесс сопровождается рядом проблем:
- хаотичное формирование команд (чаты, таблицы, вручную);
- отсутствие прозрачности распределения;
- ручная обработка заявок администраторами;
- сложности с контролем дедлайнов;
- перегрузка популярных проектов и недозаполнение других;
- отсутствие формализованного механизма обмена проектами;
- отсутствие централизованной визуализации результатов.
Проект решает проблему автоматизации, прозрачности и управляемости процесса распределения студентов по проектам.
Разработать веб-приложение, которое:
- позволяет студентам формировать команды и выбирать проекты;
- автоматизирует процесс распределения;
- предоставляет администраторам инструменты управления курсом и гибкую настройку алгоритма распределения;
- обеспечивает прозрачность и удобство процесса для всех участников.
Цель: попасть на интересный проект в составе удобной команды.
Что важно студенту:
- простой вход в систему;
- понятный список курсов;
- полная информация о курсе (описание, дедлайны);
- удобный просмотр проектов;
- возможность объединяться в команду;
- возможность выбирать проекты до дедлайна;
- уведомление о результатах распределения;
- прозрачный просмотр итогового распределения;
- возможность инициировать обмен проектами.
Студент ориентирован на:
- удобство,
- прозрачность,
- своевременные уведомления,
- честность распределения.
Цель: организовать и корректно выполнить распределение с учетом ограничений.
Что важно администратору:
- управление курсами;
- редактирование описания, дедлайнов, размера команд, отображения курса;
- управление списком проектов;
- контроль заполненности проектов;
- настройка параметров распределения (размер команд, сроки);
- запуск алгоритма распределения;
- визуализация текущих результатов;
- выявление проблем (нераспределенные студенты, пустые проекты);
- возможность корректировки результатов;
- просмотр сформированных команд;
- подтверждение или отклонение обменов.
Администратор ориентирован на:
- управляемость процесса,
- гибкость настройки,
- корректность алгоритма,
- контроль качества распределения;
- минимизацию ручной работы.
- Создание, редактирование, удаление курсов.
- Каждый курс — отдельная сущность (например, «ОПРПО 2026»).
- Настройка дедлайнов и параметров.
- JWT-аутентификация.
- Роли: студент, администратор.
- Разграничение прав доступа.
- Импорт списка студентов из CSV.
- Импорт списка проектов из CSV.
- Валидация данных при загрузке.
- Отправка запроса на объединение.
- Подтверждение или отклонение запроса.
- Создание команды.
- Отправка заявки на выбранные проекты.
- Сохранение предпочтений в системе.
- Запуск вручную или по расписанию.
- Учет ограничений (размер команды, дедлайны).
- Назначение нераспределенных студентов.
- Инициация обмена между командами.
- Подтверждение администратором.
- Обновление распределения после подтверждения.
- Дашборд:
- список команд;
- назначенные проекты;
- заполненность;
- нераспределенные студенты;
- статистика по проектам.
- Backend: Node.js + NestJS (TypeScript)
- Frontend: Vue 3 + TypeScript
- База данных: MySQL
- Контейнеризация: Docker + Docker Compose
- Документация API: OpenAPI (Swagger)
- Покрытие тестами:
- unit-тесты
- интеграционные тесты
- Масштабируемость и расширяемость архитектуры
Диаграмма отражает взаимодействие ролей с системой:

Основной сценарий:
Авторизация → Просмотр списка курсов → Просмотр деталей курса → Просмотр проектов → Формирование команды → Отправка заявки → Получение уведомления → Просмотр распределения → Инициация обмена (при необходимости)
- Авторизация → вход в систему.
- Просмотр списка курсов → отображение актуальных курсов.
- Просмотр деталей курса → описание и дедлайны.
- Просмотр списка проектов → список доступных проектов.
- Формирование команды:
- отправка запроса;
- получение запроса;
- подтверждение или отказ.
- Отправка заявки.
- Уведомление о распределении.
- Просмотр дашборда.
- Обмен проектами:
- инициация;
- подтверждение или отказ.
Основной сценарий:
Авторизация
→ Настройка параметров
→ Просмотр курсов
→ Настройка курса
→ Запуск распределения
→ Анализ результатов
→ Корректировка
→ Публикация
→ Просмотр распределения
→ Подтверждение обмена
- Авторизация.
- Просмотр курсов.
- Просмотр деталей курса.
- Настройка курса:
- редактирование описания;
- изменение дедлайнов, размера команд, отображения курса;
- редактирование списка проектов.
- Настройка параметров распределения.
- Запуск алгоритма.
- Визуализация результатов.
- Корректировка.
- Публикация итогов.
- Просмотр дашборда.
- Подтверждение или запрет обмена.
ER-модель описывает структуру базы данных и связи между сущностями (курсы, пользователи, команды, проекты, заявки и т.д.).

