Информационная система планирования и генерации учебного расписания для учебного заведения
Schedule — это полнофункциональная клиент-серверная система для автоматизации управления учебным расписанием. Проект разработан в рамках предмета «Администрирование информационных систем» и охватывает полный цикл разработки: от проектирования БД до развёртывания и нагрузочного тестирования.
| Компонент | Технологии |
|---|---|
| Backend | Python 3.12, FastAPI, SQLAlchemy (ORM), Pydantic |
| Frontend | React 19, React Router, Axios, TailwindCSS, Vite |
| База данных | SQLite |
| Аутентификация | JWT (PyJWT), bcrypt |
| Тестирование | pytest, JMeter |
| Развёртывание | Nginx, VirtualBox, Debian |
Schedule/
├── backend/ # Серверная часть (FastAPI)
│ ├── main.py # Точка входа, 78 REST API эндпоинтов
│ ├── repository/ # Слой доступа к данным
│ │ ├── models.py # 15 ORM-моделей SQLAlchemy
│ │ ├── schemas.py # Pydantic-схемы валидации
│ │ ├── crud.py # CRUD-операции
│ │ ├── auth.py # Аутентификация и JWT
│ │ ├── schedule_generator.py # Генерация расписания
│ │ └── initializer.py # Инициализация БД
│ └── tests/ # Автоматизированные тесты
├── frontend/ # Клиентская часть (React)
│ ├── src/
│ │ ├── api/ # API-слой (78 методов)
│ │ ├── components/ # UI-компоненты
│ │ ├── pages/ # Страницы приложения
│ │ ├── context/ # Управление состоянием
│ │ └── utils/ # Утилиты
│ └── package.json
├── config.env # Конфигурация окружения
├── requirements.txt # Python-зависимости
└── start.bat # Скрипт запуска проекта
Для студентов:
- Просмотр расписания по взводам и дням недели
- Фильтрация по предметам и преподавателям
- Экспорт расписания
Для преподавателей:
- Полное управление расписанием (CRUD)
- Редактирование ячеек расписания (предмет, аудитория, тема)
- Массовые операции: копирование/вставка между ячейками
- Генерация расписания на основе учебного плана
- Управление взводами, дисциплинами, нагрузками
- Управление преподавательским составом и аудиториями
Системные функции:
- Ролевая модель доступа (студент / преподаватель)
- JWT-аутентификация
- Автоматическая генерация документации API (Swagger/ReDoc)
- Валидация данных и обработка ошибок
- Интеграционное и нагрузочное тестирование
Система построена по клиент-серверной архитектуре с чётким разделением ответственности:
- Backend: RESTful API на FastAPI (78 эндпоинтов)
- Frontend: SPA на React с централизованным управлением состоянием
- Бизнес-логика: Генерация расписания, каскадное удаление, оптимистичные обновления
# Запуск всего проекта
./start.batДля Windows:
# Создание виртуального окружения
python -m venv backend/venv
# Активация виртуального окружения
backend\venv\Scripts\activate
# Накат необходимых зависимостей
pip install -r requirements.txt
# Запуск главного файла
python backend/main.pyДля Linux:
# Создание виртуального окружения
# python -m venv backend/venv
# Активация виртуального окружения
source venv/bin/activate
# Накат необходимых зависимостей
pip install -r requirements.txt
# Запуск главного файла
cd ./backend
uvicorn main:app --reloadДля этого необходимо скачать node.js https://nodejs.org/en/download Версия 22.21.1 (LTS) После установки в директории проекта
cd .\frontend\
# Установка зависимостей
npm install
# Запуск проекта
npm run devВ случае необходимости слития наработок из своей ветки:
- Создать Pull-requests
- Описать ревьюеров, получить их Accept
- Слить в новую ветку, удалив исходную
- Удалить смерженную ветку локально
- Переключиться на main-ветку локально и создать новую ветку для будущих задач
git checkout main- убедиться что локальная main ветка актуальна.git pull origin main- актуализировать main, чтобы избежать конфликтов.git checkout <ветка>- переключиться на свою ветку.git merge main- слияние с main. Если возникнут конфликты - разрешить вручную.git push origin <ветка>- отправить в github.- Создать Pull-request
git checkout main- переключиться на ветку main если еще не здесь.git branch -d <ветка>- удалить ветку локально.