Задача
Покупателю огнетушителя мало названия и фотографии. Выбор зависит от класса пожара, огнетушащего агента и вместимости, области применения и совместимости компонентов, стандарта, сертификации и регламента обслуживания. Ошибка здесь ставит под угрозу безопасность объекта. Корпоративному клиенту дополнительно нужны повторные закупки, документы и согласованное исполнение заказа, муниципальному — тендерная информация, а сервисному заказчику — понятный путь от обращения до инспекции или ремонта.
Всё это должно было уместиться в одну Magento-систему: розница и согласованные дистрибьюторские условия, глубокая номенклатура и понятная навигация, продажа оборудования и сервисные работы по нему же.
Решение
Каталог по инженерным признакам. Огнетушители разделены по агенту и назначению: порошковые, углекислотные (CO2), газовые (clean agent), для кухонь (класс K), водные и с тонкораспылённой водой, автоматические, для литий-ионных батарей. Отдельно живут шкафы, кронштейны, бирки, чехлы и тележки, а у составов для перезарядки, противопожарных полотен, сервисных запчастей и оборудования установок пожаротушения (engineered suppression) свои разделы. Сигнализация и аварийное освещение включают панели, извещатели и ручные пожарные извещатели, звонки и оповещатели, тестовое оборудование, а также знаки выхода, батареи и компоненты мониторинга. В направлении спринклеров и пожарных стояков собраны оросители, клапаны, испытательно-сливные узлы (test-and-drain), соединительные головки для пожарной техники и насосы. К ним добавляются сигнализаторы, рукава, катушки, стволы, переходники и фитинги. Один SKU появляется в категории, поиске, подборке бренда, специальных предложениях и блоках связанных товаров и при этом остаётся одной товарной записью.
Характеристики как данные. Класс пожара, огнетушащий агент и огнетушащая способность, размер, вместимость и материал, стандарты и сертификация хранятся структурированно. На этих данных работают фильтры и сравнение. Фасетная навигация собирается из атрибутов конкретного раздела: для огнетушителей это размер, тип агента и бренд, для шкафов и систем хранения — тип шкафа, назначение и конструктивные параметры.
Поиск на два разных запроса. Индексируются SKU, номер модели или каталожный номер, бренд и производитель, полное и сокращённое название, категория и назначение. В индекс попадают и класс пожара с агентом, числовые параметры, ссылка на стандарт или сертификацию, распространённые варианты написания. Точное совпадение по артикулу получает приоритет, и подрядчику, который ищет конкретный клапан, не приходится пролистывать похожие позиции. Advanced Search сужает выбор сразу по нескольким полям, а покупатель, который начинает с задачи, приходит к тому же товару через категорию и фильтры.
Совместимость и граница компетенции. Пожарные системы состоят из взаимозависимых компонентов, поэтому связи «совместимые товары», «аксессуары», «замены» и «расходные материалы» входят в товарные данные и не дают собрать несовместимую конфигурацию. Там, где решение зависит от проекта, нормативов, обследования объекта или инженерного расчёта, платформа переводит покупателя к специалисту. Каталог не подменяет профессиональное проектирование и обязательную инспекцию, и это заложено в сценарий, а не написано в дисклеймере.
Розница и опт в одной системе. Группы покупателей в Magento отделяют публичную розницу от согласованных клиентских или дистрибьюторских условий; клиенты и дистрибьюторы входят через Client & Distributor Login. Права и доступные данные проверяет сервер в дополнение к интерфейсу, поэтому клиентские условия нельзя получить подстановкой чужого адреса страницы.
Заказ. Корзина хранит точный SKU, выбранную конфигурацию и количество, цену позиции и итог строки, применённую акцию и состояние доступности. Перед оформлением заказа цены, налоги, наличие и допустимые способы исполнения пересчитываются заново. Товар с обязательными опциями не попадает в корзину, пока вариант не выбран. Pick-Up Counter вынесен в отдельный способ получения с понятными инструкциями и состоянием готовности, для доставки система проверяет адрес и доступные методы. Повторная отправка формы или повторное уведомление от платёжного провайдера не должны создавать дублирующий заказ или второе списание.
Сервис отдельным процессом. Заявка проходит собственную последовательность: первичное обращение, квалификация объекта и системы, согласование объёма и планирование. Затем назначают исполнителя, выполняют работу, фиксируют результат и продолжают общение с клиентом. Коммерческий заказ и сервисная работа связаны клиентом и объектом, но имеют разные статусы, разных ответственных и разные операционные правила, поэтому в одном заказе они не смешиваются.
Продажи через менеджера и тендеры. Для комплектных поставок, сложного оборудования и муниципальных закупок работают обращение в отдел продаж и раздел Supply Ontario Tender: фиксируются контакт, организация, предмет запроса и комментарий, дальше менеджер уточняет техническую задачу, совместимость, количество, адрес объекта и способ исполнения. Если задачу закрывает стандартный магазин, клиент получает согласованный состав корзины; проектные и сервисные запросы продолжаются в управляемом процессе продаж и сервиса.
Целостность данных. Magento остаётся источником истины по состоянию заказа: внешние уведомления и повторные события обрабатываются идемпотентно, ошибки интеграций попадают в очередь повторной обработки и мониторинг. Массовые операции в бэк-офисе проходят проверку и формируют отчёт об ошибках, чтобы импорт с неизвестным атрибутом или дублирующим SKU не изменил незаметно цены и доступность каталога. Аналитика следит за покупками и за качеством навигации: поисковые запросы без результатов, использование фильтров, воронка оформления заказа и ошибки оплаты, выбор самовывоза и доставки, источники сервисных заявок.
Результат
Получился один продукт, который одновременно продаёт оборудование и приводит заказы на профессиональные сервисы. Техническая глубина ассортимента скрыта за понятной навигацией, но профессиональные параметры, совместимость и документы остаются доступными для точного выбора: подрядчик находит позицию по артикулу, розничный покупатель приходит от задачи, корпоративный клиент повторяет закупку из истории, а сервисный заказчик попадает не в корзину, а в очередь координатора вместе со сведениями об объекте. Операционная команда ведёт каталог, заказы, клиентов, заявки и контент в одном бэк-офисе.