К содержанию
Работа

Yachtering — система персонального меню и снабжения яхт

Yachtering — provisioning для уже арендованной яхты. Организатор задаёт яхту, страну и марину отправления, дату, продолжительность и состав экипажа, каждый участник правит своё меню по дням, а система превращает выбранные блюда в рецепты, ингредиенты и реальные розничные упаковки. Продукт не готовит еду — он собирает один исполнимый закупочный лист, передаёт его в Metro, оставляет проверку живому представителю и делит итоговый счёт между участниками. Продукты приезжают в марину и загружаются на борт перед отходом.

Главный экран проекта Нажмите, чтобы рассмотреть
Yachtering — система персонального меню и снабжения яхт 01 / 07
Yachtering — система персонального меню и снабжения яхт — Главный экран проекта
Клиент
Yachtering
Индустрия
Электронная коммерция, Логистика
Срок
7 месяцев
Команда
5 человек

Задача

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

Без единой системы всё это остаётся ручной работой организатора: собрать пожелания в переписке, пересчитать рецепты и порции, объединить повторяющиеся позиции, подобрать упаковки, сверить объём с возможностями яхты, оформить закупку, распределить итоговый счёт и отдельно координировать курьера. Yachtering сводит эти действия в один управляемый процесс — от параметров путешествия до погрузки продуктов на борт.

Решение

Событие вместо корзины. Организатор начинает со страны обслуживания и языка, указывает количество людей и продолжительность, выбирает яхту и марину. Эти параметры не декоративны: страна определяет доступный каталог и поставщика, продолжительность — число дней меню, количество участников — число персональных слотов, яхта и марина — правила доставки и погрузки. Система формирует ссылку и код доступа, организатор рассылает приглашение, и у каждого участника появляются собственные запись, меню и расчёт. Организатор остаётся участником своего же события, поэтому его блюда и его доля считаются по той же модели, что и у гостей.

Свобода в границах. Участник не может придумать произвольное блюдо — иначе закупка станет непредсказуемой. Вместо этого он выбирает одну из подготовленных альтернатив: рыбное, мясное или растительное основное, заменяет закуску на допустимый вариант, отказывается от ненужной позиции, меняет размер порции, добавляет напитки, учитывает пищевые ограничения и открывает состав и рецепт блюда. Любое такое решение остаётся пересчитываемым в реальные продукты.

Из блюд в упаковки. Блюдо — отдельный тип Magento-продукта, связанный с ингредиентами через product links; рецепт задаёт состав, количество и единицы измерения. После правки меню пересчитываются персональная корзина участника и сводный quote события: один и тот же ингредиент из разных рецептов объединяется, масло и специи не дублируются, а требуемый вес или объём сопоставляется с фактическими розничными упаковками. Для каждой позиции отдельно хранится, какая часть упаковки реально уходит в рецепты, — это позволяет честно разложить стоимость целой пачки между меню, которые её используют.

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

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

Деньги по долям. Сводный заказ хранит и общую стоимость, и долю каждого участника. Доля считается по выбранным блюдам, порциям и дополнительным товарам, а стоимость общих ингредиентов и целых упаковок распределяется между использующими их меню. Поддержаны два сценария: каждый оплачивает свою рассчитанную часть либо организатор закрывает заказ целиком и показывает остальным сумму возврата. В checkout — адреса, review заказа, счёт, карточная оплата через Stripe, доставка и сервисные составляющие; у участника есть отдельная страница со своей частью счёта.

Архитектура. Ядро — Magento Open Source 2.4.4: стандартные customer, catalog, quote, order и invoice расширены предметными модулями Event, Menu, Meal / Ingredient / Package, Pricing, Shipping / Checkout / Stripe и Import. Данные выстроены в цепочку «событие → участники → персональные меню → позиции → блюда → ингредиенты и упаковки». У каждого участника свой quote, главный quote события агрегирует все позиции и пересчитывает totals. Замена и удаление блюда идут через AJAX-контроллеры без перезапуска сценария, checkout собран на Vue.js поверх Magento frontend, уведомления рассылают cron-процессы и email sender.

Результат

Организатор перестал быть диспетчером переписки: он задаёт рейс и следит за готовностью меню, остальное считает система. Участник заходит по персональной ссылке, правит только своё меню и видит собственную сумму, оставаясь изолированным от чужих событий. Представитель работает по конкретному списку с понятными правилами замены. Бухгалтерия получает итог заказа, счета и статусы оплаты в готовом виде, а доставка — марину, дату и окно, данные яхты и контакты организатора.

Операционный сценарий оформлен как последовательность состояний — setup, checkout, new/pending, processing, complete, cancelled и closed — с историей статусов, комментариями и флагами уведомлений: видно, на каком этапе событие, кто задерживает решение и какие письма уже ушли. Для разбора спорных ситуаций сохраняется вся цепочка целиком, так что изменение меню, итоговая закупка, финансовая доля и доставка связываются в одну трассируемую последовательность.

7 ролей от организатора рейса до бухгалтерии
2 сценария оплаты каждый платит свою долю либо организатор закрывает заказ целиком
7 месяцев длительность работ
5 человек команда
Ещё

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

Всё портфолио
Yokohama Print: B2B-платформа заказа маркетинговых материалов для дилерской сети
Кейс Yokohama

Yokohama Print: B2B-платформа заказа маркетинговых материалов для дилерской сети

Дилерская сеть заказывала баннеры, стенды и POS-материалы по телефону — поток заявок обрабатывали почти 50 сотрудников. Мы заменили это self-service-порталом, где право на материал, лимит и согласование встроены в оформление заказа, а исполнение платформа планирует сама: со склада, из типографии или разделив заказ между источниками.

Корпоративные порталыDAMS — управление цифровыми активами
PHPMagentoSymfonyMySQL
Artik — интернет-магазин печати на заказ с онлайн-конструктором
Работа OneCore Media

Artik — интернет-магазин печати на заказ с онлайн-конструктором

Artik — канадская платформа заказа одежды, спортивной формы и промопродукции с индивидуальным нанесением. У обычного магазина цена привязана к SKU; здесь она собирается из тиража, цвета основы, размерной сетки, числа зон печати и количества красок в каждой из них. Поэтому магазин соединён с онлайн-конструктором макетов и производственным контуром типографии в один сквозной путь — от выбора футболки до задания в цех.

Интернет-магазин
MagentoPHPMySQL
CanMedDirect — интернет-магазин медицинских расходных материалов
Работа OneCore Media

CanMedDirect — интернет-магазин медицинских расходных материалов

CanMedDirect — канадский интернет-магазин медицинских расходных материалов для домашнего ухода, длительной терапии и восстановления после процедур. Внешне это обычный интернет-магазин, но покупатель здесь ищет не «повязку», а конкретный артикул производителя нужного диаметра, в нужной упаковке и совместимый с уже используемой системой. Магазин строился вокруг этой точности: каталог, поиск, совместимость, страховые документы и direct billing.

Интернет-магазин
PHPMagentoMySQL
Первый разговор — бесплатно

Расскажите, что хотите изменить

За одну встречу уточним задачу и предложим следующий шаг, даже если вам нужен другой подрядчик.

Что будет на встрече
  1. 01 Опишите задачу своими словами
  2. 02 Уточним цель и ограничения
  3. 03 Предложим решение и следующий шаг
длительность 45–60 мин