Как мы ускорили поиск и оптимизировали процесс заказа на сайте поставщика систем безопасности «ТД ТИНКО»

21.02.2024

За 4 годы сотрудничества мы решили несколько сложных задач по оптимизации работы высоконагруженного сайта клиента. Внедрили заказы комплектов из PDF-каталога типовых решений, улучшили поиск по сайту и ускорили расчет срока и стоимости доставки.

Клиент

Компания «ТД ТИНКО» — дистрибьютор российских и зарубежных брендов оборудования систем безопасности. Компания поставляет оборудование по всей России. В 2021 году ее клиентами были 25 000 организаций. Каждый день на сайт заходят ≈ 40 0000 человек, чтобы выбрать оборудование из 32 000 номенклатурных позиций.

Цель проекта

«ТД ТИНКО» разработал для клиентов комплекты готовых решений, однако заказать их можно было только по телефону. Другой проблемой был поиск по сайту. Существующее решение хорошо работало на небольших и средних базах данных, однако на высоконагруженном сайте «ТД ТИНКО» давало сбои. Еще одной проблемой был расчет доставки — расчет по пяти ТК занимал слишком много времени.

Задачи

  1. Внедрить на сайт заказы комплектов из PDF-каталога типовых решений
  2. Перенести поиск по сайту на поисковую систему Elasticsearch
  3. Настроить расчет доставки так, чтобы клиент видел стоимость и срок поставки сразу по всем транспортным компаниям.

Стек технологий

1С-Битрикс, Vue, ElasticSearch.

Задача 1. Внедрить на сайт заказы комплектов из PDF-каталога типовых решений

Проблема

Системы безопасности — это технически сложные решения, их подбор и инсталляция требуют высокой квалификации. В помощь своим клиентам «ТД ТИНКО» раз в год выпускает журнал с типовыми решениями. Каждое решение содержит комплект оборудования под определенную задачу, например, устройство системы видеонаблюдения магазина. Проектировщики, интеграторы и монтажные организации используют эти решения для создания систем безопасности.

Проблема была в том, что типовые решения находились в журнале в PDF-формате. По ним не было поиска на сайте, а комплект оборудования из решения невозможно было добавить в корзину покупателя. Типовые комплекты существовали только в базе 1С, поэтому клиентам приходилось звонить в офис и оформлять заказ по телефону. Это было неудобно и отнимало время у клиентов и сотрудников «ТД Тинко».

Типовое решение системы видеонаблюдения для магазина

Необходимо было реализовать на сайте поиск и покупку комплектов оборудования из журнала.

Технически задача выглядела так:

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

Реализация

Сайт «ТД ТИНКО» работает на 1С-Битрикс. И в 1С и в Битриксе есть понятие комплекта. При этом обе системы понимают под этим одно и то же — товар, который для пользователя выглядит одним товаром, а для учетной системы — несколькими. Проблема в том, что 1С и Битрикс не умеют обмениваться этими данными.  

Стандартные модули обмена в этих системах не поддерживают выгрузку комплектов на сайт. Нам нужно было разработать модуль на основе XML-выгрузки силами своей команды. Что мы и сделали.

Теперь стала доступна выгрузка из 1С на сайт всей информацию о типовых решениях:

  • описания;
  • изображения;
  • свойства для фильтрации;
  • мета-информация для редактора типовых решений.

Как решение работает в структуре данных сайта

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

Программа 1С ежедневно формирует XML-файл с типовыми решениями. На сайте есть CRON-задача, которая проверяет наличие файла и по FTP загружает его на сайт.

Клиенты «ТД ТИНКО» не всегда оформляют заказы на сайте. Они могут сделать это в офисе или по телефону. Чтобы такие заказы отображались в личных кабинетах на сайте, мы запрограммировали импорт заказов, созданных офлайн на стороне 1С. Эти заказы отображаются на сайте в режиме «только для чтения». Пользователь видит ход выполнения заказа, но не может внести в него изменения.

Типовое решение, готовое для заказа

Результат

Для удобства пользователей все решения на сайте разбиты под сферы применения:

Страница сайта с типовыми решениями под разные задачи

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


Выбор типового решения

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


Изменение состава типового решения

