Разработка PIM-системы
О клиенте
Компания СООО «Конте Спа» была основана в 1997 году в г. Гродно (Республика Беларусь), когда рынок только начинал свое развитие. 20 лет неустанного развития и эффективной работы вывели «Конте Спа» на позицию лидера в производстве одежды, белья, чулочно-носочных изделий в Восточной Европе.
О проекте
Название проекта “Contematrix” родилось из слова “Матрица”, которым назывались XLS-файлы
с информацией о товарах. В течение многих лет в компании обновление списка товаров в информационных
системах производилось через загрузку таких огромных файлов, которые собирались руками.
Проект Contematrix представляет из себя web-приложение, в котором менеджеры компании добавляют новые
товары, изменяют существующие, работают с товарными категориями, фотографиями и синхронизируют изменения
с B2C и B2B системами. Платформа интегрирована со складами, что позволяет получать актуальные списки
товарных предложений, цены, контрагентов.
Цели проекта
-
Сократить трудозатраты менеджеров компании. Для этого требуется сделать более простым и удобным процесс работы с товарной базой.
-
Автоматизировать ручной процесс обновления. Необходимо ускорить обновление товаров в B2C и B2B, занимающее несколько дней.
-
Сократить количество ошибок товарной базы. Избавиться от ошибок в заполнении товаров в B2C и B2B системах, появляющихся каждую неделю.
-
Предоставить API партнерам. Некоторые из партнеров продают продукцию на своих площадках и им нужна возможность получения товаров и их фотографий.
- в 5 раз Ускорили процесс изменения товаров.
- на 90% Сократили количество ошибок в товарной базе.
- 1 минута Применение изменений для ~10 000 товаров.
Решение
Весь интерфейс состоит из нескольких разделов:
-
Номенклатура. Табличное представление всей товарной базы компании. Основной рабочий раздел. Здесь производится добавление новых товарных позиций, изменение существующих, загружаются фотографии, определяются категории и многое другое.
-
Каталог. Здесь реализованы инструменты, которые позволяют гибко управлять отображением товаров в публичных каталогах B2C и B2B. Можно разделить цвета одного товара на разные карточки. Либо, наоборот, объединить несколько товаров в одну карточку. Этот функционал специально отделен от товарной базы, чтобы получить возможность изменять их независимо друг от друга.
-
Категории. Представляет собой справочник всех категорий. Особого внимания заслуживает то, что дерево категорий для клиентов из разных стран может отличаться своей структурой. Поэтому здесь можно редактировать их независимо. Переводы названий категорий производятся здесь же, менеджеру подсвечиваются еще не переведенные на другие языки названия, что упрощает поддержание актуальности данных.
-
Синхронизация. В этом разделе выводится информация о подключенных системах, с которыми происходит синхронизация изменений, а также информация о проведенных сеансах обмена данными. Полная история о том, какие данные были отправлены, как они были обработаны, какие возникли ошибки – все это доступно в пару кликов. Подключение новой системы сводится к нескольким простым действиям в панели администратора: создать приложение, настроить ограничения доступа, прописать адрес для взаимодействия
-
Матрицы. Представленный здесь функционал позволяет менеджерам компании создавать индивидуальные прайс-листы для клиентов компании, оптовиков и партнеров. При построении такого списка можно определить ограничения включаемых товаров по определенным критериям, задать цены, настроить автоматическую передачу этого прайс-листа в формате JSON через API или даже сгенерировать PDF-каталог с выбранными товарами и ценами, что значительно облегчает менеджерам подготовку коммерческих предложений.
-
API. Для партнеров компании реализован API, через который они могут получать максимально актуальную информацию о товарах и ценах, скачивать фотографии товаров, получать свои индивидуальные прайс-листы, собранные менеджерами.
Проблемы и вызовы
Таблица для миллиона товаров? Чтобы всем было удобно? Легко!
Раздел “Номенклатура” является ключевым компонентом системы. Реализовать действительно удобный инструмент и учесть все популярные сценарии работы сотрудников оказалось непростой задачей. В течение нескольких месяцев мы собирали обратную связь от менеджеров и доводили функционал до идеала.
Что особенного в “простой” таблице:
- Производительность. Первой и основной нашей целью было добиться отрисовки страницы таблицы в пределах 200 мс (⅕ секунды). Это невероятно сложная задача, учитывая большое количество данных, некоторые из которых нужно вычислять “на лету”. К тому же, пользователь может добавлять неограниченное количество фильтров и даже менять структуру таблицы, что еще более усложняет задачу.
- Неограниченная фильтрация. Фильтры представляют из себя интуитивно понятный конструктор, в котором пользователь может добавить любые из полей товаров и определить правила фильтрации. Правила учитывают типы полей: для дат правило показывает календарь с выбором дня или периода, для полей “Да/Нет” – галочку, для полей с ограниченным списком значений – выбор из списка и так далее.
- Добавление, удаление, перемещение колонок таблицы. С таблицей работают сотрудники разных отделов компании и решают разные задачи. То, что удобно одним, не нужно для других. Поэтому каждый пользователь может настроить выводимые данные именно так, как нужно ему.
- Массовые действия с товарами. Изменить любые поля, удалить, переместить в другую категорию – все это можно сделать сразу для 10 или 100000 товаров. Для этого реализована и удобная функция “Выбрать все по фильтру”.
- Запоминание настроек. Любые настройки таблицы, такие как фильтры, колонки, сортировка, запоминаются для пользователя и их не требуется настраивать каждый раз.
- Быстрое редактирование. Некоторые поля товаров, которые изменяются чаще других, можно изменять прямо в таблице, даже не открывая карточку товара.
- Экспорт и импорт. Можно скачать все данные по выбранному фильтру или загрузить файл с новыми товарами, которые будут добавлены в систему.
Система черновиков и отложенной публикации
Пожалуй, самый сложный с технической точки зрения компонент системы. Мы реализовали своеобразную систему контроля версий товаров, где пользователи могут вести независимые “версии” со своими изменениями, откатывать их или применять в любой момент времени. Со стороны бизнеса это выглядит так: пользователь системы вносит изменения в товары, а завершая работу он принимает решение, хочет ли он опубликовать изменения на подключенные платформы немедленно или это необходимо сделать в определенный момент в будущем. Классический пример – вывод в продажу новой линейки продукции в определенный день и час. К нему может быть приурочен даже запуск акции, поэтому важно, чтобы товары не появились раньше времени. Менеджер может добавить в систему всю линейку даже за неделю до дня Х, проверить отображение товаров на тестовой площадке, а затем назначить публикацию в продакшн на нужный день и час.
Надежный и быстрый обмен с другими системами
Исходя из требований бизнеса, мы поставили себе цель – добиться того, чтобы любые изменения товарной базы доставлялись в B2B и B2C-системы не более чем за минуту. Мы потратили много сил на построение максимально эффективной системы обмена, проводили ряд экспериментов и сравнивали скорость, и по итогу достигли своей цели. На данный момент через разработанную нами шину обмена изменения за секунды распространяются по подключенным платформам. Так как обмен содержит исключительно изменившиеся поля, то клиентским системам требуется минимальное время для их обработки.
Точная и глубоко проработанная система настройки доступов
На этапе проектирования мы разбирали бизнес-процессы в компании и выяснили, что круг сотрудников, которые будут пользоваться системой, их роли и необходимый им функционал абсолютно непредсказуемы. Поэтому мы реализовали возможность гибко и точно настраивать уровни доступа как для групп, так и для конкретных пользователей системы. При дальнейшей разработке система доступов была внедрена во все без исключения компоненты платформы и ее интерфейс, что позволяет отключать даже отдельные кнопки для отдельных пользователей.
Примеры экранов приложения
Технологии
- Symfony
- React.s
- PHP
- Go
- MongoDB
- PostgreSQL
- Elasticsearch
- RabbitMQ
- Docker
- Redis
- Nginx
- REST API
Сотрудничество
2022 – ∞