2026-10-23 13:00:24 +03:00

MAPPEX Dashboards

Интерактивный прототип концепта «Межведомственный наблюдательный пункт»: МЧС, МВД, Минздрав и другие службы работают с единой базой, а ИИ-автопилот назначает исполнителей, если оператор не успел отреагировать.

2D-карта

Запуск

npm install
npm run dev

Откройте http://localhost:5173. Сборка: npm run build, проверка: npx tsc -b && npm run lint.

Нужен интернет: подложка карты — векторные тайлы OpenFreeMap (данные © OpenStreetMap), спутник — Esri World Imagery. Ключи API не нужны.

Развернуть у себя

Прототип собирается в статическую папку dist/, сервер с бэкендом не нужен.

git clone https://git.myunion.pro/yappix-samples/mappex.git
cd mappex
npm ci
npm run build

Папку dist/ можно выложить на любой статический хостинг: nginx, Vercel, Netlify, GitHub Pages, S3. Для nginx есть готовый конфиг: deploy/nginx-mappex.yappix.ru.conf. Скрипт deploy/publish.sh собирает проект и выкладывает его по rsync: DEPLOY_HOST=root@ваш-сервер DEPLOY_REMOTE=/var/www/mappex/ bash deploy/publish.sh.

Воркер MapLibre — ES-модуль (assets/maplibre-gl-worker-*.mjs). Сервер должен отдавать .mjs с типом application/javascript, иначе карта не загрузится. Конфиг nginx выше это учитывает.

Вид с дрона

Что работает

  • Карта «Пункт наблюдения» (MapLibre GL):

    • 2D — регионы РФ с подсветкой при наведении. Клик по региону открывает карточку с камерами городов, а «Статистика по региону» — сводку по смертности.
    • 3D — вид с дрона: переключение дронов, облёт цели ИИ-пилотом, ручное управление с клавиатуры (WASD/стрелки, Q/E, R/F, Z/X).
    • Спутник и Гибрид.
    • Слои: Города, Разметки, Дороги, Метки, Регионы, Черно-белое. Кнопка «Здания» включает 3D-здания на 2D-карте.
    • «Глобус» в углу переключает проекцию, стрелки прокручивают карту.
  • Самые важные события — вызов ведомства в 1 клик. Залитая кнопка значит, что служба уже выехала. «Камера» открывает 3D-вид с ближайшего дрона. На карточке идёт таймер «ИИ через N с».

  • ИИ-автопилот — переключатель в верхней строке:

    • «Автопилот» назначает исполнителей сразу.
    • «Полуручной» назначает, только если оператор не успел за отведённое время.
    • «Ручной» не вмешивается.

    Исполнителя ИИ выбирает по релевантности, профпригодности, скорости, стрессу и расстоянию до места (src/store/useStore.ts, scoreEmployee).

  • Журнал действий — кто, что и когда сделал, статусы «В работе», «Провалил» и время завершения, датчик-рейтинг сотрудника.

  • Мой профиль — датчики «Стресс» и «Задачи» зависят от текущей нагрузки, плюс столбики по годам и KPI.

  • Радар событий — следит за ближайшим к центру Москвы происшествием, умеет приближать и открывать его на карте.

  • Статистика и графика — периоды 1-Д, 1-НЕД, 1-МЕС, 1-ГОД, выбор показателей, три типа графика, курсор с подсказкой.

  • Плитки модулей скрывают и показывают виджеты. Авиация, Сообщения, Расписания и Задачи открываются боковой панелью.

  • Уведомления ведомств — «Принять» создаёт задачу, «Отклонить» и «Закрыть всё» убирают уведомления.

  • Экстренный вызов — кнопка внизу слева: набор 112, 101, 102, 103, 104, окно звонка, радиоканал.

  • Разделы меню: «Управление задачами» (происшествия, исполнители, канбан, учёт качества сотрудников) и «Настройки системы».

Демо-симуляция каждые 40 секунд добавляет новый сигнал с дрона или камеры. Интервал и время на реакцию настраиваются в «Настройках системы».

Специальные возможности

По умолчанию включены «Ночное время» и «Плохое зрение», как в макете. В настройках есть ещё «Максимальная контрастность» и дневная тема. Палитра пастельная: на чёрном фоне такие цвета не дают ореолов и «двоения» при астигматизме. Учитывается prefers-reduced-motion.

Устройство

src/
  store/useStore.ts      состояние, ИИ-автопилот, симуляция (zustand)
  data/                  моковые происшествия, сотрудники, дроны, статистика
  components/map/        карта, стили MapLibre, HUD дрона, попап региона, глобус
  components/            панели дашборда, шапка, меню, экстренный вызов
  pages/                 «Управление задачами», «Настройки», заглушки разделов
  styles/tokens.css      токены и темы (ночь / день / контраст / плохое зрение)
  assets/figma/          иконки, фото и SVG, выгруженные из Figma
public/data/             границы субъектов РФ (упрощённый GeoJSON)

Сетка повторяет макет: при корневом шрифте 16 px 1rem соответствует 32 px макета, поэтому на 1920×1080 раскладка совпадает с Figma в масштабе 1:2. Шрифт масштабируется с шириной экрана. На экранах уже 1100 px панели выстраиваются в колонку.

Максимальная контрастность

Отличия от макета

  • Шуточные тексты-заглушки заменены нейтральными правдоподобными, опечатки исправлены.
  • Фон с гранеными ромбами нарисован на CSS, а не взят из 4K-картинки (1,6 МБ).
  • Векторная карта и 3D-вид с дрона — живые (MapLibre), а не статичные картинки.
  • Шрифт SF Compact Display используется, если установлен в системе, иначе подставляется Inter.

Лицензия

Код — MIT. Фото, эмблема ИФНС, аватары и прочие картинки из макета (src/assets/figma/) лежат в репозитории только для демонстрации и под MIT не попадают. Данные карты — © участники OpenStreetMap (через OpenFreeMap), спутниковые снимки — © Esri и партнёры. Границы субъектов РФ (public/data/) взяты из click_that_hood (Code for Germany, MIT).

S
Description
MAPPEX — концепт межведомственного пункта наблюдения: карта РФ, вид с дрона в 3D и ИИ-автопилот. Vite + React + MapLibre. MIT
https://mappex.yappix.ru
Readme MIT
2.5 MiB
Languages
TypeScript 71.1%
CSS 28.4%
Shell 0.3%
HTML 0.2%