← Все кейсы
B2B Web

Tracktice Flow

Настройка оборудования подсчёта пассажиропотока — интерфейс калибровки и системных настроек комплекса видеоаналитики.

Обложка кейса — экран калибровки крупно

Коротко

О компании

Tracktice — компания, занимающаяся видеоаналитикой для транспортной инфраструктуры. В компании я также делала корпоративный сайт.

Контекст

Tracktice.Flow считает вошедших и вышедших пассажиров: над каждой дверью транспортного средства стоит камера, ПО отслеживает пересечение виртуальной линии в кадре. Перед вводом машины в эксплуатацию инженер калибрует систему — задаёт положение линии для каждой двери и настраивает параметры устройства.

📝

Заглушка — нужны данные от автора. Одной строкой: чем не устраивал интерфейс, который был до меня — было тяжело читать, параметры лежали вперемешку, устарел визуально?

Задача

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

Я была единственным дизайнером и отвечала за оба модуля целиком — от структуры экранов до передачи в разработку и ревью реализации.

Что сделала

  • Свела параметры и живой видеопоток на один экран. До этого проверка результата требовала перехода в другое место
  • Разложила экран калибровки по шагам инженера: подключиться → разметить линию → проверить. Три постоянно видимые зоны вместо сворачиваемых блоков
  • Работала внутри ограничения разработки: способ ввода линии был задан — числовые поля в пикселях. Компенсировала шаговым вводом и близостью кадра
  • Заложила логику зависимостей: при синхронизации времени по NTP ручной ввод даты и времени отключается — поле видно, но недоступно
  • Собрала UI Kit продукта — до этого модули делались без общей библиотеки, компоненты расходились между экранами

Роль и команда

Продуктовый дизайнер, единственный дизайнер в команде. Команда: продакт-менеджер, стейкхолдер, разработчики.

Результат

Интерфейс внедрён и работает в эксплуатации. На ревью реализации я обнаружила расхождения вёрстки с макетами и передала список правок команде.

Количественных замеров мы не делали — это ограничение кейса, и ниже я пишу, что замеряла бы сейчас.

Экран калибровки — разметка линии на живом видеопотоке
Системные настройки — сеть, сервер, время, GPS

Как работает подсчёт

Камера смотрит вниз на дверной проём. В кадре проходит виртуальная линия: пересечение в одну сторону — вход, в другую — выход. От того, где стоит линия, зависит, будет счётчик считать верно или начнёт терять и задваивать проходы.

Отсюда главное свойство задачи: правильность настройки видна только на живом кадре. Ни одно число само по себе не говорит инженеру, что линия стоит хорошо.

Второе свойство: настройка выполняется один раз при установке машины. Инженер не возвращается в интерфейс и не вырабатывает привычек — каждый раз он в нём как впервые.

Схема: камера над дверью → линия в кадре → счётчик in/out

Рисуется за полчаса, объясняет продукт лучше скриншота.

Ограничения

Способ ввода линии задавала разработка. Параметры уходят в устройство числами в пикселях, и формат ввода был определён до меня. Перетаскивание линии по кадру в тот момент не обсуждалось как вариант.

📝

Заглушка — нужны данные от автора. Причина, по которой перетаскивание не рассматривалось: не было интерактивного слоя над видеопотоком / задержка видео / не было ресурса на фронте. Если причина не вспоминается — «формат был задан» остаётся честной формулировкой как есть.

Состав параметров задан устройством. Что показывать на экране, определялось прошивкой, а не продуктовым решением.

📝

Заглушка — нужны данные от автора. Другие ограничения проекта — сроки, легаси, ресурс фронтенда — можно добавить сюда одной строкой каждое.

Экран калибровки

Логика раскладки

Три вертикальные зоны, повторяющие порядок действий инженера: подключение и режим работы → разметка линии → проверка на живом кадре.

Зоны сделаны постоянно видимыми, а не сворачиваемыми блоками. Инженер смотрит в третью зону, продолжая править вторую: аккордеон заставлял бы раскрывать блоки заново на каждой итерации.

Что я решала внутри ограничения

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

Кадр вплотную к полям. До этого проверка результата требовала перехода. Сведение на один экран убрало это переключение — единственное изменение, которое реально сокращало цикл правки.

Шаговый ввод стрелками. Подстройка на пиксель — один клик, без выделения и перенабора значения. Для правки «чуть выше» это точнее, чем ввод с клавиатуры.

Переключение дверей в шапке экрана. Все камеры машины настраиваются в одном месте, без возврата в список.

Экран калибровки целиком

Зона линии рядом с кадром

Шаговый ввод

Системные настройки

Параметры устройства — сеть, сервер, время, GPS — разложены на четыре независимых блока по зоне ответственности. Внутри блока порядок полей повторяет порядок, в котором их обычно заполняют.

