БлогТакси

Онлайн сервис заказа такси. Часть 25. Расчет стоимости поездки.

Есть у моего сервиса один большой минус, из-за которого в данный период теряю конверсию минимум в 2 раза — мобильное приложение не предоставляет информацию о стоимости заказа.
Но, справедливости ради отмечу — «пока не работает», так как работы в этом направлении были начаты еще в самом начале. По итогу, после того, как клиент вводит адрес откуда и куда, приложение через API будет запрашивать инфу о стоимости поездки с моего сервера.

А на сервере было проведено достаточно много работы в этом направлении, так как задача оказалась довольно сложной.

Ведь дело в том, что в схеме работы моего сервиса, заказы не предлагаются водителям, а назначаются принудительно и если водитель отказывается от заказа, то получает штраф. Именно за счет того, что заказ назначается водителю принудительно, клиенты гарантированно получают свой автомобиль в кратчайшее время: в среднем, по Москве, время подачи авто составляет 7-11 минут и это хороший показатель.

Однако, это мне создает сложность, так как в этом случае я вынужден предоставлять авто по определенной тарифной сетке, которая состоит из кучи параметров: расстояние, время в пути, время суток и день недели и все это необходимо просчитать, чтобы предоставить клиенту примерную стоимость. И эта стоимость может быть только примерной, так как невозможно 100% спрогнозировать, сколько автомобиль времени проведет в пути, а когда 1 минута пути стоит 15 рублей, то разница в 6 минут превращается в разницу почти в 100 рублей.

И чтобы стоимость была спрогнозирована максимально точно, пришлось попотеть (ведь важно понимать, что у меня нет таких ресурсов, которые есть у Яндекс.Такси). В итоге были созданы алгоритмы, которые работают даже лучше, чем у Яндекс.Такси. После создания алгоритмов, я сам прокатался с таксистами 18 раз, по разным маршрутам, чтобы понять, на сколько отличается спрогнозированное от реального и знаете ли, по итогу, реальное время оказалось на 2% выше спрогнозированного (да, были случаи, когда реальная стоимость поездки оказалась на 10-15% ниже спрогнозированной), однако повышение стоимости поездки было не более 10%.

По схеме работы.
1. Модуль запрашивает у Яндекс.Карт расстояние и время в пути.
2. Калькулятор просчитывает информацию по прописанной в конфигурационном фале тарифной сетке (в данный момент админка не создана, поэтому, приходится прописывать данные ручками в конфигурационный файл). Стоимость поездки, в принципе, меняется не часто, поэтому, пока что можно и ручками отредактировать *.js файл.

config_moscow

Однако, ведь стоимость поездки другая ночью и в выходные/праздники и для этого есть дополнение. Ночью и в выходные подставляются иные данные.

config_moscow_night

 

Трансферы.
Стоимость поездки в аэропорт, из аэропорта, а так же между аэропортами — она фиксированная.
Но ведь нужно понять, что поездка в аэропорт. Для этого большинство компании делают упрощенную схему: если необходимо выбрать поездку в аэропорт, то клиент должен выбрать из списка «поездка в аэропорт» и тогда, тариф просчитывается как трансферный (то есть с фиксированной стоимостью поездки). Я же решил сделать все по феншую.

Для этого, мной были получены полигоны Москвы и аэропортов. Всего в файле 13 секторов:
Moscow city — границы города
Округа — 9 шт.
Аэропорты — 3 шт.
Все это находится в XML файле и при заказе, включается механизм определения вхождения координат в полигоны, система проверяет, в какой полигон входит адрес и если адрес входит в полигоны DME, VKO, SVO (обозначения аэропортов), то автоматом включается трансферный тариф. Соответственно, стоимость так же прописана в конфигурационном файле

config_moscow_transfery

 

Заказ на будущее время?
И если сейчас клиент заказывает на завтра, определенное время…
Создан был еще один файл конфигурации, в котором прописано, какие обычно бывают пробки в какое время. Далее, в зависимости от того, сколько бывают пробки, добавляются корректирующие коэффициенты.

price_drive

Кстати, для реализации всего этого, пришлось очень долго искать программиста. Все работает на Node.js — программной платформе, основанной на движке V8 (транслирующем JavaScript в машинный код), превращающей JavaScript из узкоспециализированного языка в язык общего назначения. Данную платформу пришлось использовать для взаимодействия с Яндекс.Картами. Все крутится на VPS сервере, на базе Debian 8.

Дополнительно.
Поскольку невозможно максимально точно определить, сколько будет стоить поездка, то было решено полученное значение перевести в интервал, как это делает приложение Uber. В итоге, от полученного значения отнимается 15% и добавляется 10% и выглядит оно вот так:

moscow_online_1

И если речь о поездке в аэропорт

moscow_online_2

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

moscow_online_3

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

moscow_online_4

Однако, уже есть обновленный макет и скоро он будет сверстан

moscow_online_5

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

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

