Онлайн сервис заказа такси. Часть 25. Расчет стоимости поездки
Есть у моего сервиса один большой минус, из-за которого в данный период теряю конверсию минимум в 2 раза — мобильное приложение не предоставляет информацию о стоимости заказа.
Но, справедливости ради отмечу — «пока не работает», так как работы в этом направлении были начаты еще в самом начале. По итогу, после того, как клиент вводит адрес откуда и куда, приложение через API будет запрашивать инфу о стоимости поездки с моего сервера.
А на сервере было проведено достаточно много работы в этом направлении, так как задача оказалась довольно сложной.
Ведь дело в том, что в схеме работы моего сервиса, заказы не предлагаются водителям, а назначаются принудительно и если водитель отказывается от заказа, то получает штраф. Именно за счет того, что заказ назначается водителю принудительно, клиенты гарантированно получают свой автомобиль в кратчайшее время: в среднем, по Москве, время подачи авто составляет 7-11 минут и это хороший показатель.
Однако, это мне создает сложность, так как в этом случае я вынужден предоставлять авто по определенной тарифной сетке, которая состоит из кучи параметров: расстояние, время в пути, время суток и день недели и все это необходимо просчитать, чтобы предоставить клиенту примерную стоимость. И эта стоимость может быть только примерной, так как невозможно 100% спрогнозировать, сколько автомобиль времени проведет в пути, а когда 1 минута пути стоит 15 рублей, то разница в 6 минут превращается в разницу почти в 100 рублей.
И чтобы стоимость была спрогнозирована максимально точно, пришлось попотеть (ведь важно понимать, что у меня нет таких ресурсов, которые есть у Яндекс.Такси). В итоге были созданы алгоритмы, которые работают даже лучше, чем у Яндекс.Такси. После создания алгоритмов, я сам прокатался с таксистами 18 раз, по разным маршрутам, чтобы понять, на сколько отличается спрогнозированное от реального и знаете ли, по итогу, реальное время оказалось на 2% выше спрогнозированного (да, были случаи, когда реальная стоимость поездки оказалась на 10-15% ниже спрогнозированной), однако повышение стоимости поездки было не более 10%.
По схеме работы.
1. Модуль запрашивает у Яндекс.Карт расстояние и время в пути.
2. Калькулятор просчитывает информацию по прописанной в конфигурационном фале тарифной сетке (в данный момент админка не создана, поэтому, приходится прописывать данные ручками в конфигурационный файл). Стоимость поездки, в принципе, меняется не часто, поэтому, пока что можно и ручками отредактировать *.js файл.
Однако, ведь стоимость поездки другая ночью и в выходные/праздники и для этого есть дополнение. Ночью и в выходные подставляются иные данные.
Трансферы.
Стоимость поездки в аэропорт, из аэропорта, а так же между аэропортами — она фиксированная.
Но ведь нужно понять, что поездка в аэропорт. Для этого большинство компании делают упрощенную схему: если необходимо выбрать поездку в аэропорт, то клиент должен выбрать из списка «поездка в аэропорт» и тогда, тариф просчитывается как трансферный (то есть с фиксированной стоимостью поездки). Я же решил сделать все по феншую.
Для этого, мной были получены полигоны Москвы и аэропортов. Всего в файле 13 секторов:
Moscow city — границы города
Округа — 9 шт.
Аэропорты — 3 шт.
Все это находится в XML файле и при заказе, включается механизм определения вхождения координат в полигоны, система проверяет, в какой полигон входит адрес и если адрес входит в полигоны DME, VKO, SVO (обозначения аэропортов), то автоматом включается трансферный тариф. Соответственно, стоимость так же прописана в конфигурационном файле
Заказ на будущее время?
И если сейчас клиент заказывает на завтра, определенное время…
Создан был еще один файл конфигурации, в котором прописано, какие обычно бывают пробки в какое время. Далее, в зависимости от того, сколько бывают пробки, добавляются корректирующие коэффициенты.
Кстати, для реализации всего этого, пришлось очень долго искать программиста. Все работает на Node.js — программной платформе, основанной на движке V8 (транслирующем JavaScript в машинный код), превращающей JavaScript из узкоспециализированного языка в язык общего назначения. Данную платформу пришлось использовать для взаимодействия с Яндекс.Картами. Все крутится на VPS сервере, на базе Debian 8.
Дополнительно.
Поскольку невозможно максимально точно определить, сколько будет стоить поездка, то было решено полученное значение перевести в интервал, как это делает приложение Uber. В итоге, от полученного значения отнимается 15% и добавляется 10% и выглядит оно вот так:
И если речь о поездке в аэропорт
При вводе данных, появляется новое окно, в котором клиенту (если клиент новый), предлагается ввести код верификации номера телефона и имя. Лишь после подтверждения номера телефона и указания имени, заказ отправляется в обработку
После оформления заказа, клиент видит на своем экране статус выполнения заявки. Правда, оно довольно стремное сейчас по дизайну
Однако, уже есть обновленный макет и скоро он будет сверстан
И конечно же, если клиент один раз подтвердил свой номер телефона, то в браузер кидается кука и ему больше не нужно подтверждать свой номер, заказ будет отправляться сразу. Но если клиент захочет заказать с другого устройства, либо другого браузера, то придется номер подтверждать вновь. Процедура бесплатная и никакие деньги за это с клиента не списываются.
И конечно же, есть система защиты, от попыток перебора паролей для верификации, количества запросов с одного IP, а так же при нескольких отменах подряд, номер блокируется и для разблокировки необходимо будет написать в техподдержку.
Созданный заказ через API отправляется к партнеру, который находит ближайшие к клиенту автомобиль, подходящий клиенту по параметрам и назначает водителю заказ. Обратно через API сайт получает статус выполнения заявки. Конечно, будут еще доработки, в частности, можно будет на карте видеть перемещение автомобиля, но это чуть позже.
Вся эта структура имеет внешнее API, правда, осталось доработать кое-какие мелочи, но там, в принципе, день работы и мобильное приложение сможет через API получать и передавать данные, необходимые для работы, в том числе просчитанную ориентировочную стоимость поездки.
Стоимость разработки составила чуть более 100 тыс. руб.
Все, что вы сейчас делаете, кроме прогнозируемой стоимости (это совсем не проблема), у нас уже есть на Таксовике. Если бы обратились к нам – выдали бы бесплатно виджет/API для расчета стоимости.
Кстати, проблема еще и в том, что лицензия Яндекс.Карт не позволяет делать расчеты удаленно на сервере, а затем эти данные использовать где-либо. Необходимо будет отображать карты на клиенте, иначе могут заблокировать.
Начнем с того, что ваша форма заказа — она далека от юзабилити. Вот к примеру, я ввожу улицу, дальше надо ввести номер дома, так вот, у меня можно сразу ввести номер дома, а у вас нужно еще и дополнительно пробел. Вроде как мелочь, но все же надо постараться делать сервис удобне, даже в мелочах.
Честно говоря, я совершенно не понял, к чему ваш сервис?
Что он дает человеку?
>Начнем с того, что ваша форма заказа — она далека от юзабилити.
Более того, она ужасна 🙂 Но у нас же есть API, которое позволяет клепать на его основе свои формы. Про недостатки нашей формы и всего сайта знаем. Скоро будем все переделывать основательно, осталось добавить в API некоторые методы по работе с отзывами.
>Честно говоря, я совершенно не понял, к чему ваш сервис?
>Что он дает человеку?
Ну, мы появились достаточно давно, когда еще не было всяких Яндексов, а рассчитать стоимость и сравнить разные предложения от таксопарков было невозможно…
Пользователям сервис нравится, т.к. у нас можно заказать такси, рассчитав заранее стоимость с учетом всевозможных наценок подачи за МКАД, округов и т.п. Кроме того, у нас таксопарки часто включают скидки, можно почитать честные отрицательные отзывы )
Вы не учитываете один важный нюанс) В вашей форме, при заказе, он подтверждается оператором. В моей же системе, прокладки в виде живых людей совершенно не участвуют) Созданный в форме заказ, через API отправляется к агрегатору, у которого в свою очередь робот находит ближайший к клиенту автомобиль с заданными параметрами из 200 таксопарков, подключенных к нему и назначает водителю заказ принудительно. Вся структура: 1. Клиент заказывает у меня авто. 2. Заказ через API отправляется агрегатору. 3. Робот агрегатора находит ближайший автомобиль и передает водителю заказ принудительно. 4. Водитель видит заказ, а клиенту приходит СМС, с данными назначенного автомобиля и телефон водителя. = в среднем, это занимает около 10-20 секунд. 5. Водитель приезжает к клиенту, клиент получает СМС о том, что водитель подъехал. 6. Среднее время подачи авто по Москве 5-10 минут. 7. Если заказ отправлен через сайт, то клиент в новом окне видит информацию о назначенном водителе. PS. Форма заказа авто в данный момент корректно работает только по Москве, другие города настроим чуть позже. Более того: 1. Единая тарификация у всех таксопарков. 2. Единые требования к автомобилям. К примеру, у вас: Евразия такси Бизнес (Scoda Superb, Toyota Corola, Ford Mondeo, Mercedes E-class) Цена вопрос от меня до Домодедово — 2800 руб.… Подробнее »
>В вашей форме, при заказе, он подтверждается оператором. В моей же системе, прокладки в виде живых людей совершенно не участвуют) Не совсем так) Последние полгода мы работали над системой автоматизации для таксопарков mGPS, в которой можно отслеживать машины на карте, выкидывать заказы на РБТ (в будущем и Таксик), назначать заказы водителям напрямую. То есть мы делаем систему, позволяющую любому таксопарку быть Убером. >2. Единые требования к автомобилям. К примеру, у вас: >Евразия такси Блин, этот таксопарк у нас в конце списка уже несколько лет в качестве балласта 🙂 Цены в аэропорты у нас фиксированные и они ниже, чем в том же Убере. В аэропорт с нами дешевле, чем с кем-либо. Что касается городских поездок, то иногда Убер дешевле. >И вопрос: сколько у вас занимает ожидание авто? >Повторюсь: я по Москве подаю авто в среднем за 5-10 минут. Трудно сказать, многие таксопарки работают через РБТ, кто-то через Таксик. Думаю, в среднем реальное время подачи будет примерно 10-15 минут. >Моя концепция в том, что совершенно пофигу у какого таксопарка какая цена. Есть единый тариф, который зависит от типа автомобилей: Стандарт — B класс, Это все хорошо ровно до тех пор, пока не придется поехать, например, за МКАД. >Но сам сайт — это… Подробнее »
Напиши, что собираешься делать с лицензионными ограничениями карт? Интересно же!
Вся работа зря получается…
Да, я в курсе, что лицензия Яндекс.Карт запрещает вообще использовать Яндекс.Карты для такси.
И если заблокируют, то подам сперва в Яндекс жалобу о том, что Яндекс.Такси нарушает лицензию Яндекс.Карт и если они не заблокируют карты для Яндекс.Такси, то затем подав в ФАС жалобу на Яндекс, о том, что они одним позволяют нарушать свою лицензию, а другим запрещают, а после, расскажу об этом на Гиктаймсе.
Отписав письмо на Гиктаймсе, попрошу своего программиста найти решение и вновь запустить Яндекс.Карты)
Ну а в самом крайнем случае, у меня есть OpenStreetMap.
И если заблокируют, то подам сперва в Яндекс жалобу о том, что Яндекс.Такси нарушает лицензию Яндекс.Карт и если они не заблокируют карты для Яндекс.Такси, то затем подав в ФАС жалобу на Яндекс, о том, что они одним позволяют нарушать свою лицензию, а другим запрещают, а после, расскажу об этом на Гиктаймсе.
Смелый шаг! Мы очень долго ломали голову, но так и не решились нарушать лицензию. Будем надеяться, что последствий не будет.
>Ну а в самом крайнем случае, у меня есть OpenStreetMap.
К сожалению, OpenStreetMap не позволяет строить маршрут с учетом пробок 🙁 Сервис Яндекс.Пробки отдельно данных не выдает.
Вариант легального использования пробок от Яндекса только один – рисовать карту на клиенте.
Можно еще использовать серверную реализацию Google.Maps, но бесплатная версия идет без пробок. Да и хуже пробки от гугла, чем от Яндекса.
Даже если Яндекс и заморочится что-то сделать со мной, максимум что он сделает — это заблокирует доступ к API Yandex Maps моему домену. Каких-то судебных претензий от него не будет, так как это им экономически нецелесообразно — чтобы с меня что-то получить, Яндекс сперва должен доказать, какой я ему причинил ущерб, а это в сфере интернет-технологий очень специфичная вещь и практически недоказуемая.
Ну заблокирует — хрен с ними. Напишу жалобу в ФАС, расскажу на Geektimes о том, какие сволочи Яндекс и о том, как Яндекс.Такси нарушает лицензионное соглашение Яндекс.Карт и Яндекс.Карты за это не блокируют Яндекс.Такси да и … что мне мешает прикрутить API к другогму домену и с помощью веб технологий вывести карты на своем текущем домене и продолжать работать?)
В соцсетях достаточно часто можно встретить жалобы на ваш сервис. Понятно, что вы агрегатор и услугу предоставляет сервис такси, но все же как работаете с негативом?
Здравствуйте.
Мне кажется, что негатив не о моем сервисе, а о других сервисах, которые с тем же наименованием, что и мой сервис.
Если я ошибаюсь, то буду признателен, если вы предоставите ссылки и тогда уже смогу ответить на ваш вопрос более точно.
Ну ты и ушлая гадость,Велибеков. Скажу, прикажу своему программисту.Там-сям выкручусь
людей считаешь за собственность-сквозит насквозь, все бы бизнес-педики такие.
Сделай сам код и сервис. Такие как ты не понимают,что доставвать бабки из кошелька -это самое простое,что возможно в этом мире.. А сам ты не сделаешь нихуя, кроме наглости. Наглость и есть твое оружие. А наглых надо посылать. А по хорошему, ставить на место. Жаль, что твой программист -продажный профи с недостатком человеческих качеств и этого не понимает. Прибыли не давать, с твоими предложениями денег- посылать и создавать самим.
Интересный коммент. Прежде чем одобрить его, проверил IP аффтара через спам-базы — не числится, а раз так, вынужден его пропустить.
……………………………………………………………………………………..
Прикольно)
Взяли да и обозвали меня гадостью)))
«Такие как ты не понимают,что доставвать бабки из кошелька -это самое простое,что возможно в этом мире..» — интересно, а такие как вы, не задавались вопросом, откуда в кошельке появляются деньги у таких как я?
Такое ощущение, что это комментарий какого-то обиженного жизнью школьника)