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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

  Subscribe  
новые старые популярные
Уведомление
Александр
Гость

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

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

 

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

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

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

Error
Гость

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

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

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

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