Назначение и границы
Изменение границ должно оставаться связано с карточкой объекта, проходить проверку и давать воспроизводимый результат экспорта.
GIS-интерфейс для выбора объектов, редактирования полигонов, проверки геометрии и экспорта. Публичное демо работает на полностью синтетической карте.
- Четыре объекта и географическая подложка вымышлены; это не кадастровая или административная карта.
- Исходный репозиторий остаётся приватным. Серверный OData и исходный массовый импорт не развёрнуты.
- Production Vite-сборка и браузерные сценарии проверены; полный legacy TypeScript/lint набор не заявляется пройденным.
Архитектура и схемы
- Сохранены исходные application store, модели, контроллеры карты и проверки геометрии.
- Транспорт OData заменён локальным адаптером; карта не запрашивает внешние тайлы.
- Импорт разрешён только для встроенного GeoJSON-примера, повтор не создаёт дубликат.
Code-map: от функции к коду
Карта привязана к версии 74ff9dfa0244. Она помогает проследить изменение через интерфейс, API, модуль, данные и проверку.
| Функция | Экран / API | Модуль | Данные / проверка |
|---|---|---|---|
| Поиск и карточка | Sidebar / Settlement | application.store, settlements-code.repository | municipals |
| Редактирование | MapEditor / SettlementPolygon | PageController, MapEditorController, Mapbox Draw | settlements_geometry |
| Валидация | Сохранение / кнопка проверки | validation.util, wkb.util | GeoJSON / EWKB |
| Импорт и экспорт | DemoControls | demo/data, demo/api | встроенный GeoJSON, память вкладки |
| Слои | MapEditorLayersSwitcher | LayerManager, demo/config | GeoJSON sources |
Как работать с картой
- Перед изменением найти функцию и пройти связи до API, состояния и хранилища.
- Проверить входы, ошибки, повторные события и зависимые сценарии.
- После изменения обновить карту и затронутые схемы вместе с кодом.
- Выполнить связанные проверки и привязать новые материалы к версии исходников.
Сценарии и API
- Найдите объект, откройте карточку и включите режим редактирования.
- Переместите вершину полигона, проверьте геометрию и сохраните.
- Импортируйте встроенный пример, затем повторите импорт: останется пять объектов.
- Экспортируйте 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-ссылки, если есть, отмечены отдельно.
Результаты описывают проверенные сценарии и конкретную версию. Они не являются оценкой коммерческого успеха или качества моделей на независимой выборке.
Измерения
- Сохранено 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.