Скрытые расходы

Платная парковка — скрытый расход, который съедает близкий заказ

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

Близкий заказ выглядит как подарок: ехать пять минут, дорога почти ничего не стоит. А потом вы встаёте у подъезда в центре, проводите там час, и парковка съедает половину заработка. Или не оплачиваете её вовремя — и прилетает штраф, который перекрывает весь смысл поездки.

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

Что делает

Приложение проверяет, попадает ли адрес заказа в платную парковочную зону. Проверка идёт по двум разным геометриям, потому что зоны в городе устроены не одинаково:

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

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

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

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

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

Сначала грубо, потом точно

Первый шаг — грубый отбор по прямоугольнику вокруг зоны. Прямоугольник (bounding box) считается за пару сравнений чисел: если точка даже в него не попала, значит, точно не в зоне, и на неё не тратятся силы. И только те зоны, что прошли грубый фильтр, проверяются точной геометрией — «точка в многоугольнике» или «расстояние до оси улицы». Так тяжёлая математика запускается для единиц зон, а не для тысяч.

25 мрадиус привязки к оси улицы
40 мзапас к прямоугольнику

Радиус привязки к улице — 25 метров: это примерно ширина полосы (около 5 м) плюс честный запас на погрешность GPS, который в городе среди домов легко даёт десятки метров. Запас к прямоугольнику грубого отбора — 40 метров, чтобы точка у самого края зоны не проскочила мимо фильтра.

Напоминание во время смены

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

  • скорость ниже 5 км/ч — вы не едете, а стоите;
  • стоите дольше 5 минут — не светофор и не короткая высадка;
  • находитесь внутри платной зоны;
  • сейчас часы оплаты — ночью парковка бесплатна, и приложение молчит.

И повтор про одну и ту же зону приходит не раньше чем через 60 минут. Один раз напомнили — дальше не дёргаем.

Напоминание приходит, когда вы реально стоите и реально идёт оплата, а не «на всякий случай» рядом с зоной.

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

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

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

Как устроена проверка парковки

  • Две геометрии зоны: площадка — полигон (точка внутри многоугольника), улица — линия (близость к оси обочины).
  • Двухступенчатый расчёт: грубый отбор по прямоугольнику (bounding box), затем точная геометрия — быстро и без тяжёлых карт-движков.
  • Радиус привязки к оси улицы — 25 м (полоса ~5 м плюс запас на ошибку GPS); запас к прямоугольнику — 40 м.
  • Напоминание в смене: скорость < 5 км/ч, стоите > 5 мин, внутри зоны, сейчас часы оплаты; повтор про ту же зону — не раньше 60 минут.
  • Реализовано в parking_service.py, visit_parking.py (zone_at, address_hint), parking_tariff_service.py, repositories_parking.py, parking_alert_service.py.

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

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

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