Дипломная работа студента группы ПИ22-2 Финансового университета при Правительстве РФ
Веб-приложение на Java и Spring для автоматизации работы транспортной компании: маршруты, заказы, транспорт и GPS-трекинг выполнения доставки. Доступ разграничен по ролям: заказчик, перевозчик, администратор.
Цель — упростить планирование маршрутов, назначение транспорта, контроль статусов заказов и наблюдение за фактическим перемещением по телеметрии.
- Создание и управление маршрутами / заказами в рамках приложения
- Просмотр статусов своих перевозок
- Управление своим автопарком (транспорт, документы и изображения)
- Просмотр доступных маршрутов, принятие заказа в работу
- Страница карты
/map— запись координат с браузера (геолокация) или симулятор; сессии трекинга привязаны к маршруту (routeId) - Продолжить запись — возобновление отправки точек в уже активную сессию после закрытия страницы (без создания новой сессии)
- Полномочия по данным и пользователям в соответствии с реализованной логикой приложения
- Регистрация, вход, Spring Security (BCrypt, CSRF для форм; REST
/api/**с отключённым CSRF по конфигурации) - REST телеметрии и сессий трекинга
- Прогресс по маршруту: API
GET /api/routes/{routeId}/progressи отображение на странице деталей маршрута (план vs факт по точкам сессии) - Freemarker-шаблоны, Flyway-миграции схемы БД
| Компонент | Технология |
|---|---|
| Язык | Java 21 |
| Фреймворк | Spring Boot 3.4.x |
| Веб | Spring MVC |
| Данные | Spring Data JPA, Hibernate |
| Безопасность | Spring Security |
| БД | PostgreSQL 14+ |
| Миграции | Flyway |
| Шаблоны | FreeMarker |
| Сборка | Maven |
| Клиент карты (трекер) | Яндекс.Карты API 2.1 (страница /map) |
RouteTracer/
├── src/
│ ├── main/
│ │ ├── java/com/example/coursework_tc/
│ │ │ ├── config/ # Security и прочая конфигурация
│ │ │ ├── controller/ # MVC-страницы и REST (телеметрия, сессии, прогресс маршрута)
│ │ │ ├── dto/
│ │ │ │ ├── api/ # Ответы об ошибках API
│ │ │ │ ├── session/ # DTO сессий трекинга
│ │ │ │ ├── route/ # DTO прогресса маршрута
│ │ │ │ └── telemetry/ # DTO точек телеметрии
│ │ │ ├── exception/
│ │ │ ├── model/ # JPA-сущности и enums (роли, статусы маршрута и т.д.)
│ │ │ ├── repository/
│ │ │ ├── service/ и service/impl/
│ │ │ └── RouteTracerApplication.java
│ │ └── resources/
│ │ ├── application.yaml
│ │ ├── css/
│ │ ├── db/migration/ # Flyway (версии схемы БД)
│ │ ├── static/
│ │ └── templates/ # Freemarker (.ftlh)
│ └── test/
├── .mvn/
├── pom.xml # artifactId: RouteTracer
├── mvnw, mvnw.cmd
└── README.md
- JDK 21+
- Maven 3.8+ (или только
./mvnw) - PostgreSQL 14+
- Git
Создай БД (имя по умолчанию совпадает с дефолтом в application.yaml):
CREATE DATABASE transport_company_db;Подключение задаётся в src/main/resources/application.yaml. Для локального запуска можно экспортировать:
export SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/transport_company_db"
export SPRING_DATASOURCE_USERNAME="postgres"
export SPRING_DATASOURCE_PASSWORD="your_password"Если SPRING_DATASOURCE_USERNAME не задан, по умолчанию используется системное имя пользователя ОС (${USER}).
./mvnw clean package
java -jar target/RouteTracer-0.0.1-SNAPSHOT.jarИли без сборки JAR:
./mvnw spring-boot:runПриложение: http://localhost:8080 (порт задан в application.yaml).
- Стартуют миграции Flyway (
spring.flyway.baseline-on-migrate: true). - Дополнительно включён
spring.jpa.hibernate.ddl-auto: update(по умолчанию), поэтому Hibernate может подстраивать схему под модели. Для продакшена обычно используют только миграции и отключают авто-обновление схемы.
- Открытие с привязкой к маршруту:
/map?vehicleId=<id>&routeId=<id>(например, с кнопки «Открыть трекинг» на странице маршрута). - Новая сессия создаётся только с
routeIdв запросе старта (как в UI при наличии маршрута в URL). - Если сессия уже активна, повторный старт того же транспорта вернёт ошибку; используй «Продолжить запись» или завершение сессии через
POST /api/sessions/{id}/stop.
Интеграционный тест контекста Spring поднимает приложение с Flyway и реальной конфигурацией БД — нужна доступная PostgreSQL с указанной БД (иначе тесты контекста могут падать). Юнит-тесты сервисов с моками выполняются без БД.
Учебный проект; использование и распространение — по согласованию с автором.