Ситуационная карта: история разработки и функционал продукта
Мы поговорили с разработчиком ситуационной карты – продукта, который агрегирует данные о машинах, объектах и камерах видеонаблюдения в едином интерфейсе. Екатерина рассказала, с чего всё началось, какие сложности встретились на пути и на какой стадии проект находится сейчас.
С чего всё началось
Заказчик – крупная ресурсоснабжающая организация, у которой много объектов по Москве. На каждом объекте установлены камеры видеонаблюдения и пропускная система, а между объектами по разным задачам передвигается большое количество служебных автомобилей. Раньше служба безопасности мониторила всё это с помощью разных сервисов и окон. В критической ситуации, например при нарушении безопасности на одном из объектов, такое распыление удлиняло время реагирования: нужно было переключаться между системами, сводить данные вручную и тратить драгоценные минуты.
Перед нами стояла задача собрать всё в единое окно – ситуационную карту, чтобы ускорить и упростить работу службы безопасности. В одном приложении требовалось видеть ситуацию на всех объектах, положение машин, а также иметь возможность выгружать данные о перемещениях за определённый промежуток времени и наблюдать за ними онлайн. Отдельным критически важным требованием было видеть в ситуационной карте потоки с камер, расположенных на объектах.
Как работает ситуационная карта
Есть множество сторонних сервисов: на каждой машине стоит датчик, который передаёт данные о текущем положении; на каждом объекте – несколько разных видов сигнализаций и данные о турникетах (кто, когда и куда прошёл), а также камеры видеонаблюдения. Ситуационная карта – это в первую очередь агрегатор: она собирает все эти данные и показывает пользователю в максимально удобном виде.
Также есть журнал телеметрии – данные о том, по какой траектории двигалась машина, на какие объекты и в какое время заезжала, сколько там простояла. Весь этот отчёт собирается исключительно по анализу передаваемых координат ГЛОНАСС (спутниковая навигационная система). Раньше такие отчёты заполнялись сотрудниками вручную, а проверить достоверность данных было невозможно.
Сроки и этапы
Проект проходил в несколько этапов и занял два года.
Первый этап – отрисовка карты, объектов и машин; разработка первой версии журнала телеметрии и первых этапов фильтрации; подключение камер.
Второй этап – изменение интерфейса и создание административной панели; доработка журнала телеметрии; работа над плавностью движения автомобилей на карте.
Третий этап – настройка интеграций, доработка интерфейса, усложнение системы фильтрации (в том числе по районам).
Какие были сложности
По технической части сложности возникли с плавностью движения автомобилей на карте (одно из требований заказчика) и журналом телеметрии. Главной проблемой стали периодические сбои в передаче данных по координатам.
Здесь подключается внутренняя логика: мы не отрисовываем текущее положение машины, а накапливаем несколько точек и применяем математические модели, чтобы аппроксимировать движение, сделать его более плавным.
«Мы накапливаем кэш последних точек, и машина на карте не начинает двигаться, пока не накопится хотя бы пять точек. Когда накопили, начинаем вращать и двигать машину, но скорость подбираем так, чтобы она не успевала доехать до последней прилетевшей точки, пока не прилетит следующая. Если видим, что точек в запасе недостаточно, замедляем автомобиль на карте».
– Екатерина Турышева, разработчик
Одной из самых сложных работ по проекту стало определение точки остановки. Мы перебрали несколько разных моделей, чтобы понимать, что машина прибыла на объект, а не остановилась на светофоре.
Сначала алгоритм был простой: если несколько раз подряд приходят точки с нулевой скоростью и между первой и последней такой точкой проходит достаточно времени, считаем, что машина стоит. Но потом выяснилось, что ГЛОНАСС не всегда присылает несколько нулевых точек – иногда приходит только одна. Тогда мы стали смотреть на следующую точку: скорость у неё уже не ноль, но может быть маленькой. И по параметрам решаем, была ли это стоянка: насколько следующая точка близка к предыдущей, какая максимальная скорость допустима.
Также несколько раз менялся интерфейс проекта. Заказчик не всегда прислушивался к нашим комментариям, в итоге приходилось откатывать назад уже внедрённые правки.
Итог
Сегодня ситуационная карта находится в промышленной эксплуатации. Продукт работает, и, что особенно приятно, заказчик доволен.
Внедрение ситуационной карты позволило не только упростить работу службы безопасности, объединив данные в одном окне, но и усилить контроль за сотрудниками, благодаря журналу телеметрии. Теперь заказчик точно знает, как часто посещаются объекты и сколько времени сотрудники на них проводят. А в случае нарушения безопасности одного из объектов реакция займёт меньше минуты, так как вся нужная информация постоянно находится перед глазами – в одном окне.