Разработка агрегатора автосервисов
для техобслуживания
Как сделать удобный сервис для записи на техобслуживание c умным поиском по автомастерским и личными кабинетами для мастеров и клиентов на React и Next.
О проекте
Garage.co.uk — это агрегатор автосервисов из Великобритании, где хозяевам авто предлагается быстро получить квалифицированный ремонт или полное техобслуживание по подходящей цене в одной из мастерских, зарегистрированных в сервисе. Владельцы Garage зарабатывают на комиссионных процентах, взимаемых с каждой оплаты услуг мастерской.

Помимо поиска по мастерским Великобритании, Garage предлагает быстро уточнить статус прохождения техосмотра (MOT) и уплаты транспортного налога, рассчитать стоимость автомобиля и проверить соответствие автомобиля лондонской экологической норме ULEZ.
Талон техосмотра MOT
Одна из основных услуг — это полный технический осмотр автомобиля, в Британии известный как MOT, который должен быть пройден спустя три года после покупки автомобиля, а впоследствии проводиться ежегодно. Сделать это можно в любой сертифицированной автомастерской или в салоне, где был куплен автомобиль.
Зона сверхнизких выбросов ULEZ
С 2019 года в Великобритании действует закон, ограничивающий въезд в центральную зону Лондона автомобилей, работающих на бензиновых и дизельных двигателях. Эта зона называется ULEZ (Ultra Low Emission Zone, или зона сверхнизких выбросов). Целью инициативы было снижение в центре города уровня оксидов азота, входящих в состав выхлопных газов.

С 23 августа 2023 года с владельцев автомобилей, не соответствующих новым экологическим стандартам, собирают пошлину в размере 12,5 фунтов в день за проезд через зону ULEZ. Наоборот же, освобождает от пошлины соответствие следующим стандартам:

  • Euro 3 — для двух- и трёхколесных мотоциклов, мопедов и квадрициклов,
  • Euro 4 — для бензиновых автомобилей, фургонов и микроавтобусов,
  • Euro 6 — для дизельных машин, грузовиков и автобусов.

Чтобы узнать, соответствует ли автомобиль этому стандарту или нет, системе нужно сообщить регистрационный номер машины. Мы разработали API, через который сервис подключается к государственной базе данных с номерами всех авто и проверяет класс безопасности автомобиля.
Роли пользователей сервиса
Garage объединяет в себе три приложения — для владельцев автомастерской, владельцев автомобилей и администраторов сервиса.
Владелец автомастерской
Сервис помогает автомастерским расширить свою клиентскую базу. Но перед этим владельцам нужно аккуратно заполнить профиль мастерской данными — это сыграет свою роль, когда хозяева авто будут фильтровать мастерские по нужным параметрам. В профиле указана и самая общая информация в виде адреса, телефона и режима работы, и технические данные — какие марки машин обслуживаются и какие услуги можно получить.
Самая массивная и ответственная работа в рамках оформления профиля мастерской — это составление прейскуранта на все основные и дополнительные услуги.
Интерфейс интерактивен благодаря JavaScript-библиотеке React. Как это работает, видно на вкладке Services. Когда мы впервые вводим или меняем такие параметры, как ставка (Service Labour Rate) и цену литра масла (Standard Oil), стоимость замены масла, в нижней части страницы рассчитывается в реальном времени без перезагрузки страницы. Также можно увидеть, как пересчитывается стоимость замены масла на двигателях объёмом 1201-1500 cc при изменении длительности замены масла для двигателей этого же типа.

Для веб-приложений на React характерно, что часть контента приходит на сайт с сервера по запросу через JavaScript. Т.к. JavaScript не индексируется поисковыми роботами, у React-приложений всё плохо с поисковой оптимизацией. Чтобы решить эту проблему, мы используем фреймворк Next.js, который частично отрисовывает интерфейс на стороне сервера и передаёт его в браузер до того, как успевают прийти JavaScript-файлы, чтобы роботы успели его просканировать.
Владелец гаража может создать и сохранить несколько прейскурантов, но мы сделали так, чтобы система находила противоречия между ними и, например, не давала сохранить два прейскуранта с услугой MOT (class 4) для одного и того же автомобиля. Это лишь одно из множества возможных пересечений, которые система может отследить.

Основная информация о заявках, денежных поступлениях и комиссиях отображается на панели управления мастерской. Комиссия взимается первого числа каждого месяца.
Если система видит, что мастерская принимает заказы, но с её аккаунта не списывается ежемесячный процент, она отправляет её владельцу письмо с просьбой проверить правильность платёжных данных. На игнорирование замечания система ответит автоматической блокировкой мастерской.
К сервису подключены календари Google, Outlook и Apple, с которыми синхронизированы заказы.
Карточка автомастерской.
Владелец автомобиля
В личном кабинете автовладельца хранятся данные о его автомобилях, пройденных диагностиках (Inspections), оценки заявок на услуги разных мастерских (Quotes), заявки на работу с конкретной проблемой (Bookings) и отзывы (Reviews), а также вкладка для оформления заявки техподдержке онлайн-сервиса.
Администратор
Администратору Garage доступны для просмотра аккаунты всех мастерских и их клиентов. Также он может:
  • редактировать информацию о мастерской,
  • блокировать и удалять аккаунты мастерских и клиентов,
  • добавлять мастерские,
  • проверять жалобы мастерских на оставленные отзывы.
