У нашего заказчика сложный и многокомпонентный товар — серверы. Правильно сконфигурировать такое оборудование для заказа — целая наука, а соответствующих специалистов в последние полтора года стало ощутимо меньше и все чаще серверы заказывают менеджеры, а не программисты или инженеры.
Главной задачей проекта стало развитие потоковых продаж: нам предстояло доработать сайт заказчика, сделав его более похожим на традиционный интернет-магазин. И, поскольку серверы — это «сборный» товар, важным элементом доработки стал новый конфигуратор, интуитивно-понятный и удобный для вышеупомянутого менеджера, то есть неподготовленного конечного клиента. Спойлер: с задачей мы блестяще справились. О разработке расскажет главный автор проекта, Антон Ивченко.
Прежний конфигуратор представлял собой конструктор с очень жёстко заданными правилами: «у нас есть сервер, он собирается по определенным правилам и ему подходит определенный набор компонентов для разных ячеек».
Фактически, для каждого сервера создавался уникальный конструктор — и получался уникальный сервер с совершенно необычным набором всех компонентов. И, чтобы добавить к этой конструкции новый компонент, требовалось запросить из базы те, которые подходят именно к этому серверу. Все строилось на хитрых (и сложных) взаимосвязях между слотами, от банального количества процессоров до совместимости дисков с дисковыми корзинами. И все это — с одним уровнем вложенности.
Пример: у тебя есть дисковые корзины — по сути это просто железка, в которую вставляются диски. Прежний конфигуратор не позволял просто выбрать дисковую корзину и уже в неё вставлять нужные диски, поскольку диски в базе «расположены» отдельно и совместимы только с отдельной «ячейкой для дисков».
Новый конфигуратор сделан по другому принципу: мы сделали ставку на максимальную гибкость.
Базовый алгоритм остался таким же: есть конструктор, у него тоже есть ячейки и в них, по определенным правилам, вставляются компоненты. Главное отличие заключается в том как вставляются эти компоненты и как формулируются правила: наш конфигуратор не требует от пользователя заранее знать совместимости, чтобы положить нужный компонент в подходящую ячейку.
Теперь вы сначала настраиваете правила, по которым конфигуратор «смотрит» на каталог и автоматически подбирает компоненты, удовлетворяющие вашим параметрам.
Пример: вы добавили в каталог новые компоненты, завели в базу их свойства. Если свойства подходят к конкретной конфигурации сервера, то компонент можно будет вставить в подходящую ячейку — и проверка идет в автоматическом режиме. В админке конфигуратора можно задать правила типа «иди вот в этот каталог, посмотри вот эти свойства входящих в каталог компонентов, отфильтруй неподходящие значения этих свойств и забери оставшиеся — подходящие для конфигурации — компоненты.
Изначальная гибкость в формировании правил позволяет выставлять ограничения («ты обязательно должен добавить компонент в ячейку или необязательно», количество и т. д.), дополнительные скидочные коэффициенты и многое другое.
Пример: в одной корзинке у тебя есть зелёное яблоко и красное яблоко, а в другой — огурец и помидор. Мы можем задать правила взаимосвязи между компонентами, что, когда достаёшь красное яблоко, ты можешь взять только помидор, а когда зелёное — и помидор, и огурец. Сами правила прописываются как дополнительные скрипты на интерпретаторе Java, доработанном нашими разработчиками.
Дополнительно мы сделали интуитивно понятный словарь скриптов, по которому можно написать и установить скрипт даже не будучи программистом.
Скрипты работают по той же схеме: «смотрят» все возможные свойства тех объектов, которые вставляются в ячейки, их количество и как-то их сравнивают. Это позволяет очень гибко настроить, либо в принципе ограничить выбор пользователю.
Пример: пользователь выбрал некий процессор, а к нему, в свою очередь, подходит (и не подходит) часть других компонентов. Создается скрипт, который накладывает соответствующие ограничения при выборе другой ячейки — и человек не может поставить то, чего он ставить не должен. По этому же принципу отрабатывается совместимость: если пользователь поставил один процессор и две планки оперативной памяти, то мы предупреждаем его, что нужно либо оставить одну планку, либо добавить еще один процессор.
Исторически сложилось, что у заказчика на разные количества одних и тех же компонентов формируется разная цена за один компонент. Скажем, ты купил жёсткий диск за 100 рублей, а если ты покупаешь 10 таких дисков, то цена за единицу будет другая. В прежней реализации это выглядело так, что один диск и 10 дисков — это разные товары, каждый со своей ценой. Мы изменили логику и стали работать со стандартной единицей товара, убрав множество лишних сущностей.
В нынешнем виде конфигуратор позволяет легко, быстро, удобно и без помощи со стороны сотрудников со стороны заказчика собрать рабочую машину. Причем человеку, который занимается сборкой не нужно обладать глубокими знаниями в области совместимости компонентов серверного оборудования — система сама подскажет, поможет и защитит от грубых ошибок.
Новый конфигуратор приносит много пользы:
Созданный нами конструктор универсален. Он отлично подходит не только для формирования высокотехнологичных сборок, по типу серверов, но и для любого процесса, где есть компоновка одного заказа из разных элементов, которые могут подходить или не подходить друг к другу и заказу в целом.
Более того, пользователю не обязательно выкупать весь заказ: он может просто проверить совместимость, отложить часть товара, внести позиции в избранное.
Пример: оборудование для дайвинга, сбор вещей в пеший поход на дикую природу, мебель для офиса, цвета и цветовые сочетания краски для ремонта нескольких помещений, конкретные блюда в наборах доставки готовой еды, закупки продуктов для кафе и ресторана и многое, многое другое.
То есть конфигуратор можно использовать и как автоматизированный сервис консультаций, дополнительно разгружая менеджерский персонал.
При регистрации покупатель передает вам данные контактов, что-то покупает и отмечает остальное — это готовый горячий (как минимум, теплый) лид для ретаргета, акционных предложений, рассылок и прочих догоняющих механик. Кроме того, ссылкой на конфигурацию можно поделиться — и перешедший по ней становится новым потенциальным клиентом.