Онлайн сервис заказа такси. Часть 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 тыс. руб.

13
Отправить ответ

avatar
4 Comment threads
9 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
  Subscribe  
новые старые популярные
Уведомление
Александр
Гость

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

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

 

Александр
Гость

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

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

Error
Гость

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

Дмитрий
Гость
Дмитрий

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

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