Перейти к содержанию

Утилита редактирования полилиний железнодорожного графа — демо-сборка

Эта страница собирает разделы для демо и презентаций стейкхолдерам: обзор, роль, архитектура, решения, дорожная карта и демонстрация.

Содержание

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

Статус

historical internal project / развитие идеи продолжилось в GraphMechanic

Роль

инициатор, автор концепции, разработчик

Стек

Тип: Internal tooling / подготовка GIS-данных / редактирование железнодорожного графа

Ценность проекта

Локальная веб-утилита для создания, редактирования и восстановления полилиний железнодорожных путей, использовавшихся при подготовке данных железнодорожного графа.

Обзор

Локальная веб-утилита для создания, редактирования и восстановления полилиний железнодорожных путей, использовавшихся при подготовке данных железнодорожного графа.

Проект возник из практической проблемы качества данных: объекты железнодорожной инфраструктуры нужно было связать с корректной геометрией, но ручная подготовка полилиний была медленной, подверженной ошибкам и плохо проверяемой без визуального инструмента.

Утилита давала лёгкий внутренний интерфейс для работы с геометрией железнодорожного графа: редактирование узлов, создание полилиний, генерация геометрии через routing service и восстановление некорректных или неполных участков пути.

Технологический стек

  • Java / Spring Boot
  • Server-side rendering
  • MVC architecture
  • Repository layer
  • JavaScript / jQuery
  • Map-based UI
  • Routing service integration
  • Polyline caching
  • Asynchronous data loading

Роль и обязанности

Я выступал как инициатор, автор концепции и разработчик.

Мой вклад включал:

  • выявление потребности в отдельном визуальном инструменте редактирования;
  • определение основных пользовательских сценариев очистки железнодорожного графа;
  • проектирование структуры приложения;
  • реализацию backend-части и серверной генерации страниц;
  • реализацию интерактивного поведения интерфейса на JavaScript и jQuery;
  • поддержку практической подготовки данных по объектам железнодорожной инфраструктуры.

Архитектура и интеграции

Архитектура

Архитектурный подход

Утилита была реализована как многослойное монолитное веб-приложение.

Архитектура включала:

  • серверную генерацию страниц;
  • MVC-структуру;
  • слой бизнес-логики;
  • слой репозиториев;
  • jQuery-взаимодействия для частичных обновлений без полной перезагрузки страницы.

Потоки интеграции

Генерация полилинии через routing service

Инструмент генерирует полилинии через routing service, формируя геометрию маршрута для участков железнодорожного графа.

Восстановление полилинии через пересчёт маршрута

Существующие полилинии можно восстанавливать через пересчёт маршрута, когда геометрия некорректна или неполна.

Асинхронная загрузка и обновление полилиний

Приложение поддерживает асинхронную выдачу и обновление полилиний, включая кеширование полилиний, что позволяет выполнять частичные обновления интерфейса без полной перезагрузки страницы.

Решения, компромиссы и риски

Ключевые решения

Компромиссы

Прагматичный локальный дизайн

Такой подход был осознанно прагматичным: инструмент создавался для локального / внутреннего использования, быстрой итерации и практической подготовки данных, а не для долгосрочной продуктовой эксплуатации.

См. также Architecture Decision Records.

Дорожная карта и демонстрация

Дорожная карта

  • Документация в процессе заполнения.
  • Направление проекта продолжается в GraphMechanic: GraphMechanic

Скриншоты и демо

Скриншоты интерфейса

GraphMechanic: интерфейс

Пользовательский интерфейс

GraphMechanic: редактирование узла

Редактирование узла

GraphMechanic: создание полилинии

Создание полилинии

GraphMechanic: генерация полилинии через routing service

Генерация полилинии через routing service

GraphMechanic: восстановление полилинии через routing service

Восстановление полилинии через routing service

Что демонстрирует проект

Проект показывает мой ранний переход от работы с требованиями и подготовкой данных к hands-on разработке внутренних инструментов.

Он демонстрирует способность:

  • выявлять повторяющееся узкое место в подготовке данных;
  • превращать ручную GIS/data-cleanup задачу в визуальный инструмент;
  • проектировать прагматичное внутреннее приложение под узкую операционную проблему;
  • совмещать backend-логику, картографический UI, маршрутизацию, кеширование и асинхронные взаимодействия;
  • создавать инструменты, которые сокращают ручной труд и повышают качество данных.

Позднее проект концептуально развился в GraphMechanic - более широкую идею визуального редактирования графов и GIS-данных.