Внедрение геозависимости цен и условий доставки в интернет-магазине на Яндекс.Картах
- Цели внедрения геозависимости интернет-магазину
- Изменения на сайте
- Спрашиваем адрес доставки в начале при добавление первого товара в корзину
- Трудности, проблемы, решения
Мы любим и умеем решать сложные задачи. Подходим к делу ответственно и делаем всё так, чтоб заказчику было удобно с нами работать.
Майбокс — современный сервис по доставке японской и паназиатской кухни. География большая, скорость развития высокая, объем внедряемых IT-изменений колоссальный.
В 2015 году нами был разработан сайт mybox.ru, сразу после его запуска появился поток задач, который не заканчивается по сей день. Нас это очень радует, т.к. всегда приятно и интересно работать с умным клиентом.
В начале 2016 на сайте заработал конструктор блюд паназиатской кухни. Летом 2016 сайт стал адаптивным и получил API для работы с мобильными приложениями.
В конце 2016 года была проведена работа по оптимизации сайта, нагрузочное тестирование показало порог пропускной способности сайта.
Цели внедрения геозависимости интернет-магазину
Сайт mybox.ru позволяет заказать блюда с доставкой в 90 городах России. Эти города находятся в разных часовых поясах. Такой разброс городов повышает требования к сервису и IT-инфраструктуре. Нужно учитывать много мелочей: от учета ингредиентов на торговых точках до локального времени для ограничения приема заказов.Например:
- Обед. Час пик. Пробки. Вася хочет угостить свою подругу Машу блюдами паназиатской кухней. Сам Вася живёт на одном конце города, а Маша на другом. Вася заказывает еду с доставкой к Маше. Система должна принять верное решение, и выбрать торговую точку, которая может приготовить все блюда из заказа, расположенную максимально близко к Маше;
- Отшельник Никанор живёт по адресу “Старые Хлебеня, 119Ж”. Он делает заказ и вводит свой адрес. Сайт ничего не знает об этом адресе, его нет в КЛАДРЕ, однако система принимает заказ у Никанора и автоматически направляет его в колл-центр для уточнения адреса и способа доставки. Неподалёку от Хлебеней есть торговая точка, из которой можно получить заказ самовывозом;
- Из-за внезапного приземления марсиан развели мосты и пора запретить доставку в некоторые районы города.
Нужна система инструментов на сайте (для клиентов) и в бэк-энде. Одной из эволюционных ступеней в развитии сайта было внедрение КЛАДРа. КЛАДР позволил упростить оформление заказа, а также дал возможность автоматически распределять заказы по ближайшим торговым точкам.
КЛАДР очень хорош, однако он не дал возможность управлять зонами доставки (в нем нет данных по координатам домов, улиц, районов). Один город, одна зона. Такое управление нельзя назвать гибким.Пока конкуренты по телефону уточняют адрес каждого заказа, mybox осуществляет автоприёмку и доставку большей части заказов.
Так перед нами встала новые задачи:
- увеличить количество заказов принимаемых через “автоприёмку”;
- дать возможность гибко настраивать зоны: границы, стоимость доставки, время доставки, время приёма заказа и т.д.;
- всегда показывать на сайте актуальную информацию по зонам.
- снижение нагрузки на колл-центр;
- прозрачность работы сервиса и счастье клиента;
- значимое конкурентное преимущество, т.к. ни у кого такого нет.
Мы проанализировали сайты конкурентов и подобные сервисы, изучили возможные пользовательские сценарии, составили своё представление о возможном решении:
- администратор сервиса в учётной системе с помощью специально созданного графического редактора поверх карты города рисует многоугольник, задаёт настройки зон и сохраняет его;
- в учётной системе реализуется веб-сервис, готовый к высокой нагрузке и способный быстро отдавать многоугольник зоны по требованию сайта;
- на сайте делается механизм ввода адреса с подсказками улиц и домов, чтобы в максимальном количестве случаев пользователь выбирал свой адрес из списка, а не вводил его полностью; адрес конвертируется в координаты “долгота+широта”;
- на стороне учётной системы делается надёжный веб-сервис, которой по координатам определяет зону.
- Редактор позволяет создавать зоны, управлять ими, менять границы, время и стоимость доставки;
- Редактор не даёт одной зоне накладываться на другую;
- Зоны могут находится внутри друг друга.
Он запрограммирован на ReactJS. JS и HTML код редактора размещены на сайте, однако вызывается напрямую из учётной системы с помощью CEF – Chromium Embedded Framework. Результат сеанса работы конвертируется в JSON и зоны в виде координат углов многоугольников сохраняются в базу данных.
Изменения на сайте
Спрашиваем адрес доставки в начале при добавление первого товара в корзину
Добавляя первый товар в корзину, пользователь сообщает, как он хочет получить свой заказ: доставка или самовывоз. В зависимости от выбора сайт скрывает или показывает часть товаров. Например, если по указанному адресу не доставляются блюда паназиатской кухни, они не будут отображаться в меню.Сайт помогает пользователю ввести нужный адрес: после ввода первых символов, сайт отправляет их в Яндекс карты и ищет список похожих улиц в окрестностях города пользователя.
Введенный адрес автоматически передаётся на страницу оформления заказа, теперь пользователю не нужно тратить время на заполнение формы, он может быстро оформить и оплатить свой заказ!
Трудности, проблемы, решения
- Первый релиз формы ввода адреса включал одно поле для ввода улицы и дома, как в Яндекс.Такси. В это поле посетители писали всё, вплоть до кода домофона. От таких изменений нагрузка на колл-центр выросла. Мы переработали форму, разделив одно поле на два (улица и дом) и добавив третье для номера квартиры. Результат: нагрузка упала, все выдохнули;
- “3-я улица строителей дом 25 квартира 12”. В каждом городе есть улица Ленина, в некоторых, одноименная площадь или проспект. В Волгограде полный комплект, а ещё рядом есть посёлок Гумрак (в нём есть аэропорт) и своя улица Ленина. Так сложилось, что Гумрак с ул. Ленина, что Волгоград со своими Лениными находятся в одной зоне доставки. Когда в волгограде кто-то пишет “Лени....”, он может запросто выбрать улицу в другом городе. У яндекс.карт есть 2 метода, которые так или иначе возвращают подсказки:
- suggest(request[, options]) - Возвращает список адресов вида { displayName: "Мытищи, Московская область", value: "Россия, Московская область, Мытищи " }. Проблема в том, что область поиска автоматически увеличивается до региона. Т.о. Возвращаются ул. Ленина во всех городах и сёлах выбранной области. Хуже чем у нас только в подмосковном домодедово;
- Геокодер - возвращает координаты наиболее подходящего объекта. Принимает на вход любую строку и сам пытается понять, что ищет пользователь. Тоже классная штука, однако, при запросе Столето… (проспект Столетова) усердно возвращает аптеки доктор столетов;
- Проблему решили комбинацией запросов и анализом ответов на стороне сайта. В результате проб и ошибок получили алгоритм, который быстро находит улицы и дома в окрестностях пользователя;
- Нужно больше точек на карте. Зона доставки - сложный многоугольник, в котором могут быть дырки, например область внутри зоны, куда доставка невозможны (например режимный объект). Чем больше зон в одном городе, тем больше нужно точек для их описания. Браузер начинает сильно тормозить, когда на карте появляется несколько сотен. Когда и почему тормозит? Тормозить начинает при добавление новых точек или перемещение предыдущих, т.к. система просчитывает возможные пересечения зон и пытается уложить зоны так, чтоб зоны не накладывались друг на друга и между ними не образовывались дыры.
Мы получили компетенцию работы с коммерческим API яндекс карт, узнали его особенности, наступили на десяток грабель и готовы точно оценивать и решать подобные задачи.
Для справки: эта глубокая модернизация потребовала привлечения ~10 специалистов с трех сторон (особо стоит отметить фронтенд-разработчика Дмитрия Матюшечкина) и работы по координации 3 менеджеров на протяжении нескольких месяцев.
Оцените статью
26.12.2016
Понравилась статья?
Поделитесь ссылкой с друзьями и коллегами!
Статьи по теме
Мы работаем по одному из двух форматов:
- аренда команды (от 2 человек, не менее 3 месяцев);
- итерации с фиксированной ценой (1-3 месяца длительностью).
ИНТЕРВОЛГА предоставляет:
- регулярные онлайн-планерки с заказчиком;
- квалифицированных специалистов;
- организованную команду (находятся в одном помещении, что упрощает решение рабочих вопросов);
- полную прозрачность и регулярность отчетов о результатах.
Ключевые услуги:
- нагруженный интернет-магазин;
- личный кабинет;
- оптовые продажи — B2B-платформа;
- маркетплейс;
- технический аудит сайта;
- Битрикс24 — корпоративные HR-порталы;
- Битрикс24 — построение CRM-системы;
- Битрикс24 — личные кабинеты сотрудников;
- Битрикс24 — аудит портала;
- 1С — интеграция с другими системами;
- 1С — доработка системы;
- маркетинг — комплексное интернет-продвижение;
- маркетинг — продвижение для B2B.
Хотите получать лучшие статьи от INTERVOLGA раз в месяц?
Подпишитесь на рассылку — спамить не будем