«ТД ТИНКО» разработал для клиентов комплекты готовых решений, однако заказать их можно было только по телефону. Другой проблемой был поиск по сайту. Существующее решение хорошо работало на небольших и средних базах данных, однако на высоконагруженном сайте «ТД ТИНКО» давало сбои. Еще одной проблемой был расчет доставки — расчет по пяти ТК занимал слишком много времени.
1С-Битрикс, Vue, ElasticSearch.
Системы безопасности — это технически сложные решения, их подбор и инсталляция требуют высокой квалификации. В помощь своим клиентам «ТД ТИНКО» раз в год выпускает журнал с типовыми решениями. Каждое решение содержит комплект оборудования под определенную задачу, например, устройство системы видеонаблюдения магазина. Проектировщики, интеграторы и монтажные организации используют эти решения для создания систем безопасности.
Типовое решение системы видеонаблюдения для магазина
Проблема была в том, что типовые решения находились в журнале в PDF-формате. По ним не было поиска на сайте, а комплект оборудования из решения невозможно было добавить в корзину покупателя. Типовые комплекты существовали только в базе 1С, поэтому клиентам приходилось звонить в офис и оформлять заказ по телефону. Это было неудобно и отнимало время у клиентов и сотрудников «ТД ТИНКО».
Необходимо было реализовать на сайте поиск и покупку комплектов оборудования из журнала.
Технически задача выглядела так:
Сайт «ТД ТИНКО» работает на 1С-Битрикс. И в 1С и в Битриксе есть понятие комплекта. При этом обе системы понимают под этим одно и то же — товар, который для пользователя выглядит одним товаром, а для учетной системы — несколькими. Проблема в том, что 1С и Битрикс не умеют обмениваться этими данными.
Стандартные модули обмена в этих системах не поддерживают выгрузку комплектов на сайт. Нам нужно было разработать модуль на основе XML-выгрузки силами своей команды. Что мы и сделали.
Теперь стала доступна выгрузка из 1С на сайт всей информацию о типовых решениях:
Данные из XML-файлов импортируются в инфоблоки, аналогично прочим товарам. У типовых решений есть свойства, цены, перечень оборудования и вспомогательная мета-информация.
Программа 1С ежедневно формирует XML-файл с типовыми решениями. На сайте есть CRON-задача, которая проверяет наличие файла и по FTP загружает его на сайт.
Типовое решение, готовое для заказа
Клиенты «ТД ТИНКО» не всегда оформляют заказы на сайте. Они могут сделать это в офисе или по телефону. Чтобы такие заказы отображались в личных кабинетах на сайте, мы запрограммировали импорт заказов, созданных офлайн на стороне 1С. Эти заказы отображаются на сайте в режиме «только для чтения». Пользователь видит ход выполнения заказа, но не может внести в него изменения:
Для удобства пользователей все решения на сайте разбиты под сферы применения
Страница сайта с типовыми решениями под разные задачи
На странице каждого типового решения есть схема и состав комплекта оборудования с указанием цены как всего комплекта, так и каждой единицы оборудования. Пользователь может изменить количество оборудования в соответствии со своей задачей и оценить изменение стоимости проекта. Однако из комплекта нельзя удалить элементы, на которых основано типовое решение.
Выбор типового решения
Изменение состава типового решения
Проект мы делали в 2018 году, сейчас работаем над другими задачами. Количество затраченных часов за 2021 год — 1746, или 150 часов ежемесячно.
На старой версии сайта поиск был реализован через самописные запросы к базе данных. Решение было создано на MySQL и отлично работало на небольших и средних базах данных. Однако у компании «ТД ТИНКО» высоконагруженный сайт: объемы данных и количество поисковых запросов постоянно увеличиваются. MySQL не предназначен для таких задач. Он часто вел себя непредсказуемо из-за множества одновременных запросов к базе. Для поиска товара в большой номенклатуре со сложной логикой нужно было другое решение.
Для оптимизации поиска мы предложили внедрить Elasticsearch. Это одна из самых популярных поисковых систем. Elasticsearch — масштабируемая утилита полнотекстового поиска и аналитики. Она в режиме реального времени хранит, ищет и анализирует большие объемы данных. В отличие от решения на MySQL, Elasticsearch быстро и легко находит товары, написанные с опечатками или в других формах.
Снизили время ответа на поисковый запрос до 200 миллисекунд
Такое время отклика позволяет на лету и без видимых задержек перестраивать выдачу, пока пользователь вводит запрос.
Оптимизировали поддержку актуального индекса
Индекс актуализируется за 20 секунд, а добавление товара в индекс занимает 0,3 секунды.
Внедрение новых оплат упростило платежи, а их количество выросло на 2%.
Доработали логику поиска по сайту и сделали его удобнее
А также расширили функциональные возможности поиска и добавили:
Компания «ТД ТИНКО» работает с пятью ТК. При заказе пользователь отправляет запрос, а каждая ТК делает свой расчет. Время расчета у всех компаний разное, поэтому результат по всем ТК в среднем занимает одну минуту. По меркам пользователей, минута ожидания — это вечность. Нужно было оптимизировать и ускорить процесс расчета.
Мы изучили документацию API пяти служб доставки и все нюансы обмена информацией. Запрос пользователя с сайта отправляется одновременно в пять ТК, а ответы обрабатываются параллельно. Время обработки ответа от каждой ТК мы ограничили 30 секундами. Если за этот период ответ от какой-либо ТК не пришел, то пользователь увидит только 4 результата. Выберет ТК из текущего списка и быстрее оформит заказ.
Для определения адресов мы используем сервисы КЛАДР и ФИАС, а для удобства пользователей подключили сервис подсказок DaData. Он выдает подсказки по отдельным частям адреса и упрощает поиск.