Сервис «Вызов мастера»

Посмотреть сайт

Цели и задачи проекта

Разработка нового сервиса «Вызов мастера», позволяющего пользователям заказывать услуги по установке, техническому обслуживанию и ремонту отопительного, сантехнического оборудования, оборудования для вентиляции и кондиционирования, а также услуги  ремонта и отделки помещений. Помимо данной задачи, новый сервис должен предоставлять пользователю функционал постановки на учет оборудования, купленного как в интернет-магазине заказчика, так и у сторонних поставщиков. Сервис выдает пользователю рекомендации по улучшению и регламентному техническому обслуживанию поставленного на учет оборудования.
 

Выполненные работы

Функционал сервиса является достаточно масштабным и трудоемким, в связи с этим реализацию было решено разделить на три этапа:

  1. Реализация MVP версии сервиса «Вызов мастера». MVP версия предоставляет пользователю функционал заказа интересующей его услуги, дает возможность работать со списком заказов, а также возможность взаимодействия с персоналом заказчика (консультации, заказ услуги, которой нет в каталоге, заявка на подбор специалиста);
  2. Расширение функционала MVP версии до полноценного интернет магазина;
  3. Разработка сервиса «Паспорт домохозяйства» — сервис постановки на учет оборудования и рекомендаций по улучшению и регламентному техническому обслуживанию.

Согласно заданию заказчика, на всех этапах разработки новых сервисов необходимо предусмотреть аспекты:

  1. Единую систему авторизации — при авторизации пользователя на одном из сервисов он должен быть авторизован на других;
  2. Несмотря на то, что каждый сервис является автономным по функционалу (имеет собственную корзину, собственные заказы и т.д.), каждый сервис должен иметь информацию о других сервисах;
  3. Каждый сервис должен находиться на своем поддомене первого уровня.

В рамках разработки нового сервиса «Вызов мастера»:

  1. Реализована многосайтовость на разных доменах (интернет-магазин и разработанный сервис «Вызов мастера» находятся на поддоменах первого уровня). Оба сервиса работают на одной БД, это решает задачу кроссервисного доступа к данным (без лишних синхронизаций) и дает менеджерам удобство в администрировании сервисов;
  2. Была реализована единая система авторизации - авторизация/разлогинивание на одном из сервисов приводит к соответствующим операциям на другом сервисе;
  3. Разработана MVP версия сервиса «Вызов мастера». Функционал сервиса:
    1. Поиск требуемых услуг в каталоге услуг;
    2. Многоступенчатая процедура оформления заказа услуги
      1. Во время заказа услуги, в случае если телефон пользователя зарегистрирован в системе, происходит автоматическая авторизация, в противном случае происходит регистрация и авторизация пользователя. Регистрация и авторизация производятся в случае успешного подтверждения номера телефона посредством SMS-кода подтверждения;
      2. При заполнении адреса места оказания услуги реализована система подсказок за счет интеграции с Api Dadata;
      3. Данные о мастерах-исполнителях услуг берутся из Api заказчика;
      4. После оформления заказа данные о заказе уходят в Api заказчика (помимо интеграции с 1С). Данная процедура нужна для того, чтобы корректировать расписание мастеров-исполнителей;
  4. Авторизация (на всех сервисах);
  5. Функционал просмотра и управления заказами представлен страницами  списка заказов и детальной страницей заказа. Находясь в сервисе «Вызов мастера» пользователь может управлять не только заказами данного сервиса, но и заказами интернет-магазина;
  6. Реализована обратная связь с пользователем (заказ консультации, заказ услуг, которых нет в каталоге услуг, заявка на подбор специалиста). Данный инструментарий интегрирован с Битрикс24.

Интеграции со сторонними сервисами, выполненные в процессе разработки сервиса «Вызов мастера»:

  1. Интеграция с Api Dadata
    1. Интеграция с Api Dadata «Автозаполнение при вводе «Подсказки» на стороне фронтенда;
    2. Интеграция с Api Dadata  «Разбор адреса из строки «Стандартизация» на стороне бэкэнда;
  2. Интеграция с сервисом отправки sms-сообщений sms.ru;
  3. Интеграция с Api заказчика — получение данных о мастерах-исполнителях, отправка данных о пользователе и заказе после оформления заказа;
  4. Интеграция с Битрикс24. Все данные (включая графические) получаемые от пользователя в фичах, отвечающих за обратную связь с пользователем отправляются в Битрикс24 клиента.

Технические аспекты и стек технологий, использующийся при создании сервиса «Вызов мастера»:

  1. Проект разработан на основе CMS Битрикс, редакция «Бизнес»;
  2. Сервис «Вызов мастера» разработан как SPA-приложение;
  3. Сервис разработан с жесткой дифференциацией на фронтенд и бэк-енд составляющую, взаимодействующую между собой посредством Api-эндпоинтов, контроллеров и сервисов (бэк-енд является Api для фронтенда);
  4. При проектировании бэк-енда реализован паттерн проектирования MVC. Реализована единая точка входа в приложение;
  5. Роутинг реализован библиотекой, разработанной на основе библиотеки symfony/routing;
  6. Бизнес-объекты сайта описаны с помощью классов и позволяют работать с ними по заданному интерфейсу без необходимости «помнить» имена полей, как при «классическом» подходе с Битрикс;
  7. Реализован уровень абстракции над выборками данных (read-only ORM), благодаря которому сохраняется привычная возможность выборки данных через полный аналог getList, но при этом:
    1. Возвращается список бизнес-объектов, а не ассоциативных массивов;
    2. Данные всегда загружаются лениво и массово, за счёт чего количество запросов минимизируется;
  8. Фронтенд реализован с использованием React;
  9. Основной язык разработки фронтенда - TypeScript;
  10. Стилизация реализована по принципу CSS in JS с использованием styled-components;
  11. Взаимодействие с Api (бэкендом) реализовано с использованием Axios;
  12. На фронтенде используется features-first подход;
  13. Для сборки фронтенд кода используется Webpack.

Итоги разработки проекта

В дальнейшем планируется развитие проекта:

  1. Расширение функционала MVP версии сервиса «Вызов мастера» до полноценного интернет магазина, отвечающего за продажу услуг, в т.ч. комплексных услуг;
  2. Разработка сервиса «Паспорт Домохозяйства», позволяющего пользователю ставить на учет оборудование и получать рекомендации по улучшению и регламентному техническому обслуживанию поставленного на учет оборудования.

Похожие проекты