Оформление заявки на ТО
С помощью Garage любой автовладелец Британии может найти ближайшие мастерские, которые работают с его маркой автомобиля, и забронировать время на проверку двигателя, диагностику, ремонт, доставку автомобиля до автомастерской и обратно и т. д.
Мастерские можно сортировать по рейтингу, цене, расстоянию. Несколько автомастерских можно сравнить между собой и выбирать, какая ближе или о какой лучше отзываются.
Ниже мы опишем три пути создания заявки на получение услуги.
Заявка на техосмотр с фиксированной ценой (MOT)
Чтобы начать заказ, автовладелец указывает в форме на главной странице регистрационный номер автомобиля, почтовый индекс и сервис, который хочет пройти.
После нажатия на кнопку Compare Prices Instantly на экран выводятся мастерские, по умолчанию отсортированные по релевантности. На порядок мастерских влияет специальная формула, которая учитывает средний рейтинг и расстояние до них. В боковом меню можно отфильтровать мастерские по различным параметрам. В подходящей мастерской пользователь накликивает, какие дополнительные услуги хотел бы получить, жмёт кнопку Book Now и переходит на страницу подтверждения заказа. Там ему остаётся назначить дату прохождения осмотра и уточнить личные данные.

Полный техосмотр — это услуга с фиксированной стоимостью, что отражено в карточке.
Мастерской приходит оповещение о том, что создана страница с новой заявкой.  
Заявку можно либо подтвердить, либо отклонить.
Теперь в профилях автовладельца и мастерской есть таймлайны, отражающие этапы, которые проходит заявка.
А также есть чат для связи. Чат работает по протоколу Mercure с использованием стандарта Server-sent events, что позволяет хранить переписку на сервере клиента.
После завершения работы мастерская выставляет клиенту счёт.
Клиент может оставить отзыв, а мастерская может оспорить отзыв по одной из причин с помощью опции Flag Review.
Завершённая заявка сохраняется во вкладке Bookings на стороне автовладельца и мастерской. Информацию о заказе всегда можно посмотреть повторно.
Заявка на отдельную услугу без указания подробностей
Теперь мы закажем конкретную услугу (например, ремонт коробки передач, Gearbox Repairs). Но суть нашего обращения — не в записи в автомастерскую, а в прохождении диагностики и оценке работы.
Сервис запрашивает у нас больше деталей о работе. Отказываемся (No, thanks).
Теперь в карточке, в отличие от прошлого сценария, указана почасовая стоимость работы (/hr).
На странице подтверждения заявки и в строчке Job Type в карточке заявки указано, что клиент запросил диагностику. Её можно пройти либо в мастерской, либо на дому, если мастерская предлагает такую услугу.
После того, как клиент подтвердил заявку, в мастерскую приходит запрос.

Статусы в таймлайнах заявки на диагностику также отличаются от тех, что были в заявке на техосмотр.
Когда специалисты мастерской закончили изучать заявку, они готовы дать оценку работе и отправить её клиенту.
Клиент принимает заявку, и работа продолжит идти тем же ходом, что и в первом сценарии.
Заявка на отдельную услугу с указанием подробностей
Отличие от предыдущего сценария в том, что на этапе оформления заявки на отдельную услугу клиент мастерской соглашается дать дополнительную информацию о своей проблеме. Для этого ему предлагают заполнить форму, приложить к ней фото и видео.
Впоследствии эта заявка рассылается по всем мастерским в радиусе 10 миль, а их оценки приходят автовладельцу на почту. В оценке описана проблема клиента, выставлена фиксированная цена или сказано о необходимости пройти осмотр. Также мастерская может отклонить заявку.
Заявка падает клиенту во вкладку Quotes со статусом Pending.
По нажатию на кнопку просмотра заявок View Quotes он попадает на экран с мастерскими, рассматривающими его заявку. Таймер в верхней части страницы отсчитывает двое суток на рассмотрение, но, как мы видим, одна наша тестовая мастерская уже справилась.
Имейл-кампании
Вся коммуникация с пользователями построена через Customer.io — CDP-платформу, которая использует данные о поведении клиента и правила для отправки сообщений пользователям.

Используется для сборки и отправки имейл-рассылок и отдельных писем, среди которых:

  • уведомления об изменении статуса заказа,
  • сообщения об особенностях работы с сервисом,
  • кампании по допродажам,
  • напоминания об истечении срока прохождения техосмотра или страховки,
  • напоминания о не до конца заполненных формах с возвратом к заполнению,
  • запрос отзыва у конкретного автовладельца,
  • письмо со ссылкой для сброса пароля.

Также сервис фиксирует статусы письма — было ли оно отклонено почтовым сервером в результате сбоя, доставлено или прочитано, была ли нажата ссылка или кнопка в письме, оставлен ли отзыв.

Письма можно собирать тремя способами:

  • полностью на HTML;
  • через сниппеты, где хэдер, футер и другие блоки пишутся на HTML отдельно и потом могут переиспользоваться в других письмах;
  • через шаблоны, которые создаются в Customer и потом используются в нём же, но через более простой текстовый редактор.

Мы использовали первый и второй способы.

Набор письма через HTML-код
Создание письма сниппетами методом drag`n`drop
Rich editor c лейаутом
Обзор email-рассылки
Флоу email-рассылки
Настройка сообщения в email-рассылке
Информация о сроках напоминания хранится на Symfony-сервере. Когда на пользователя или их группу нужно запустить рассылку, сервер отправляет событие в Customer.io, который регулирует весь процесс в дальнейшем.

Для рассылки SMS используется сервис Twillo, у которого с Customer.io настроена прямая интеграция.
Заключение
Работа над проектом продолжается.
Подпишитесь на рассылку
Мы регулярно выпускаем новые статьи и кейсы
Отправляя эту форму, вы даёте согласие на обработку персональных данных ООО “Дроп Софт”
в целях обработки заявки и обратной связи.