Сотрудничество Inventive Retail Group и Интаро началась в 2016 году. На протяжении 8 лет команда Интаро поддерживает парк проектов компании. Совместно с внутренней и внешней командой мы развиваем интернет-магазин re-store.ru — один из самых популярных и посещаемых магазинов в России.
В 2023 году сеть restore: объявила о изменении концепции и расширении ассортимента товаров. Компания перешла из монобрендового в мультибрендовый формат: теперь, помимо продукции Apple, в магазинах представлен широкий ассортимент электроники и бытовой техники.
Перед нами стояла задача оптимизации и повышения отказоустойчивости проекта. Рассказываем, как команда Интаро развивает интернет-магазин restore:
Высоконагруженный интернет-магазин должен быть готовым к пиковым нагрузкам, иметь легко масштабируемую архитектуру. В качестве решения, специалистами Интаро были предложены и выполнены следующие задачи:
1. Внедрение фреймворка Symfony.
Подключение Symfony в Битрикс-проект имеет ряд преимуществ:
Symfony предоставляет широкий набор компонентов, которые будут полезны в проекте (например, компоненты для работы с базами данных, HTTP-запросами, формами и т.д.).
Удобство при работе с API. Symfony имеет мощную систему маршрутизации, что делает работу с API проще и удобнее.
Качество кода. Symfony признана как одна из лучших фреймворков на PHP, благодаря чему используется многими крупные компании.
Современные технологии кодирования. Полноценное использование ООП, DI, autowire, сервис-контейнеры, удобное хранение и настройка различных конфигураций и логирования.
Поддержка стандартов. Symfony следует современным стандартам PHP, это позволяет использовать библиотеки и инструменты других разработчиков.
Битрикс продолжает использоваться как привычная CMS-система, интегрированная в контур архитектуры Inventive Retail Group. Задачи, касающиеся администрирования сайта, управления контентом, хранения данных, остаются на стороне CMS. Таким образом, мы получаем гибридную архитектуру: используем преимущества Symfony и сохраняем лучшие практики от Битрикс.
Процесс внедрения
Работа началась с подготовки технического задания совместно с внутренней командой Inventive Retail Group. Далее разработчики анализировали вводные и запрашивали дополнительные уточнения.
2. Реализация единой системы размеров изображений.
Какую проблему решили: Так как баннеры являются точкой перехода в каталог и отражают позиционирование бренда, мы внедрили единые правила для всего баннерного контента. Теперь процесс подбора баннеров оптимизирован: стало легче подбирать баннеры, администрировать и управлять.
Мы предложили единую логику для управления баннерами: реализовали отдельный инфоблок, разделы в котором отвечают за управление соответствующим блоком баннеров на одной из страниц, а элементы — сами баннеры.
Каждый блок может быть представлен неограниченным числом баннеров, каждая строка блока может быть сформирована 1, 2 или 3 баннерами - большим, средними и маленькими, соответственно. Для каждого баннера есть обязательные поля для заполнения, требования к формату, возможность настроить сортировку и включить в подборку.
3. Разработка нового функционала корзины.
Перед стартом работ необходимо было проанализировать состояние текущей архитектуры. На проекте отсутствовала документация, поэтому мы подключили back-end разработчика, который давно работает на проекте — для описания действующего функционала. В результате получилось определить, какие участки кода требуют оптимизации, какие могут быть использованы в новой архитектуре в текущем виде, и какие потребуется написать с нуля. Продумали, как лучше осуществить переход на Symfony с минимальными затратами времени. Декомпозировали задачи, чтобы была возможность вести работы одновременно по нескольким направлениям (с нашей стороны была команда из нескольких бэкенд-разработчиков). Также было важно своевременно и итерационно отдавать фронту подзадачи на интеграцию. Это позволило быстрее выйти на этап тестирования и приблизить дату релиза.
Разработку начали с базовой архитектуры корзины:
FastService — подсистема коробочной версии RetailCRM, которая отвечает за расчет корзины для сайта —акционные механики, промокоды, управление способами оплаты и доставками, интеграция с службами доставки
Базовый функционал, который есть практически на любом сайте, был реализован в самой первой итерации. Далее велись остальные работы по оптимизации корзины
Контактные данные клиента
Проверили работоспособность текущих методов авторизации
Сделали проверку на наличие клиента в базе
Реализовали возможность оформления заказа для неавторизованных пользователей
Внедрение возможности сохранения введенных пользователем данных на случай, если он уйдет со страницы и вернется обратно
После того, как клиент вводит номера телефона, должна сразу осуществляться проверка его наличия в базе данных. Если номер был найден в базе, то выводится соответствующий информер.
В случае, если пользователь не был найден в базе данных, выводится информер с текстом о том, что есть возможность регистрации.
4. Сервисные программы
Помимо дистрибьюции товаров, re:store оказывает сервисную поддержку для покупателей. Поддержка доступна для определенных товаров и участвует в расчетах общей стоимости корзины. Были подключены наши наработки, после этого сервисные программы заменены на новые.
5. Механика оформления части товаров.
Оплаты и доставки. Теперь в корзине есть возможность отметить чекбоксами товары, которые пользователь хочет приобрести. При изменении состояния чекбоксов корзина пересчитывается с учетом акционных механик и сервисных программ. Товары, у которых была снята активность, остаются в корзине, чтобы их можно было оформить позже.
Постаматы. Текущий метод работы с постаматами переписан на Symfony. Также добавлены другие интегрированные сервисы - Сберлогистика и СДЭК. Реализован новый API-метод для расчета тарифов постамата.
Похожие товары. Разработан новый API-метод для получения похожих товаров в корзине. Ранее такая возможность была только в карточке товара.
Быстрый заказ через корзину. Логика быстрого заказа была доступна в карточке и каталоге и ранее. Теперь логика быстрого заказа учитывает механику частичного оформления товаров: при клике на кнопку "заказ в 1 клик" товар добавляется в корзину. При этом снимается активность с других товаров и сразу происходит переход к оформлению товара.
Электронные подарочные сертификаты. Был выполнен рефакторинг и переход на Symfony. Добавлен функционал оформления электронных подарочных сертификатов на сайте: “отправить самому себе”, «несколько получателей», оформление заказа от имени юридического лица с последующей оплатой по счету.
Скидка при онлайн оплате. Переписана боевая логика под Symfony. В зависимости от вида доставки - самовывоз (по каждому из магазинов в отдельности), экспресс-доставки или пикпоинт, рассчитывается размер скидки для корзины.
1С Маркетинговые акции. Переписана боевая логика под Symfony, составлена матрица акционных механик. Так как restore проводит много акций, важно учитывать все возможные комбинации.
Mindbox. Переписана боевая логика и выполнен рефакторинг текущего функционала. Доработаны API-методы: возможность списания бонусов, расчет бонусов для списания, проверка доступности бонусов для конкретного вида оплаты, получение информации о примененных и начисленных бонусах.
B2B оплата для бизнеса. Выполнили объединение B2B и B2C корзин. Ранее B2B корзина существовала отдельно, теперь B2B-клиенты могут оформить заказ через обычную корзину.
6. Разработка сервиса «Монитор Логиста»
Inventive Retail Group ценит своих клиентов и учитывает их пожелания по срокам доставки. Поэтому отделу логистики очень важно контролировать отклонения и опоздания в режиме реального времени. Ранее примеры отчетов о доставке велись в excel-таблицах. Стояла задача разработать функционал сервиса, который полностью закрывает задачи по отслеживанию и доставки заказов в срок.
В результате был разработан готовый сервис для работы с омниканальным заказом в едином окне: в систему вынесена вся необходимая информация о заказах и своевременной доставке товаров.
Взаимодействие с системой на стороне Inventive Retail Group происходит постоянно. Появилась возможность отслеживать сроки доставки, и принимать меры в случае опоздания курьеров благодаря своевременному взаимодействию с транспортными службами. В сервисе разработана форма — расчет риска опозданий. Данные отправляются в транспортную компанию, и если заказ не отгружен, далее с этим работают логисты. Также настроены показатели для каждого статуса доставки.
7. Сопровождение Retail CRM Enterprise
Для обработки большого объема заказов, интернет-магазину требуется функционал, способный автоматизировать процессы.
Для обеспечения бесперебойной работы отделов и единого взаимодействия с другими системами используется CRM Retail CRM Enterprise. Данное решение позволяет крупному e-commerce автоматизировать бизнес-процессы, сохраняя up-time проекта 99,8%. Это дает возможность планировать развитие интернет-магазина, обеспечив бесперебойную работу отделов.
Для restore внедрены следующие решения: