Переработка действующей системы доставки

Roppongi Family — несколько ресторанов, одна корзина

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

Обсудить доработку

Есть похожая задача? Напишите в Telegram, что уже работает и что нужно изменить.

Контекст

Контекст и задача

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

Сайт существовал до работы IT Dream. Публичная экосистема объединяет Roppongi Rest, Roppongi, Garage Pub, La Cosa Nostra и Profiteroles. Доставка работает через витрины Family, Rest и Profiteroles. Задачей этапа была глубокая переработка этой действующей системы, а не первоначальная разработка всех сайтов заведений с нуля.

Работа

Что сделано

  • 01

    Обновил визуальный стиль, структуру, навигацию и представление ресторанных направлений.

  • 02

    Переработал витрины, корзину и checkout с разделением товаров и правил исполнения по ресторанным источникам.

  • 03

    Реализовал связанные сценарии заказа, защиту от повторной отправки и отдельный контур уведомлений.

Витрина

Разные источники — единый путь выбора

Family, Rest и Profiteroles сохраняют собственные каталоги и ресторанную принадлежность товаров. При этом посетитель может переходить между витринами и собирать общий заказ, не начиная выбор заново.

Иерархия категорий дополнена виртуальными группами меню. Поиск, фильтрация по ресторану и составу, пагинация и правила доступности блюд помогают ориентироваться в большом каталоге.

Витрина доставки с выбором Family, Rest и Profiteroles, категориями и блюдами
Три источника доставки в общей навигации. Принадлежность блюда сохраняется на всём пути до оформления заказа.

Корзина и доставка

Несколько точек в одной корзине

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

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

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

Тестовая корзина с двумя секциями Roppongi Family и Roppongi Rest и отдельными способами получения
Реальная сессионная корзина Family + Rest. Контактные поля и отправка заказа исключены из кадра; реальный заказ не создавался. Цены и условия показаны только как часть интерфейса на момент съёмки.

Инженерная логика

Сначала заказ, затем уведомления

Связанные заказы создаются транзакционно. Система фиксирует согласованную группу целиком, не оставляя частично сохранённый набор point orders.

Idempotency — защита от повторного создания заказа — связывает попытки отправки с одним сценарием оформления. Повторное нажатие не должно создавать ещё одну копию заказа.

Transactional outbox отделяет сохранение заказа от внешней связи. События уведомлений сохраняются вместе с заказом, а затем обрабатываются отдельным контуром. Сбой транспорта не отменяет уже созданный заказ и допускает повторную обработку уведомления.

Telegram, SMS и email получают сообщения с учётом всей группы заказов. Архитектура описана на уровне принципов; адресаты, данные покупателей и конфигурация провайдеров остаются закрытыми.

Интерфейс

От выбора блюда до понятной обратной связи

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

Эти элементы связаны с логикой каталога и корзины. Визуальное обновление не ограничивается оформлением страниц — оно объясняет пользователю, что происходит с его выбором.

Модальное окно блюда с фотографией, составом, выходом, ценой и добавлением в корзину
Подробности блюда доступны без ухода из каталога.

Развитие системы

Новая логика в существующем проекте

Переработка выполнена в совместимости с MODX, miniShop2 и mSearch2. Для доставки и группового checkout выделены собственные компоненты, поэтому изменения критического пути можно вводить поэтапно.

Ресторанная структура учитывается и в desktop-, и в mobile-навигации. Для товарных изображений используются адаптивные WebP-версии и отложенная загрузка. Дополнительные доработки затрагивают управление доставкой, отображение ошибок и связанные пользовательские сценарии.

Мобильная навигация по ресторанным направлениям Roppongi Family
Ресторанные направления и переход к доставке в мобильной версии.

Роль

Ответственность IT Dream

Егор / IT Dream — глубокая переработка существующей системы, визуального стиля и структуры; ресторанные витрины, разделение доставки по источникам, корзина, checkout, связанные заказы, уведомления и функциональные доработки. Первоначальное создание всей экосистемы и сайтов всех заведений не относится к этому этапу.

Стек

Технологическая основа

  • MODX
  • miniShop2 / mSearch2
  • PHP
  • JavaScript / CSS
  • MySQL / InnoDB
  • Кастомные компоненты доставки и checkout
  • WebP / AJAX

Итог

Результат

Пользователь выбирает блюда разных точек в одном сценарии. Корзина явно разделяет состав и условия получения, backend создаёт согласованную группу заказов, а внешние уведомления не определяют успешность их сохранения. Инженерный результат — развитие действующей коммерческой системы с защитой от дублей и отдельной обработкой сбоев связи.

Нужно развить сложный сайт, сохранив рабочие процессы?

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