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

Утилита редактирования полилиний железнодорожного графа — архитектурное ревью

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

Содержание

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

Статус

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

Роль

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

Стек

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

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

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

Цели, требования и ограничения

Цели и нецели

Требования

Я спроектировал и реализовал локальную веб-утилиту для редактирования полилиний железнодорожного графа.

Инструмент поддерживал:

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

Ограничения

Модель системы

Доменная модель

Модель данных

API-контракты

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

Архитектура

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

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

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

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

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

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

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

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

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

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

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

Безопасность, качество и эксплуатация

Модель безопасности и доступа

Нефункциональные требования

Режимы отказа

Оценка масштаба и стоимости

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

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

Компромиссы

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

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

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