Умное завершение смены и сверка пробега
При закрытии смены сервер заранее считает всё, что может, — пробег, длительности, расходы. Человек только подтверждает или правит. И отдельно аккуратно сверяет пробег, потому что от него зависит рентабельность каждого заказа за день.
Конец смены — худшее время для заполнения форм. Вы устали, хотите домой, а приложение просит вбить пробег, длительности, расходы. В таком состоянии человек ставит цифры на глаз — и одна неточность в пробеге тихо перекашивает рентабельность всех сегодняшних заказов сразу.
Поэтому Визиторкрут переворачивает порядок: не вы заполняете смену с нуля, а сервер показывает уже посчитанный итог, а вам остаётся согласиться или поправить. Закрытие превращается из анкеты в пару подтверждений.
Что делает
Когда вы нажимаете «завершить смену», сервер заранее собирает всё, что можно посчитать без вас (это делает build_end_day_preview):
- Пробег по GPS — из трека смены.
- Показания одометра — если вы вносили их на старте и финише.
- Длительности — время в дороге и у клиентов, уже засечённое автоматически.
- Внесённые расходы — топливо, парковка и прочее за день.
Всё это выкладывается перед вами готовым. Ваша роль — подтвердить или поправить, а не заполнять пустые поля.
Мастер завершения не спрашивает «сколько?», он показывает «вот столько — верно?». Это разные объёмы усилий в конце тяжёлого дня.
Что за этим стоит
Самое тонкое место — пробег. У него два источника, и они не всегда сходятся: GPS-трек и одометр машины. Расхождение бывает по двум противоположным причинам, и их важно не перепутать:
- Одометр больше трека — возможно, были личные поездки, которые в рабочий пробег включать не надо.
- Трек меньше одометра из-за провала сигнала — GPS терял спутники, реальная дорога была, а трек её недосчитал.
Приложение не решает за вас, а спрашивает, что считать рабочим пробегом, и объясняет смысл каждого варианта — чтобы выбор был осознанным, а не наугад.
Когда приложение спрашивает, а когда молчит
Донимать вопросом на каждой смене бессмысленно, поэтому у сверки есть пороги (логика в mileage_service.py):
Маленькое расхождение (меньше 10%) приложение проглатывает молча — на такой разнице не стоит тратить ваше внимание. Большое (больше 20%) поднимает вопрос всегда. Ниже 5 км сравнивать вообще нет смысла: на коротком отрезке даже честный GPS гуляет. А трек считается достоверным лишь начиная с полукилометра.
Почему это важно
Пробег — это не одна строчка в отчёте, это знаменатель всей экономики дня. Затраты на дорогу раскладываются по всем сегодняшним заказам, и ошибка в пробеге искажает рентабельность каждого из них сразу:
- Пробег завышен — топливо и износ на дорогу считаются больше реальных, и все заказы кажутся убыточнее, чем были.
- Пробег занижен — расходы на дорогу недосчитаны, и заказы выглядят выгоднее, чем есть. Это опаснее: вы будете брать поездки, которые на самом деле в минус.
Именно поэтому пробег сверяется так аккуратно — но без нудного ручного ввода. Приложение берёт на себя всю арифметику и тревожит вас только там, где цифры действительно разошлись и ваше решение что-то меняет. Точный пробег на выходе — это честная рентабельность каждого заказа на входе в завтрашний день.
Как закрывается смена
- Сервер заранее считает пробег по GPS, показания одометра, длительности и внесённые расходы — человек подтверждает или правит, а не заполняет с нуля.
- При расхождении GPS и одометра приложение спрашивает, что считать рабочим пробегом, и объясняет каждый вариант: личные поездки против провала сигнала.
- Пороги сверки: расхождение <10% — не спрашивает, >20% — спрашивает всегда; минимум для сравнения 5 км, порог доверия треку 0,5 км.
- Предупреждает, если цена литра отклонилась больше чем на 10% от прошлой заправки — опечатка или скачок цен.
- Реализовано в day_summary_service.py (build_end_day_preview) и mileage_service.py; экраны EndShiftWizard.kt, EndShiftMath.kt, MileageStep.kt.
Проверь любой заказ за секунду
Установи приложение и посмотри честный вердикт по своему следующему адресу — стоит ехать или нет.
Скачать для Android Android 8+ · установка из файла · бесплатно