Дата: 2026-09-15. Статус: базовая продуктовая архитектура; технические решения и план выполнения описаны в связанных документах.
Техническое предложение по подпроектам, SVG-редактору, Windows, хранилищам и схемам БД: OK24 Atlas — техническая архитектура. Документ учитывает последующие уточнения пользователя: Python, готовые веб-компоненты, PostgreSQL, вход по логину и паролю без регистрации, приоритет Windows 10 LTSC и отсутствие бизнес-автоматизации. Предложенный стек ещё не реализован и не означает утверждения всех технических решений.
Утверждённое название сервиса: OK24 Atlas. Название выбрано пользователем. Отдельные названия редактора и приложения стенда пока не утверждены.
OK24 Atlas — веб-сервис управления интерактивными картами торговых центров. Команда OK24 полностью создаёт исходные карты, геометрию и маршруты. Клиент получает веб-кабинет и редактируемые помещения: может менять сведения, расширять и объединять помещения. Посетители используют карту только на установленных стендах под Windows.
В первом выпуске подключается только существующая карта текущего клиента, со всеми её этажами и возможностями. Допустима ограниченная адаптация к серверу и редактору; существенная переработка интерфейса карты не является целью. Новые карты сейчас не создаются.
Платформа хранит клиентов и принадлежащие им карты и допускает появление других реализаций карт в будущем, включая серверный расчёт навигации и другие серверные функции. HTML/CSS/JS текущей карты — реализация для существующего клиента, а не обязательный формат поведения всех будущих карт.
Админки работают через браузер. Версия для стенда обязательно поставляется как устанавливаемое приложение OK24 Atlas. В состав приложения входят скрипты настройки ОС, на которую устанавливается ПО. Целевая ОС стендов — Windows 10 LTSC x64. Приложение — Electron с Windows-агентом; установка и системные настройки описаны в технической архитектуре. Необходимость автономной работы также определяется отдельно. Мобильная карта, QR-сценарии и публикация на сайтах ТЦ сейчас вне объёма.
Выводы основаны на статическом изучении корневого приложения: index.html, server.js, js/swiper.js, js/modals.js, js/keyboard.js, js/ads.js и SVG, подключённых в index.html. Работоспособность интерфейса в браузере в рамках этого исследования не проверялась.
name, full_name, floor, cathegory, description, type.route_<объект>_<стол>. Это не расчёт пути между произвольными точками.js/ads.js закомментирована.zil_a. Перед переносом нужно определить нужную исходную версию; нельзя автоматически считать все копии самостоятельными картами.Главное следствие: текущая карта сохраняется как первая поддерживаемая реализация. Общие функции управления клиентами, доступами, редактированием и публикацией выносятся на уровень платформы. Существующее поведение карты и серверные функции учитываются при переносе, а не удаляются ради унификации.
Это логические части продукта. Они не требуют отдельных серверов или отдельных сервисов на старте. Один сервер может отдавать обе админки, предоставлять установочные пакеты и обновления приложения для стендов и обслуживать данные карт.
У карты фиксируются поддерживаемые возможности и совместимая версия её приложения. Кабинет показывает соответствующие инструменты. Платформа не должна предполагать, что всякая карта всегда является только набором SVG с готовыми маршрутами.
Общие функции не дублируются для каждой новой карты. Различия в пользовательском интерфейсе и навигации допустимы: не требуется один универсальный просмотрщик для всех будущих клиентов. В первом выпуске не создаём каталог расширений и другие реализации, а определяем границы подключения к платформе.
Для будущего серверного расчёта запрос должен относиться к конкретной карте и версии её навигационных данных. Серверный маршрут должен соответствовать плану, открытому на стенде. Первой карте сохраняем текущий способ показа заранее подготовленных путей.
| Сущность | Значение и связи |
|---|---|
| Клиент | Организация, приобретающая сервис. Может владеть несколькими картами. |
| Пользователь | Конкретный сотрудник со своим входом. Получает членство в организации и права на нужные карты. |
| Карта | Один ТЦ или другой навигационный объект целиком, со всеми этажами. Принадлежит одному клиенту. |
| Этаж | План и объекты отдельного уровня, включая паркинг. Принадлежит карте. |
| Помещение или зона | Область на плане со своим идентификатором и редактируемой геометрией. Может быть свободной или занятой магазином. |
| Объект каталога | Магазин, кафе или сервис: название, категория, описание, логотип, контакты и другие сведения. |
| Размещение объекта | Связь объекта с зоной или точкой на плане. Один магазин может занимать несколько помещений. |
| Точка старта | Вход, информационная стойка или положение терминала, откуда можно показать маршрут. |
| Маршрут | В первой версии — подготовленный путь от определённой точки старта к назначению, с возможными фрагментами на нескольких этажах. |
| Материал | SVG, логотип, изображение, рекламный баннер или видео, принадлежащее клиенту и используемое картами. |
| Версия карты | Согласованный набор планов, данных, маршрутов, материалов и настроек на момент публикации. |
| Реализация карты | Подготовленное OK24 приложение карты с определёнными возможностями редактора и серверными функциями. |
| Версия приложения стенда | Выпуск устанавливаемого ПО и входящих в него скриптов настройки ОС. Имеет собственную версию и требования к совместимости с картой. |
| Точка показа | Зарегистрированный у клиента стенд Windows со своей картой, централизованными настройками, состоянием подключения и историей команд управления. |
Клиент не равен пользователю, этаж не равен карте, терминал не равен отдельной копии карты.
Для первой версии не нужен дополнительный уровень «объект недвижимости» между клиентом и картой: карта уже представляет один ТЦ. Такой уровень понадобится, только если одному ТЦ потребуются несколько независимых карт.
Если магазин выехал, его помещение осталось. Если изменилось название магазина, его размещение и путь к нему остались. Стабильные идентификаторы зон и точек назначения позволяют менять бизнес-данные без переименования SVG-маршрутов и файлов вручную.
Если изменился вход или планировка, маршрут требует повторной проверки. Простая смена арендатора не должна молча менять геометрию пути.
Основные разделы: клиенты, карты, доступы, состояние обслуживания, история действий.
Возможности:
Приостановка редактирования и отключение показа на стендах — разные действия. Они должны иметь явные правила. Задолженность или истечение пробного периода не должны приводить к случайному удалению материалов клиента.
После входа пользователь видит доступные ему карты. Внутри карты предлагаются разделы:
Обычный рабочий сценарий: выбрать помещение на плане → открыть карточку → заменить арендатора или исправить сведения → сохранить черновик → проверить → опубликовать.
Сценарий изменения геометрии: выбрать одно или несколько помещений → изменить границы или объединить → настроить сведения и вход результирующего помещения → проверить влияние на маршруты → предпросмотр → публикация.
Клиент управляет только своими данными. Проверка принадлежности карты, материалов и прав выполняется сервером при каждой операции, а не только скрытием разделов интерфейса.
| Роль | Полномочия |
|---|---|
| Администратор OK24 | Управление сервисом и клиентами; доступ поддержки с журналированием. |
| Администратор клиента | Управление доступными картами, сотрудниками организации и публикацией. |
| Редактор | Изменение содержания назначенных карт и предпросмотр. Права на геометрию и публикацию выдаются отдельно. |
| Наблюдатель, позднее | Просмотр материалов и отчётов без изменения. |
| Посетитель | Работа с опубликованной картой на стенде без входа в кабинет. |
В первой версии достаточно администратора сервиса, администратора клиента и редактора. Для небольшой команды клиента один человек может совмещать редактирование и публикацию.
Создание исходной карты выполняет OK24. Клиенту передаются подготовленные редактируемые помещения. Редактирование включает как сведения, так и реальное изменение геометрии SVG. Обязательная основа редактора — сторонние браузерные библиотеки SVG.js и Paper.js; собственный универсальный SVG-движок с нуля не разрабатывается. Atlas реализует поверх библиотек операции с помещениями, права и проверки маршрутов.
Текущие SVG уже существуют и являются исходным материалом первой версии. Дополнительный импорт остаётся функцией подготовки и обновления карты; это не обязательный первый шаг клиента после каждого входа. Подготовку импортированных материалов и связей выполняет OK24.
Предлагаемая граница редактора: OK24 задаёт редактируемые помещения и защищённые элементы плана — например, лестницы, опорные элементы и общие проходы. Клиент изменяет разрешённую геометрию визуально, без ручной правки XML. Точный набор ограничений и операций, кроме уже необходимых расширения и объединения, предстоит описать отдельно.
Объединение требует решить, какой объект каталога занимает новое помещение, что происходит с прежними карточками, логотипами и точками назначения. Старые помещения сохраняются в истории, но в новой версии не остаются активными дубликатами. Редактор должен явно обновлять связанные данные, а не только скрывать линию между фигурами.
В первой карте сохраняются готовые пути из SVG. Изменение контура помещения само по себе не рассчитывает новый путь.
Предлагаемый порядок: редактор выявляет затронутые помещения, входы и маршруты и отмечает их для проверки. Проверяется также изменение проходов, через которые идут пути к другим объектам. Если требуется коррекция маршрутов, её выполняет OK24; до этого затронутые изменения остаются в черновике. Стенды продолжают показывать предыдущую согласованную версию. Изменения сведений без влияния на навигацию не требуют участия OK24.
Автоматическая проверка связей не гарантирует физическую проходимость пути. Порядок подтверждения изменений геометрии и ответственного за проверку необходимо определить при детализации редактора.
Будущие реализации смогут использовать серверный расчёт по собственной модели проходов и переходов. Это расширение возможностей платформы, не обязательная переделка навигации текущей карты.
Сведения о магазинах, настройки и редактируемая геометрия входят в управляемый черновик карты. Способ хранения определим позже. Для текущего просмотрщика при публикации подготавливаются совместимые SVG и материалы, включая нужные ему атрибуты. Это позволяет минимально менять существующий интерфейс и сохранить его функции.
Нельзя оставлять две независимо редактируемые версии названия или категории: одну в кабинете и другую внутри SVG.
То же относится к контурам помещений: опубликованный SVG должен отражать сохранённую геометрию редактора. Исходные SVG сохраняются как исходные материалы; прочие слои, этажи и элементы карты должны переживать изменение помещений без потери содержимого.
При замене плана система показывает, какие связи сохранились, появились или потерялись. Неоднозначные соответствия подтверждает оператор; исчезнувшие помещения и маршруты нельзя связывать с объектами по догадке.
Загружаемый SVG проверяется до предпросмотра: допустимое содержимое, отсутствие исполняемого кода и нежелательных внешних ресурсов. Это часть безопасного импорта пользовательских материалов.
Жизненный цикл:
Создание → подготовка черновика → предпросмотр → проверка → публикация → новые изменения в черновике.
У карты может одновременно быть опубликованная версия и более новый черновик. «Есть изменения» и «опубликована» не являются взаимоисключающими состояниями.
Просмотрщик получает только опубликованные данные. Посетителю не нужны учётная запись клиента и доступ к редактору.
Единственный рассматриваемый канал показа — установленные стенды под Windows. На каждом стенде обязательно устанавливается приложение OK24 Atlas, которое показывает назначенную карту. Веб-формат относится к админкам; текущий HTML/CSS/JS-интерфейс карты может использоваться внутри устанавливаемого приложения.
Приложение обязательно имеет отдельный канал связи с сервером для настроек и управления стендом. Он работает независимо от публикации содержимого карты: изменение настроек показа или отправка команды не требуют повторной публикации SVG или выпуска приложения. Это логическое разделение; конкретный транспорт выбирается позже.
В кабинете клиента для терминала задаются карта, точка старта, начальный этаж, ориентация и поведение при бездействии. Приложение получает их через канал управления. Один ТЦ с пятью терминалами использует одну карту и пять централизованно сохранённых наборов настроек показа.
Стенд использует назначенную точку старта. Существующие возможности выбора навигационного стола, поиска, этажей, карточек, рекламы, экранной клавиатуры и показа маршрутов сохраняются. Перед выпуском их проверяют на целевой Windows 10 LTSC.
Публикация делает новую версию доступной всем точкам показа. Приложение проверяет обновления и переключает версию целиком в подходящий момент, например после завершения взаимодействия. Фактически применённая версия и состояние связи видны в кабинете через канал управления. Расширенная диагностика и автономная работа при отсутствии интернета — последующие возможности, требующие отдельного решения.
Это варианты развития продукта, а не утверждённые тарифы.
| Направление | Что получает клиент |
|---|---|
| Первичное подключение | Подготовленная интерактивная карта из исходных планов, проверенные объекты и маршруты. |
| Подписка на сервис | Кабинет, редактирование помещений, доставка обновлений на стенды и история публикаций. Естественная единица тарификации — активная карта ТЦ. |
| Терминалы | Подключённые столы, централизованные настройки, контроль связи и версий, удалённый перезапуск приложения и перезагрузка ПК. |
| Контентное сопровождение | Команда OK24 обновляет арендаторов и рекламу по поручению клиента. |
| Расширенные возможности | Расширенная аналитика, несколько языков, серверная навигация и дополнительные функции конкретной реализации карты. |
| Работа с сетью ТЦ | В будущем — несколько карт одной организации и распределённые права сотрудников. Новые карты в первый выпуск не входят. |
| Рекламные возможности | Управление баннерами, позднее — расписания, размещения и отчёты. |
На старте тариф и состояние обслуживания можно назначать вручную в админке. Автоматическая оплата, расчёт рекламных размещений и финансовые документы не обязательны для запуска редактора.
Аналитика в будущем должна различать просмотры, поиск, открытие карточки и запрос маршрута, учитывать карту, период и точку показа. Нельзя выдавать число открытий карточек за число реальных посещений магазина.
Мобильная публикация и размещение карты на сайте клиента сейчас не рассматриваются и не являются обещанной следующей стадией.
Критерий первой работающей версии: на стендах Windows установлено приложение со скриптами настройки соответствующей ОС; текущая карта сохраняет все этажи и возможности. Сотрудник клиента через веб-кабинет меняет сведения и геометрию помещений, включая расширение и объединение. После проверки связей и необходимых исправлений маршрутов согласованная версия появляется в приложениях стендов. Обычные изменения не требуют ручной правки HTML/JS; создание исходной карты и подготовка маршрутов остаются обязанностью OK24.
Все части продукта разрабатываются в одном Git-репозитории OK24-Atlas. Подпроект здесь означает область ответственности с собственным исходным кодом и понятными связями с другими частями. Отдельный подпроект не обязательно является отдельным процессом, сервером или устанавливаемой программой.
Ниже зафиксирована предлагаемая структура для дальнейшей реализации. Для проектов карт подготовлен каталог maps с правилами размещения. В maps/zumTradeMap сохранён snapshot существующего проекта с manifest происхождения. Адаптация к Atlas ещё не выполнена. Стек и порядок реализации описаны в технической архитектуре и docs/TASKS.md.
| Подпроект | Каталог | Ответственность |
|---|---|---|
| Сервер платформы | apps/server |
Клиенты, пользователи, права, карты, хранение материалов, черновики, проверки и публикации. Реестр стендов, централизованные настройки, доставка команд и приём состояния. Обслуживание обеих админок, установочных пакетов и обновлений. Подключение серверных функций конкретных реализаций карт. |
| Админка OK24 | apps/admin |
Управление клиентами, картами, доступами и обслуживанием. Первичная подготовка карты, действия поддержки и управление стендами в рамках полномочий OK24. |
| Кабинет клиента | apps/client |
Работа со своими картами, сотрудниками, содержанием и публикациями. Список подключённых столов, настройки показа, состояние, перезапуск приложения и перезагрузка ПК. |
| Редактор карты | modules/map-editor |
Визуальное редактирование содержания и геометрии помещений, расширение, объединение, привязки объектов, предпросмотр и выявление затронутых маршрутов. Используется внутри обеих админок с соответствующими правами; отдельный сайт для редактора не требуется. |
| Проект карты zumTradeMap | maps/zumTradeMap |
Существующий проект zumTradeMap: HTML/CSS/JS-интерфейс, SVG всех этажей и специфичное поведение текущей карты — поиск, категории, карточки, реклама, экранная клавиатура и готовые маршруты. Сохраняет своё имя и возможности, минимально адаптируется к платформе. |
| Приложение стенда | apps/kiosk |
Обязательное устанавливаемое приложение для Windows. Запускает нужную реализацию карты, применяет параметры показа, загружает совместимую опубликованную версию. Включает компонент управления устройством и скрипты настройки ОС в поставку. |
| Управление устройством и настройка ОС | modules/device-agent |
Отдельный канал настроек, команд и состояния. Первичная привязка стенда, синхронизация параметров, выполнение разрешённых команд, перезапуск приложения и перезагрузка ПК, скрипты настройки Windows. Сообщает серверу результаты и фактическое состояние. |
OK24-Atlas/
├── apps/
│ ├── server/
│ ├── admin/
│ ├── client/
│ └── kiosk/
├── modules/
│ ├── map-editor/
│ ├── device-agent/
│ │ └── windows/
│ └── contracts/
├── maps/
│ ├── README.md
│ ├── zumTradeMap/
│ └── <имя-другого-проекта>/
├── apps/server/deployment/
└── docs/
maps — общая область проектов карт. zumTradeMap — первый самостоятельный проект внутри этой области. <имя-другого-проекта> обозначает место в схеме для будущих проектов, а не уже существующую карту или буквальное имя каталога.
Служебные области:
apps/server/contracts — общие определения форматов карты и публикации, настроек стенда, команд, результатов и совместимости версий. Позволяют частям продукта одинаково понимать передаваемые данные; способ их описания будет выбран со стеком.apps/server/deployment — описание и автоматизация развёртывания сервера, сборки и выпуска приложений. Скрипты настройки ОС конкретного стенда относятся к device-agent и включаются в установочную поставку.docs — продуктовая архитектура, договорённости между подпроектами, инструкции по выпуску, подключению и обслуживанию стендов.Рабочие загрузки клиентов, их учётные данные, состояния стендов и опубликованные версии хранятся средствами сервера. Наличие единого Git-репозитория не означает хранение всей эксплуатационной информации в Git. Исходные материалы существующей карты используются для её первоначального подключения.
В первом выпуске device-agent входит в состав поставки приложения стенда. Выделение в подпроект нужно для ответственности за управление и системные функции Windows; пользователю не предлагается вручную устанавливать ещё один самостоятельный продукт.
maps/<имя-проекта> рядом с maps/zumTradeMap. Он может иметь собственный интерфейс, ресурсы, формат редактирования и специфичные серверные модули, подключаемые к платформе. В первом выпуске переносится и подключается только существующий проект zumTradeMap.OK24-Atlas. У каждого описываются назначение, поддерживаемые возможности и точки подключения к серверу, редактору и приложению стенда. Общие функции платформы остаются в общих подпроектах.zumTradeMap или создавать новый проект.Общие изменения можно проверять и фиксировать вместе, однако выпуск сервера, админок и устанавливаемого приложения не обязан происходить одновременно. Версия ПО стенда, набор настроек и опубликованное содержание карты сохраняют отдельные жизненные циклы. Их совместимость должна учитываться при доставке обновлений.
Согласованные границы: исходные карты создаёт OK24; клиент редактирует содержание и геометрию подготовленных помещений; первый выпуск сохраняет текущую карту и работает только в обязательном устанавливаемом приложении на стендах Windows. Приложение включает скрипты настройки целевой ОС. Дальше можно детализировать редактор, выбрать стек, организацию данных, формат публикации и механизмы установки и настройки ОС, сохраняя возможность будущих серверных функций.