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

Подписаться
Уведомление о
guest

13 комментариев
старее
новее большинство голосов
Межтекстовые Отзывы
Посмотреть все комментарии
Александр

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

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

 

Александр

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

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

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

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

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

Александр

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

Александр

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

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

Александр

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

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

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

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

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

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

Error

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

Дмитрий

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

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

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