Одно решение, которое считаю здесь главным: поля «Дата» и «Время» отключаются при выборе NTP. Устройство синхронизирует время само, и ручной ввод в этом режиме ничего не изменит. Отключённое поле честнее скрытого: инженер видит, что параметр существует, и понимает, почему сейчас недоступен. Скрытое поле оставило бы его гадать, куда делась настройка.

Блок «Системное время» с отключёнными полями

При синхронизации по NTP ручной ввод отключается — поле видно, но недоступно.

Что я вижу в этой работе сейчас

С тех пор прошло время. Я разобрала свои экраны заново — вот что сделала бы иначе и почему.

1. Линия должна задаваться в кадре

Ограничение по формату ввода я приняла как данность и оптимизировала вокруг него: приблизила кадр, добавила шаговый ввод. Сейчас я бы это ограничение сначала оспорила.

Числовой ввод при видимом кадре — это угадывание. Инженер не знает, сколько пикселей ему не хватает; он видит, что линия чуть выше, чем надо. Каждая правка стоит цикла «ввёл — посмотрел — вернулся», и цикл повторяется для каждой двери.

Как сделала бы. Линия рисуется поверх кадра и тянется мышью за концы и за середину. Числовые поля остаются и синхронизированы в обе стороны — потянул линию, обновились числа; ввёл число, сдвинулась линия. Ручной ввод нужен для удалённой поддержки: значение можно продиктовать по телефону.

Что бы это стоило. Интерактивный слой поверх видеопотока — реальная работа для фронта, и разработка могла отказать снова. Но тогда у меня был бы посчитанный аргумент: сколько итераций правки экономит прямая манипуляция на каждой из 2–4 дверей каждой машины. Я его не приносила — просто приняла формат.

💡

Главный вывод для меня: ограничение стоит принимать после того, как понял его цену, а не вместо этого.

До/после — перетаскивание линии мышью

2. Модель линии не совпадает с тем, что видно

«Отступ от левого края», «Отступ от правого края», «Положение по вертикали» — три независимых числа, из которых инженер собирает в голове один отрезок.

Как сделала бы. Линия как единый объект с двумя точками. Это соответствует и тому, что человек видит в кадре, и тому, что он хочет сделать.

3. Двери — табы, а не дропдаун

Я вынесла переключение дверей наверх, но оставила дропдаун. При этом дверей на машине 2–4 — весь набор помещается, и прятать его незачем.

Как сделала бы. Табы с индикатором готовности — настроена, не настроена, в работе. Инженер видит объём работы по машине целиком и не держит в голове, что уже сделал.

Оговорка: решение привязано к автобусу. Для трамвая или сочленённой машины набор может вырасти, и тогда нужен список с прогрессом.

4. Состояния

Оба экрана спроектированы под сценарий, в котором всё работает. Но инженер приходит в интерфейс наладки именно тогда, когда что-то не так.

Что добавила бы:

  • Нет потока с камеры — вместо кадра сообщение и следующий шаг: проверить питание, проверить ссылку, повторить подключение
  • Неверная RTSP-ссылка — валидация в момент ввода, а не после сохранения
  • Настройки применяются — устройство перезагружается, показано, сколько это займёт. Без этого инженер думает, что зависло
  • Несохранённые изменения при переключении двери — сейчас правки теряются молча
  • Смена сетевых параметров — предупреждение, что устройство станет доступно по новому адресу и текущая сессия прервётся
💡

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

Нет потока с камеры

Неверная RTSP-ссылка

Настройки применяются

Несохранённые изменения

5. Единица работы — машина, а не экран

Первичное действие на экране — «Сохранить настройки». Но задача инженера не в том, чтобы сохранить экран, а в том, чтобы настроить машину и сдать её.

Как сделала бы. Действие ведёт дальше — «Сохранить и перейти к двери 2». Когда настроены все двери — экран завершения: что настроено, что проверить перед сдачей.

Это самое существенное из того, что я упустила. Остальное — про удобство отдельных элементов, а это про то, совпадает ли структура интерфейса с задачей человека.

6. Чего мы не сделали до начала работы

Мы не поговорили ни с одним монтажником и не замерили, сколько занимает настройка машины. Я исходила из своего понимания сценария.

Что бы замеряла сейчас: время калибровки одной двери, число итераций правки линии до сохранения, доля машин, где калибровку переделывали после приёмки. Последняя метрика — самая честная: она показывает, ошибается инженер или нет.

Без этих цифр я не могу сказать, стало ли лучше. Могу сказать только, что было сделано и почему.

Выводы

Ограничение стоит взвесить, прежде чем принять. Формат ввода линии пришёл от разработки, и я оптимизировала вокруг него, не спросив о цене. Это главное, что я вынесла из проекта: «так сказала разработка» — это начало разговора, а не конец.

Структура интерфейса должна совпадать с единицей работы пользователя. Инженер настраивает машину, а не экран. Я спроектировала экраны — и не заметила, что между ними нет истории.

Состояния — не финальная отделка. В инструменте наладки они и есть основной сценарий, и закладывать их надо в начале, а не после того, как готов благополучный случай.