Skip to content

Arsenoid/RouteTracer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RouteTracer — информационная система транспортной компании

Java Spring Boot PostgreSQL Spring Security

Описание проекта

Дипломная работа студента группы ПИ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)

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 с указанной БД (иначе тесты контекста могут падать). Юнит-тесты сервисов с моками выполняются без БД.


Лицензия и авторство

Учебный проект; использование и распространение — по согласованию с автором.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors