Задача
Офлайновый бизнес зарабатывал пятью направлениями, а в интернете держался на одном — продаже деталей. Остальное упиралось в форму «оставьте заявку» и жило дальше в переписке менеджера.
Каждое требование при этом ломало стандартную модель магазина:
- покупатель ищет не «бампер», а бампер, который встанет на его Wrangler конкретного года, — значит, подбор по автомобилю должен работать во всех разделах, а не на одной странице;
- аренда продаёт не штуку со склада, а интервал времени: в паре «товар и остаток» такого понятия просто нет;
- у постоянных клиентов свои цены, причём не только на товары, но и на работы сервиса и на заезды;
- витрина говорит на трёх языках, включая арабский справа налево, и считает в дирхамах с 5% НДС;
- всё то же самое должно работать в мобильном приложении, а не быть его урезанной копией.
Решение
Подбор по автомобилю. Совместимость хранится не строкой в описании, а тремя многозначными атрибутами товара — марки, модели, годы. Один комплект тяг стабилизатора числится сразу за поколениями Wrangler JK, JL, Gladiator JT и версией 392 Rubicon и закрывает почти два десятка модельных годов. Из этого вырастает всё остальное: в слоёной навигации категории появляются фильтры Makes, Models и Years рядом с ценой и брендом, на карточке — вкладка Compatibility и кнопка проверки под конкретную машину, а выбранный автомобиль не сбрасывается при переходе между категориями. Селектор «марка — модель — год» связан каскадом: марка перерисовывает модели, модель ограничивает годы. Марки не заканчиваются на Jeep: в справочнике есть Land Rover, BMW, Honda, Audi, Nissan и другие — сервис работает шире профильного бренда.
Гараж. Автомобиль сохраняется в личном кабинете, и дальше витрина работает от него: каталог фильтруется сам, карточка сразу отвечает «подходит / не подходит», а при выборе сервисной услуги машина подставляется в заявку. Гараж хранит несколько машин и переключает подбор между ними.
Аренда, написанная с нуля. Самая крупная собственная разработка проекта. Форма спрашивает дату и время выдачи, дату и время возврата, точку выдачи и — отдельным переключателем «вернуть туда же» — точку возврата. По интервалу модуль отдаёт список свободных машин с типом кузова, коробкой, кондиционером, числом пассажиров и вместимостью багажа, а цену показывает тремя строками: суточный тариф, обязательная надбавка и итог за период. Пересечение броней проверяется по времени, а не по датам, иначе две выдачи в один день конфликтуют. Возврат в другую точку меняет то, где машина доступна для следующей брони. Время помечено дубайским: арендатор часто бронирует из другой страны.
Членство как тип группы покупателей. Технически это не баннер со скидкой: покупка членства переводит клиента в отдельную группу покупателей, и дальше правила цен применяются сами — в каталоге, в корзине и на карточке, где рядом с обычной ценой стоит цена участника. Истечение членства возвращает клиента в обычную группу без ручного вмешательства, а уже оформленные заказы сохраняют цены на момент покупки.
Одна корзина на пять типов продажи. Развилка вынесена в жизненный цикл заказа: для товара резервируется остаток, для аренды — интервал в календаре парка, для заезда — место в группе на дату. Отмены разведены так же: занятую дату нужно освободить заранее, поэтому у аренды и заезда свои сроки, а не общая политика возврата товара.
Оплата. Локальный шлюз TELR с картами, Apple Pay и Google Pay: дорабатывали поведение при возврате со страницы оплаты и сопоставление статусов транзакции со статусами заказа. На карточке отдельно считается рассрочка Tabby — покупатель видит помесячный платёж и четыре беспроцентные части ещё до корзины, и для лифт-комплекта это влияет на решение.
Арабская витрина. Не переводчик поверх интерфейса, а полноценное представление магазина: зеркалятся шапка, меню, слоёная навигация, плитки товаров и блок цены, суммы выводятся арабско-индийскими цифрами. Артикулы и англоязычные названия брендов остаются как есть — по ним и ищут деталь.
Приложение. iOS и Android работают поверх той же Magento через REST API и повторяют сценарии витрины: подбор, гараж, корзину, сервис, аренду, заезды и членство.
Результат
Пять направлений бизнеса продаются с одной витрины и оформляются одной корзиной: покупатель кладёт рядом деталь, её установку и выезд в дюны, а менеджер видит это одним заказом вместо трёх писем.
Подбор по автомобилю снял главный источник возвратов и переписки: деталь либо подходит машине из гаража, либо честно об этом говорит. Сервисный центр получил витрину без фильтров и сортировок — здесь выбирают не по цене, а по своей машине.
Аренда перестала быть таблицей у менеджера: занятость парка считается по интервалам, повреждения фиксируются при выдаче и переносятся в договор, а подтверждённая бронь попадает в общий заказ и в личный кабинет клиента.
Программа членства из обещания превратилась в механику: участники получили свои цены на товары, работы и заезды, кешбэк и приоритетную запись, а партнёры делового сообщества — канал к платёжеспособной аудитории с фильтром по направлению, городу и размеру скидки.
Мобильные приложения под iOS и Android работают с тем же каталогом, теми же ценами группы и той же историей заказов, что и сайт.