Техническая документация

Settlements UI

Архитектура, сценарии, code-map и эксплуатация.
Версия 74ff9dfa0244 · подготовлено 7 сентября 2026

Назначение и границы

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

GIS-интерфейс для выбора объектов, редактирования полигонов, проверки геометрии и экспорта. Публичное демо работает на полностью синтетической карте.

  • Четыре объекта и географическая подложка вымышлены; это не кадастровая или административная карта.
  • Исходный репозиторий остаётся приватным. Серверный OData и исходный массовый импорт не развёрнуты.
  • Production Vite-сборка и браузерные сценарии проверены; полный legacy TypeScript/lint набор не заявляется пройденным.

Архитектура и схемы

  • Сохранены исходные application store, модели, контроллеры карты и проверки геометрии.
  • Транспорт OData заменён локальным адаптером; карта не запрашивает внешние тайлы.
  • Импорт разрешён только для встроенного GeoJSON-примера, повтор не создаёт дубликат.
Компоненты опубликованного демо
Компоненты опубликованного демо · Mermaid ↓
Основной сценарий
Основной сценарий · Mermaid ↓
Размещение опубликованной версии
Размещение опубликованной версии · Mermaid ↓
Состав данных и границы хранения
Состав данных и границы хранения · Mermaid ↓
Исходный интеграционный контур — не развёрнут в демо
Исходный интеграционный контур — не развёрнут в демо · Mermaid ↓

Code-map: от функции к коду

Карта привязана к версии 74ff9dfa0244. Она помогает проследить изменение через интерфейс, API, модуль, данные и проверку.

ФункцияЭкран / APIМодульДанные / проверка
Поиск и карточкаSidebar / Settlementapplication.store, settlements-code.repositorymunicipals
РедактированиеMapEditor / SettlementPolygonPageController, MapEditorController, Mapbox Drawsettlements_geometry
ВалидацияСохранение / кнопка проверкиvalidation.util, wkb.utilGeoJSON / EWKB
Импорт и экспортDemoControlsdemo/data, demo/apiвстроенный GeoJSON, память вкладки
СлоиMapEditorLayersSwitcherLayerManager, demo/configGeoJSON sources

Как работать с картой

  1. Перед изменением найти функцию и пройти связи до API, состояния и хранилища.
  2. Проверить входы, ошибки, повторные события и зависимые сценарии.
  3. После изменения обновить карту и затронутые схемы вместе с кодом.
  4. Выполнить связанные проверки и привязать новые материалы к версии исходников.

Сценарии и API

  1. Найдите объект, откройте карточку и включите режим редактирования.
  2. Переместите вершину полигона, проверьте геометрию и сохраните.
  3. Импортируйте встроенный пример, затем повторите импорт: останется пять объектов.
  4. Экспортируйте GeoJSON, сравните изменённую вершину и сбросьте карту.

Проверка опубликованной версии

  • Polygon vertex moved, saved and verified through exported GeoJSON
  • Import, export and duplicate prevention
  • Independent browser session retains seed
  • Reset restores exact seed
  • Подтверждённого GitHub CI для этого SHA нет; перечислены выполненные локальные проверки и сценарии опубликованной версии. Исторические CI-ссылки, если есть, отмечены отдельно.

Результаты описывают проверенные сценарии и конкретную версию. Они не являются оценкой коммерческого успеха или качества моделей на независимой выборке.

Измерения

Общий ресурсный контекст VPS для статического демо · 2026-09-07T01:08:27 — 01:11:22 UTC
Общий ресурсный контекст VPS для статического демо · 2026-09-07T01:08:27 — 01:11:22 UTC · Исходные данные ↓
Измеренные повторения сценария через HTTPS · 2026-09-07T01:08:36 UTC; ограничения методики в JSON
Измеренные повторения сценария через HTTPS · 2026-09-07T01:08:36 UTC; ограничения методики в JSON · Исходные данные ↓
  • Сохранено 12 содержательных кадров фактического интерфейса.
  • Дата, сценарий и версия указаны у каждого кадра.
  • Отдельного backend-процесса на VPS нет: Nginx раздаёт статику. Ресурсы общего Nginx нельзя честно приписать одному сайту.
  • Измерено 6 повторений сценария; медиана 71.5 мс, максимум 819 мс. Время включает браузер и HTTPS; методика и ограничения приложены.

Запуск и эксплуатация

Исходная архитектура связывала интерфейс с OData и корпоративными службами. Демонстрационная архитектура отдельно заменяет этот транспорт локальным adapter; рабочие заголовки и endpoints не включены в сборку.

Сборка выполняется из src_front: docker build -f Dockerfile.portfolio --output type=local,dest=dist-demo . Готовые файлы передаются Nginx; Node.js на VPS не запускается.

Проверять выбор объекта, движение вершины, сохранение/отмену, экспорт и повтор импорта. Изменение формы полигона подтверждено сравнением GeoJSON до и после настоящего drag в опубликованной версии.

Общие правила эксплуатации: готовые файлы и закреплённые образы собираются вне VPS; секреты не входят в артефакты. Общесерверный docker prune не применяется. Логи backend ограничены ротацией, изменения log options требуют пересоздания контейнера.

Перед изменением пройти code-map от функции к экрану/API, модулю и данным. После изменения обновить карту и схемы, выполнить связанные сценарии, включая ошибку, повтор и сброс. Источник истины — конкретная версия кода, а не старая диаграмма.

Откат проверен 2026-09-07T00:59:40.214472+00:00: 20260907-verified → 20260907c → 20260907-verified. После каждого переключения подтверждены HTTPS, readiness и SHA. Это проверка конфигурации и артефактов на одном проверенном SHA; обратная миграция БД не выполнялась.

Стек

React / MobXКарточки, application store и согласованное состояние выбора.
MapLibre / Mapbox DrawРендер карты, слои и интерактивное изменение вершин.
GeoJSON / EWKBОбмен геометрией, преобразования и валидация.
ViteИзолированная production-сборка без корпоративного registry.

Материалы и исходники

История репозитория: с февраля 2025. Публичная синтетическая версия: 7 сентября 2026.