Система составления расписаний ВУЗа — это комплексное desktop-приложение, разработанное для автоматизации и оптимизации процесса создания учебных расписаний в высших учебных заведениях. Оно предоставляет мощные инструменты для администраторов, методистов, преподавателей и студентов, объединяя управление данными, ручное и автоматическое планирование, а также удобные средства визуализации.
Приложение построено на современных веб-технологиях (React, TypeScript) и упаковано в Electron, что обеспечивает кроссплатформенную работу и безопасное управление API-ключами для интеграции с ИИ-сервисами.
- Централизованное управление данными: Единая точка для администрирования всей информации: от структуры ВУЗа до учебных планов.
- Ролевая модель доступа: Четыре предопределенные роли (Администратор, Методист, Преподаватель, Студент) с разграничением прав и интерфейсов.
- Гибкий планировщик:
- Ручное планирование: Интуитивный drag-and-drop интерфейс для размещения занятий.
- Эвристический алгоритм: Быстрая автоматическая генерация расписания на основе заданных правил.
- ИИ-ассистент (Google Gemini): Продвинутое составление расписания с учетом сложных ограничений и предпочтений.
- Продвинутые учебные сущности:
- Подгруппы: Деление групп для лабораторных и практических занятий с возможностью назначения отдельных преподавателей.
- Факультативы: Управление необязательными занятиями с гибкими настройками.
- Потоки: Объединение нескольких групп для проведения общих лекций.
- Детальная настройка ограничений:
- Сетки доступности: Визуальная настройка "окон" и предпочтительного времени для преподавателей, групп и аудиторий.
- Производственный календарь: Учет праздников и переносов рабочих дней.
- Визуализация и экспорт:
- Интерактивная сетка расписания с фильтрацией по группе или преподавателю.
- Академический календарь для обзора семестра.
- Экспорт данных в форматах JSON (резервное копирование), PDF и TXT (печать и отчетность).
- Мастер создания проекта: Пошаговый инструмент для быстрой начальной настройки системы.
Модуль администрирования позволяет управлять всеми основными справочниками системы:
- Структура ВУЗа: Факультеты, кафедры.
- Учебный процесс: УГСН, специальности, дисциплины, учебные планы.
- Контингент: Преподаватели (с указанием регалий, стажа), учебные группы, потоки.
- Ресурсы: Аудитории (с указанием вместимости и типа), типы аудиторий, расписание звонков.
- Связи и правила: Привязка преподавателей к дисциплинам, правила планирования.
- Факультативы и подгруппы: Создание и настройка внеклассных занятий и деления групп.
Система предлагает три способа составления расписания:
- Ручное размещение: Нераспределенные занятия из учебного плана отображаются в специальной панели. Методист может перетащить любое занятие в свободную ячейку сетки. Система автоматически проверит доступность аудитории и базовые конфликты.
- Эвристический планировщик: Быстрый алгоритм, который проходит по списку занятий и размещает их в наилучшие (с наименьшей "стоимостью") слоты, исходя из заданных правил (закрепленные аудитории, окна, сетки доступности). Идеально подходит для быстрой генерации чернового варианта расписания.
- Планировщик на базе ИИ (Gemini): Самый мощный инструмент. В Gemini API отправляется полный контекст: все данные о ВУЗе, учебные планы, ограничения и правила. Модель
gemini-2.5-flashанализирует всю совокупность данных и возвращает готовое, оптимизированное расписание в формате JSON. Этот метод позволяет учесть множество неявных предпочтений и найти оптимальный баланс между всеми ограничениями.
- Просмотр расписания: Основной экран, представляющий собой недельную сетку. Позволяет:
- Фильтровать расписание по группе или преподавателю.
- Переключаться между неделями с помощью удобного календаря.
- Видеть различие между чётными и нечётными неделями.
- Редактировать и удалять занятия прямо из сетки.
- Академический календарь: Наглядное представление всего семестра с цветовой индикацией учебных периодов, сессий, практик, каникул и праздников.
- Менеджер учебных планов: Удобный интерфейс для создания и редактирования учебных планов по специальностям. Позволяет указать количество часов на лекции, практики и лабораторные, а также отметить дисциплины, требующие деления на подгруппы.
- Деление на подгруппы: Для любой дисциплины в учебном плане можно активировать флаг "Разделить по подгруппам". Система автоматически создаст отдельные занятия для каждой подгруппы, используя их численность для подбора аудиторий. Также можно назначить разных преподавателей для разных подгрупп, что обеспечивает максимальную гибкость.
- Управление факультативами: Факультативы вынесены в отдельный справочник. Они не зависят от учебного плана и могут быть созданы для любой группы. В расписании они выделяются отдельным цветом для легкой идентификации.
- JSON: Позволяет сохранить и загрузить полное состояние приложения, включая все справочники и само расписание. Это основной механизм для резервного копирования и миграции.
- PDF и TXT: Генерация отчетов для печати — расписание для конкретной группы или преподавателя, а также полный отчет по всем данным в системе.
- CSV: Импорт данных для производственного календаря, что позволяет быстро загружать списки праздничных и рабочих дней.
- Основной фреймворк: React 19, TypeScript
- Стилизация: Tailwind CSS (с процессом сборки)
- Drag & Drop: React DnD
- Искусственный интеллект: Google Gemini API (
@google/genai) - Генерация PDF: jsPDF с плагином jspdf-autotable
- Desktop-обертка: Electron
Для запуска приложения в режиме разработки, который включает автоматическое открытие инструментов разработчика (DevTools) и подробное логирование, выполните следующие шаги:
- Убедитесь, что все зависимости установлены (
npm install). - Настройте переменную окружения
API_KEY(см. инструкцию по сборке). - Запустите команду в терминале для отслеживания изменений CSS (необязательно, но удобно):
npm run watch:css
- В другом терминале запустите само приложение:
(Примечание:
npm start
npm startавтоматически выполнит сборку CSS, поэтому шаг 3 является опциональным, если вы не планируете активно редактировать стили).
- Логи процесса рендеринга (React-компоненты) будут отображаться во вкладке "Console" в открывшихся инструментах разработчика.
- Логи основного процесса (main.js) будут выводиться в терминал, из которого вы запустили команду
npm start.
Подробная инструкция по настройке окружения, установке зависимостей и сборке установочных файлов находится в файле build_instructions.txt.
- Установите Node.js.
- Установите зависимости проекта командой
npm install. - Настройте переменную окружения
API_KEYс вашим ключом от Google Gemini. - Для сборки дистрибутива запустите
npm run dist. - Готовый установщик появится в папке
dist.