Сложное в простой упаковке: сделали крутой кастомный конфигуратор

2023-12-21 13:13:18 Время чтения 9 мин 983

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

Главной задачей проекта стало развитие потоковых продаж: нам предстояло доработать сайт заказчика, сделав его более похожим на традиционный интернет-магазин. И, поскольку серверы — это «сборный» товар, важным элементом доработки стал новый конфигуратор, интуитивно-понятный и удобный для вышеупомянутого менеджера, то есть неподготовленного конечного клиента. Спойлер: с задачей мы блестяще справились. О разработке расскажет главный автор проекта, Антон Ивченко.

Вводные данные: что было до

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

Фактически, для каждого сервера создавался уникальный конструктор — и получался уникальный сервер с совершенно необычным набором всех компонентов. И, чтобы добавить к этой конструкции новый компонент, требовалось запросить из базы те, которые подходят именно к этому серверу. Все строилось на хитрых (и сложных) взаимосвязях между слотами, от банального количества процессоров до совместимости дисков с дисковыми корзинами. И все это — с одним уровнем вложенности.

Пример:  у тебя есть дисковые корзины — по сути это просто железка, в которую вставляются диски. Прежний конфигуратор не позволял просто выбрать дисковую корзину и уже в неё вставлять нужные диски, поскольку диски в базе «расположены» отдельно и совместимы только с отдельной «ячейкой для дисков».

Идем в сторону гибкости

Новый конфигуратор сделан по другому принципу: мы сделали ставку на максимальную гибкость.

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

Теперь вы сначала настраиваете правила, по которым конфигуратор «смотрит» на каталог и автоматически подбирает компоненты, удовлетворяющие вашим параметрам.

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

Изначальная гибкость в формировании правил позволяет выставлять  ограничения («ты обязательно должен добавить компонент в ячейку или необязательно», количество и т. д.), дополнительные скидочные коэффициенты и многое другое.

Пример: в одной корзинке у тебя есть зелёное яблоко и красное яблоко, а в другой — огурец и помидор. Мы можем задать правила взаимосвязи между компонентами, что, когда достаёшь красное яблоко, ты можешь взять только помидор, а когда зелёное — и помидор, и огурец. Сами правила прописываются как дополнительные скрипты на интерпретаторе Java, доработанном нашими разработчиками.

Добавляем скрипты

Дополнительно мы сделали интуитивно понятный словарь скриптов, по которому можно написать и установить скрипт даже не будучи программистом.

Скрипты работают по той же схеме: «смотрят» все возможные свойства тех объектов, которые вставляются в ячейки, их количество и как-то их сравнивают. Это позволяет очень гибко настроить, либо в принципе ограничить выбор пользователю.

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

Приводим в порядок логику

Исторически сложилось, что у заказчика на разные количества одних и тех же компонентов формируется разная цена за один компонент. Скажем, ты купил жёсткий диск за 100 рублей, а если ты покупаешь 10 таких дисков, то цена за единицу будет другая. В прежней реализации это выглядело так, что один диск и 10 дисков — это  разные товары, каждый со своей ценой. Мы изменили логику и стали работать со стандартной единицей товара, убрав множество лишних сущностей.

Что получилось

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

Новый конфигуратор приносит много пользы:

  1. Экономит время менеджеров заказчика. Теперь они могут переключиться на другие важные задачи.
  2. Ставит продажи на поток. Прежний алгоритм по сути ручной обработки заказов сменился на автоматизированный.
  3. Работает на конверсионность сайта. Простота оформления заказа становится сильным аргументом «за» в выборе поставщика.
  4. Повышает лояльность. Конечные клиенты, сравнивая конфигуратор с другими решениями на рынке, понимают, что заказчик заботится об их комфорте.
  5. Позволяет обрабатывать незавершенные заказы. Если в процессе что-то пошло не так, мы видим что именно — и можем обратиться к несостоявшемуся клиенту с конкретными полезными предложениями.

Цифровой швейцарский нож

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

Более того, пользователю не обязательно выкупать весь заказ: он может просто проверить совместимость, отложить часть товара, внести позиции в избранное.

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

То есть конфигуратор можно использовать и как автоматизированный сервис консультаций, дополнительно разгружая менеджерский персонал.

При регистрации покупатель передает вам данные контактов, что-то покупает и отмечает остальное — это готовый горячий (как минимум, теплый) лид для ретаргета, акционных предложений, рассылок и прочих догоняющих механик. Кроме того, ссылкой на конфигурацию можно поделиться — и перешедший по ней становится новым потенциальным клиентом.