Созданный заказ через API отправляется к партнеру, который находит ближайшие к клиенту автомобиль, подходящий клиенту по параметрам и назначает водителю заказ. Обратно через API сайт получает статус выполнения заявки. Конечно, будут еще доработки, в частности, можно будет на карте видеть перемещение автомобиля, но это чуть позже.
Вся эта структура имеет внешнее API, правда, осталось доработать кое-какие мелочи, но там, в принципе, день работы и мобильное приложение сможет через API получать и передавать данные, необходимые для работы, в том числе просчитанную ориентировочную стоимость поездки.

Стоимость разработки составила чуть более 100 тыс. руб.

Subscribe
Уведомление
guest

13 комментариев
старые
новые популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Александр
10 лет назад

Все, что вы сейчас делаете, кроме прогнозируемой стоимости (это совсем не проблема), у нас уже есть на Таксовике.  Если бы обратились к нам – выдали бы бесплатно виджет/API для расчета стоимости.

Кстати, проблема еще и в том, что лицензия Яндекс.Карт не позволяет делать расчеты удаленно на сервере, а затем эти данные использовать где-либо. Необходимо будет отображать карты на клиенте, иначе могут заблокировать.

 

Александр
Ответить на  S.Velibekov
9 лет назад

>Начнем с того, что ваша форма заказа — она далека от юзабилити.

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

>Честно говоря, я совершенно не понял, к чему ваш сервис?
>Что он дает человеку?

Ну, мы появились достаточно давно, когда еще не было всяких Яндексов, а рассчитать стоимость и сравнить разные предложения от таксопарков было невозможно… 

Пользователям сервис нравится, т.к. у нас можно заказать такси,  рассчитав заранее стоимость с учетом всевозможных наценок подачи за МКАД, округов и т.п. Кроме того, у нас таксопарки часто включают скидки, можно почитать честные отрицательные отзывы )

Александр
Ответить на  S.Velibekov
9 лет назад

>В вашей форме, при заказе, он подтверждается оператором. В моей же системе, прокладки в виде живых людей совершенно не участвуют) Не совсем так) Последние полгода мы работали над системой автоматизации для таксопарков mGPS, в которой можно отслеживать машины на карте, выкидывать заказы на РБТ (в будущем и Таксик), назначать заказы водителям напрямую. То есть мы делаем систему, позволяющую любому таксопарку быть Убером. >2. Единые требования к автомобилям. К примеру, у вас: >Евразия такси Блин, этот таксопарк у нас в конце списка уже несколько лет в качестве балласта 🙂 Цены в аэропорты у нас фиксированные и они ниже, чем в том же Убере. В аэропорт с нами дешевле, чем с кем-либо. Что касается городских поездок, то иногда Убер дешевле. >И вопрос: сколько у вас занимает ожидание авто? >Повторюсь: я по Москве подаю авто в среднем за 5-10 минут. Трудно сказать, многие таксопарки работают через РБТ, кто-то через Таксик. Думаю, в среднем реальное время подачи будет примерно 10-15 минут. >Моя концепция в том, что совершенно пофигу у какого таксопарка какая цена. Есть единый тариф, который зависит от типа автомобилей: Стандарт — B класс, Это все хорошо ровно до тех пор, пока не придется поехать, например, за МКАД. >Но сам сайт — это… Read more »

Александр
9 лет назад

Напиши, что собираешься делать с лицензионными ограничениями карт? Интересно же!

Вся работа зря получается…

Александр
Ответить на  S.Velibekov
9 лет назад

И если заблокируют, то подам сперва в Яндекс жалобу о том, что Яндекс.Такси нарушает лицензию Яндекс.Карт и если они не заблокируют карты для Яндекс.Такси, то затем подав в ФАС жалобу на Яндекс, о том, что они одним позволяют нарушать свою лицензию, а другим запрещают, а после, расскажу об этом на Гиктаймсе.

Смелый шаг!  Мы очень долго ломали голову, но так и не решились нарушать лицензию. Будем надеяться, что последствий не будет.

>Ну а в самом крайнем случае, у меня есть OpenStreetMap.

К сожалению, OpenStreetMap не позволяет строить маршрут с учетом пробок 🙁 Сервис Яндекс.Пробки отдельно данных не выдает.

Вариант легального использования пробок от Яндекса только один – рисовать карту на клиенте.

Можно еще использовать серверную реализацию Google.Maps, но бесплатная версия идет без пробок. Да и хуже пробки от гугла, чем от Яндекса.

Error
9 лет назад

В соцсетях достаточно часто можно встретить жалобы на ваш сервис. Понятно, что вы агрегатор и услугу предоставляет сервис такси, но все же как работаете с негативом?

Дмитрий
Дмитрий
9 лет назад

Ну ты и ушлая гадость,Велибеков. Скажу, прикажу своему программисту.Там-сям выкручусь

людей считаешь за собственность-сквозит насквозь, все бы бизнес-педики такие.
Сделай сам код и сервис. Такие как ты не понимают,что доставвать бабки из кошелька -это самое простое,что возможно в этом мире..  А сам ты не сделаешь нихуя, кроме наглости. Наглость и есть твое оружие. А наглых надо посылать. А по хорошему, ставить на место. Жаль, что твой программист -продажный профи с недостатком человеческих качеств и этого не понимает. Прибыли не давать, с твоими предложениями  денег- посылать и создавать самим.
 

13
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x