Цели и задачи проекта
Разработка нового сервиса «Вызов мастера», позволяющего пользователям заказывать услуги по установке, техническому обслуживанию и ремонту отопительного, сантехнического оборудования, оборудования для вентиляции и кондиционирования, а также услуги ремонта и отделки помещений. Помимо данной задачи, новый сервис должен предоставлять пользователю функционал постановки на учет оборудования, купленного как в интернет-магазине заказчика, так и у сторонних поставщиков. Сервис выдает пользователю рекомендации по улучшению и регламентному техническому обслуживанию поставленного на учет оборудования.
Выполненные работы
Функционал сервиса является достаточно масштабным и трудоемким, в связи с этим реализацию было решено разделить на три этапа:
- Реализация MVP версии сервиса «Вызов мастера». MVP версия предоставляет пользователю функционал заказа интересующей его услуги, дает возможность работать со списком заказов, а также возможность взаимодействия с персоналом заказчика (консультации, заказ услуги, которой нет в каталоге, заявка на подбор специалиста);
- Расширение функционала MVP версии до полноценного интернет магазина;
- Разработка сервиса «Паспорт домохозяйства» — сервис постановки на учет оборудования и рекомендаций по улучшению и регламентному техническому обслуживанию.
Согласно заданию заказчика, на всех этапах разработки новых сервисов необходимо предусмотреть аспекты:
- Единую систему авторизации — при авторизации пользователя на одном из сервисов он должен быть авторизован на других;
- Несмотря на то, что каждый сервис является автономным по функционалу (имеет собственную корзину, собственные заказы и т.д.), каждый сервис должен иметь информацию о других сервисах;
- Каждый сервис должен находиться на своем поддомене первого уровня.
В рамках разработки нового сервиса «Вызов мастера»:
- Реализована многосайтовость на разных доменах (интернет-магазин и разработанный сервис «Вызов мастера» находятся на поддоменах первого уровня). Оба сервиса работают на одной БД, это решает задачу кроссервисного доступа к данным (без лишних синхронизаций) и дает менеджерам удобство в администрировании сервисов;
- Была реализована единая система авторизации - авторизация/разлогинивание на одном из сервисов приводит к соответствующим операциям на другом сервисе;
- Разработана MVP версия сервиса «Вызов мастера». Функционал сервиса:
- Поиск требуемых услуг в каталоге услуг;
- Многоступенчатая процедура оформления заказа услуги
- Во время заказа услуги, в случае если телефон пользователя зарегистрирован в системе, происходит автоматическая авторизация, в противном случае происходит регистрация и авторизация пользователя. Регистрация и авторизация производятся в случае успешного подтверждения номера телефона посредством SMS-кода подтверждения;
- При заполнении адреса места оказания услуги реализована система подсказок за счет интеграции с Api Dadata;
- Данные о мастерах-исполнителях услуг берутся из Api заказчика;
- После оформления заказа данные о заказе уходят в Api заказчика (помимо интеграции с 1С). Данная процедура нужна для того, чтобы корректировать расписание мастеров-исполнителей;
- Авторизация (на всех сервисах);
- Функционал просмотра и управления заказами представлен страницами списка заказов и детальной страницей заказа. Находясь в сервисе «Вызов мастера» пользователь может управлять не только заказами данного сервиса, но и заказами интернет-магазина;
- Реализована обратная связь с пользователем (заказ консультации, заказ услуг, которых нет в каталоге услуг, заявка на подбор специалиста). Данный инструментарий интегрирован с Битрикс24.
Интеграции со сторонними сервисами, выполненные в процессе разработки сервиса «Вызов мастера»:
- Интеграция с Api Dadata
- Интеграция с Api Dadata «Автозаполнение при вводе «Подсказки» на стороне фронтенда;
- Интеграция с Api Dadata «Разбор адреса из строки «Стандартизация» на стороне бэкэнда;
- Интеграция с сервисом отправки sms-сообщений sms.ru;
- Интеграция с Api заказчика — получение данных о мастерах-исполнителях, отправка данных о пользователе и заказе после оформления заказа;
- Интеграция с Битрикс24. Все данные (включая графические) получаемые от пользователя в фичах, отвечающих за обратную связь с пользователем отправляются в Битрикс24 клиента.
Технические аспекты и стек технологий, использующийся при создании сервиса «Вызов мастера»:
- Проект разработан на основе CMS Битрикс, редакция «Бизнес»;
- Сервис «Вызов мастера» разработан как SPA-приложение;
- Сервис разработан с жесткой дифференциацией на фронтенд и бэк-енд составляющую, взаимодействующую между собой посредством Api-эндпоинтов, контроллеров и сервисов (бэк-енд является Api для фронтенда);
- При проектировании бэк-енда реализован паттерн проектирования MVC. Реализована единая точка входа в приложение;
- Роутинг реализован библиотекой, разработанной на основе библиотеки symfony/routing;
- Бизнес-объекты сайта описаны с помощью классов и позволяют работать с ними по заданному интерфейсу без необходимости «помнить» имена полей, как при «классическом» подходе с Битрикс;
- Реализован уровень абстракции над выборками данных (read-only ORM), благодаря которому сохраняется привычная возможность выборки данных через полный аналог getList, но при этом:
- Возвращается список бизнес-объектов, а не ассоциативных массивов;
- Данные всегда загружаются лениво и массово, за счёт чего количество запросов минимизируется;
- Фронтенд реализован с использованием React;
- Основной язык разработки фронтенда - TypeScript;
- Стилизация реализована по принципу CSS in JS с использованием styled-components;
- Взаимодействие с Api (бэкендом) реализовано с использованием Axios;
- На фронтенде используется features-first подход;
- Для сборки фронтенд кода используется Webpack.