Проект мы делали в 2018 году, сейчас работаем над другими задачами. Количество затраченных часов за 2021 год — 1746, или 150 часов ежемесячно.

Задача 2. Перенести поиск по сайту на поисковую систему Elasticsearch

Проблема

На старой версии сайта поиск был реализован через самописные запросы к базе данных. Решение было создано на MySQL и отлично работало на небольших и средних базах данных. Однако у компании «ТД ТИНКО» высоконагруженный сайт: объемы данных и количество поисковых запросов постоянно увеличиваются. MySQL не предназначен для таких задач. Он часто вел себя непредсказуемо из-за множества одновременных запросов к базе. Для поиска товара в большой номенклатуре со сложной логикой нужно было другое решение.

Реализация

Для оптимизации поиска мы предложили внедрить Elasticsearch. Это одна из самых популярных поисковых систем. Elasticsearch — масштабируемая утилита полнотекстового поиска и аналитики. Она в режиме реального времени хранит, ищет и анализирует большие объемы данных. В отличие от решения на MySQL, Elasticsearch быстро и легко находит товары, написанные с опечатками или в других формах.

Результат

Снизили время ответа на поисковый запрос до 200 миллисекунд

Такое время отклика позволяет на лету и без видимых задержек перестраивать выдачу, пока пользователь вводит запрос.

Оптимизировали поддержку актуального индекса

Индекс актуализируется за 20 секунд, а добавление товара в индекс занимает 0,3 секунды.

Доработали логику поиска по сайту и сделали его удобнее

А также расширили функциональные возможности поиска и добавили:

  • исправление опечаток в поисковом запросе;
  • запросы по фразам, где важен порядок слов;
  • поиск по отдельным критериям:
    – слово;
    – артикул;
    – фраза;
  • настройку многоязычного поиска по наименованиям товаров;
  • параллельную обработку больших объемов данных, с мгновенным подбором наилучшего соответствия запросу;
  • чтение или запись данных в режиме реального времени — в пределах одной секунды.

Задача 3. Настроить расчет доставки так, чтобы клиент видел стоимость и срок поставки сразу по всем транспортным компаниям

Проблема

Компания «ТД ТИНКО» работает с пятью ТК. При заказе пользователь отправляет запрос, а каждая ТК  делает свой расчет. Время расчета у всех компаний разное, поэтому результат по всем ТК в среднем занимает одну минуту. По меркам пользователей, минута ожидания — это вечность. Нужно было оптимизировать и ускорить процесс расчета.

Реализация

Мы изучили документацию API пяти служб доставки и все нюансы обмена информацией. Запрос пользователя с сайта отправляется одновременно в пять ТК, а ответы обрабатываются параллельно. Время обработки ответа от каждой ТК мы ограничили 30 секундами. Если за этот период ответ от какой-либо ТК не пришел, то пользователь увидит только 4 результата. Выберет ТК из текущего списка и быстрее оформит заказ.

Для определения адресов мы используем сервисы КЛАДР и ФИАС, а для удобства пользователей подключили сервис подсказок DaData. Он выдает подсказки по отдельным частям адреса и упрощает поиск.

Результат

Покупатель начинает вводить адрес, а сервис DaData помогает найти его быстрее. Запросы и обработка ответов выполняются параллельно, поэтому через несколько секунд пользователь увидит результаты. Время обработки запроса не превышает 30 секунд. У покупателя будет положительный пользовательский опыт: он быстро выберет службу доставки и оформит заказ.

Отзыв клиента
Генеральный директор «ТД ТИНКО»
Клещенок Г. С.
ООО «ТД ТИНКО» благодарит компанию «Логема» за проявленный высокий профессионализм в разработке и технической поддержке корпоративного сайта.Большой опыт в разработке проектов крупного масштаба, ответственность и доброжелательность сделали сотрудничество приятным, плодотворным и эффективным. Выражаем отдельную благодарность за адекватное понимание потребностей компании и внимательное отношение к нашим непростым пожеланиям. Такой подход к клиентам демонстрирует не только высокий профессионализм, но и готовность работать с нестандартными задачами. Желаем успехов в профессиональной деятельности и надеемся на дальнейшую совместную работу.