Автоматика смены

GPS в смене: время у клиента засекается само

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

В конце дня надо вспомнить: во сколько ты подъехал к третьему адресу и когда уехал от пятого? А если честно записывать каждое «приехал/уехал» руками, то на десятом заказе ты либо забудешь, либо впишешь на глаз — и вся экономика дня поедет вслед за этой приблизительной цифрой.

Пока идёт смена, приложение и так знает, где вы. Телефон отдаёт координаты, а Визиторкрут по ним сам восстанавливает картину дня: вот вы едете, вот встали у клиента, вот тронулись дальше. Ручная отметка становится не нужна — и вместе с ней уходит соблазн округлить время в свою пользу.

Что делает

Во время смены приложение принимает точки GPS и на лету решает по ним три вещи: едете вы или стоите, доехали ли до адреса заказа и вернулись ли в конечную точку смены. Всё это — из потока координат, без единого нажатия.

  • Приезд к клиенту. Вокруг адреса заказа рисуется круг — геозона. Как только вы в неё попали и постояли там достаточно, визит засчитывается: время «у клиента» пошло само.
  • Отъезд. Вышли из круга и поехали — приложение закрывает визит и снова считает вас «в дороге».
  • Финиш смены. Долгая стоянка в конечной точке засчитывается как завершение рабочего дня.

Пороги, по которым приложение принимает решения

Чтобы автоматика не срабатывала на случайностях, у каждого события есть свой порог:

120 мрадиус геозоны (плюс поправка на точность GPS)
12 минпростоять, чтобы засчитать визит
10 км/чвыше этой скорости — «едет»
30 минстоянки в финише — смена закрыта
Почему нужна выдержка в 12 минут Если засчитывать визит по одному факту «оказался в круге», его сорвёт любой красный свет у нужного дома или сосед, припарковавшийся в двух шагах. Поэтому нужно именно постоять — проехать мимо не считается. А радиус подрастает, когда сигнал слабый: в плотной застройке точность GPS падает, и жёсткие 120 метров иначе не давали бы засчитать честный визит.

Что за этим стоит

Сырой GPS врёт. Точка нет-нет да и «прыгнет» на сотни метров в сторону — из-за отражения сигнала от домов или потери спутников в тоннеле. Если принять такой скачок за правду, приложение решит, что вы за секунду телепортировались на другой конец района.

Фильтр прыжков

Поэтому каждое новое перемещение проверяется на правдоподобность. Расстояние между соседними точками считается по формуле haversine_m (дуга по поверхности Земли), а дальше отсекается всё нереальное:

  • Перемещение быстрее 10 км/мин — это не человек в городе, а ошибка координаты. Такая точка отбрасывается и в расчёт не идёт.
  • По оставшимся, чистым точкам считается настоящая скорость — по ней и понятно, едете вы или стоите.

Чтобы вы не тонули в повторных уведомлениях, приложение не напоминает об одном и том же чаще, чем раз в 60 минут.

Метрики дня из готового трека

Когда трек уже собран, из него отдельно достаются показатели рабочего дня — то, что руками не посчитать:

  • Самый длинный кусок непрерывной езды. Приложение ищет самую долгую серию движения без остановки. Разрыв трека дольше 180 секунд рвёт серию; короткая стоянка меньше 5 минут считается светофором, а не остановкой; длинной признаётся езда дольше 90 минут подряд.
  • Простои не у заказов. Время, когда вы стояли, но не у клиента, — ожидание, пробки, паузы.
  • Лишние километры сверх плана. Насколько фактический пробег разошёлся с задуманным маршрутом.
90 минут за рулём без остановки — это уже не «немного проехал», это цифра, которую видно в отчёте и с которой можно что-то решать.

Почему это важно

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

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

Честно про ограничения GPS не всесилен. В глухом подземном паркинге или бетонном бизнес-центре сигнал пропадает, и приложение может не увидеть приезд вовремя. Поэтому автоматика — не диктатор: любое засечённое время при закрытии смены можно поправить руками, а сверка пробега отдельно ловит провалы трека.

Как работает GPS в смене

  • Геозона визита — 120 м вокруг адреса плюс поправка на точность GPS; чтобы засчитать визит, надо простоять 12 минут.
  • «Едет» — скорость выше 10 км/ч; фильтр прыжков отбрасывает перемещения быстрее 10 км/мин как ошибку координаты.
  • Финиш смены засчитывается после 30 минут стоянки в конечной точке; повтор уведомлений — не чаще раза в 60 минут.
  • Метрики дня: длинной считается непрерывная езда дольше 90 мин; разрыв трека дольше 180 с рвёт серию, стоянка меньше 5 мин — это светофор.
  • Реализовано в location_service.py (process_location_update, haversine_m) и gps_metrics_service.py.

Проверь любой заказ за секунду

Установи приложение и посмотри честный вердикт по своему следующему адресу — стоит ехать или нет.

Скачать для Android Android 8+ · установка из файла · бесплатно