Кейс: Автоматизация прайсов автомобильных шин и дисков.
Сегодня я хочу поделится одним кейсом: автоматизация обработки прайсов интернет-магазина шин и дисков. Тематика весьма интересна, в ней можно показать, как автоматизация прайсов может решить очень сложные работы по обработке прайс-листов, и заполнению сайта характеристиками.
Чем особенны прайсы шин и дисков.
- Вся информация о характеристиках шин или дисков, содержится в самом названии товара, и набор этих характеристик ограничен. Это плюс
- Прайсы очень различные, характеристики разбросаны, и искать одинаковый товар вручную очень сложно и легко ошибиться. Это минус.
Требования к программе:
- Умение сшивать данные с разных ячеек, в заданной последовательности;
- Преобразовывать, распознавать части текста в строке (позже будет ясно);
- Сложные условия распределения по категориям;
- Фильтр по количеству (скорее всего понадобится отсеять товары с количеством менее 4);
- Настройка уникальности товара в прайсе;
С первыми четырьмя пунктами справляются только программы Etrade Price list Importer и Inter-price от Bitforce. Пятый пункт нужен только в том случае, если в прайсе поставщика нет кода поставщика и названий, только характеристики. Такой прайс был всего один, для таких случаев подойдет только решение Etrade, на нем и остановился.
Внимание! Сразу предупреждаю, предлагаемое решение очень сложное, но не обязательное. Многие прайсы можно импортировать как есть, но в таком случае вам придется искать одинаковые позиции и заполнять характеристики вручную, что в разы дольше и сложнее предлагаемой автоматизации. Для тех, кто столкнулся с этим и хочет поставить точку в этом вопросе могут читать дальше. Начнем.
Настройка дополнительных полей
Первое что необходимо сделать — добавить в дополнительные поля.
Я выделил следующие характеристики для Шин:
- Индекс скорости/нагрузки
- Профиль (мм)
- Ширина профиля
- Высота профиля (%)
- Радиус
- Сезон
- Индекс скорости
- Наличие шипов
- RunFlat
- Увеличенная грузоподъемность
Дополнительно для грузовых могут быть:
- Камерность
- Применяемость/Тип использования
- Слойность
- Тип конструкции
Для автомобильных дисков:
- Диаметр диска
- Вылет (диски) ET
- Диаметр расположения отверстий PCD
- Диаметр ступицы(диски) DIA
- Количество отверстий
- Марка машины, к которой подходит диск
- Цвет
Производитель и модель в списке нет, потому-что это стандартные поля. Должно получится примерно так:
Если будете повторять мои действия, идентификаторы ID поля будут отличаться, и в макроподстановках нужно использовать их.
Теперь покажу на реальных примерах.
Пример первый, в прайсе есть характеристики
Сначала возьмем самый простой случай, где каждая характеристика находится в своей колонке, пример такого прайса. Для конфиденциальности информации я удалил закупочные цены.
Все характеристики в одних раздельных полях.
Стандартные поля настраиваем как обычно:
Обязательно необходимо указать в данном случае код поставщика, и указать что он участвует в уникальности товара, иначе многие товары “склеются”, это как раз тот пункт пятый, которые предъявлял в требовании для данной тематики.
И теперь настраиваем дополнительные поля. Пока ничего сложного, просто добавляем поля, и указываем откуда брать данные.
И внесем пару мелких штрихов. Если мы хотим, чтоб у нас в названии были слово шипы, если они есть, а также признак что шины усилены — XL, прописываем в доп. полях условия меняющие ДА на слова Шипы, и XL, RunFlat в нужных полях
ЕСЛИ ({Столбец_k}=’Да’,’Шипы’,’ ‘)
ЕСЛИ ({Столбец_M}=’Да’,’XL’,’ ‘)
ЕСЛИ ({Столбец_n}=’Да’,’Runflat’,’ ‘)
Это также можно сделать через автозамену, но указав нужное поле.
На самом деле XL параметр необязателен, это больше для ориентации клиентов. Если посмотреть шины представленные на Яндекс-Маркете — там нигде не используется добавка XL. Т.к. далее парсил фотографии с Яндекс-Маркета, данное обозначение с названия пришлось удалять. Лучше сразу решить надо ли оно.
Также в данном прайсе очищаем в поле радиуса не нужный ноль в конце. В итоге для каждого товара у нас появляются красивые заполненные характеристики:
И Теперь формируем название в том виде, которое нам надо. Наиболее часто шины обозначают таким способом:
{Производитель} {модель} {RunFlat} {Ширина профиля}/{Высота профиля} {Диаметр} {Индекс нагрузки +Индекс скорости} {шипы, если есть}
Сформируем такие названия используя макроподстановки
Напоминаю, что ID полей будут отличаться в вашей базе. Но после формирования и проверки, выражение стоит сохранить, оно будет одинаковая для всех прайсов.
И еще небольшой нюанс. В большинстве случаев не выгодно продавать по одной, и магазины ограничивают импорт, отсеивают предложения поставщиков, у которых количество меньше 4. Делается очень просто:
Возможно вы наоборот хотите выделится, и продавать тем, кто ищет замену одной, тогда эту опции использовать не надо. Или же можно сделать, если их менее 4 шт, то дополнительная наценка на такие товары, и статус “внимание менее шт” — это также просто настроить.
И собственно результат:
Кроме названия, также у нас есть массив значений характеристик, которые можно использовать для описаний и фильтров на сайте.
Частный случай первого варианта
Бывает, что кода поставщика нет, и уникального названия тоже нет. В таком случае необходимо разложить все параметры по полям, которые программа может считать уникальными, и активировать их в настройках уникальности. Должно получиться примерно вот так:
Т.е. в гарантию мы поместили высоту шины, в единицу измерения — ширину, в вес индекс, в объем скорость, в габарит шипы. Что куда — вообще не играет роли.
И обязательно включаем уникальность для них:
Включаем уникальность для них.
Если в одном прайсы и шины и диски — и полей под все характеристики не хватает, надо загружать прайс дважды, один раз шины, второй диски.
Пример второй, прайс без характеристик
Более сложный случай, когда у поставщика нет разбивки по колонкам, и есть только название из этих параметров, которое еще и построено в хаотичной форме. Скачать пример такого прайса — Прайс 2 Это самый сложный случай, поэтому детально разберем.
В данном случае столбцов с параметрами нет, но все параметры есть в названии. Есть только колонка производителя, но даже без нее можно обойтись. В данном случае в настройках используются теже доп. поля, но все ссылаются на ячейку названия, а поиск значения происходит через регулярные выражения. Самое тяжелее тут это правильно определить модель, потому-что модель может состоять из несколько слов, и нет каких либо закономерностей. Покажу, как выйти из ситуации: пропишем регулярные выражения для каждого поля.
Радиус: R(\d\d[.,]?\d?) (C?) — Символ «С» отдельно, потому-что в данном прайсе он также через пробел, также учитываем дробные радиусы.
Ширина профиля: (\d\d\d)/
Высота профиля: /(\d\d)
Индекс скорости: \s(\d*/?\d\d\d?)[lmnpqrstuhvwyz]\s — выражение получилось несколько сложным, потому что индексы скорости бывают двойные, а также существует индекс скорости R, который совпадает с обозначением радиуса, перед которым также 2 цифры.
Индекс нагрузки \d\d([lmnpqrstuhvwyz])\s
И последнее: модель — делать будем обратным путем, удалять из названия все ранее перечисленное, и производителя — и на выходе останется только модель
И проверяем итоговый результат:
Как видим все необходимые поля и модель сформировались из названия. Теперь осталось сложить название в заданной нами последовательности. Аналогично все делается для дисков.
Показал 2 крайних случая, все остальные прайсы обычно, что-то среднее между 1 и 2 примером.
Прочие нюансы
-Чтобы в начале названий товара еще была принадлежность к сезону, или типа авто — Летние шины, грузовые шины — необходимо добавить еще макроподстановку {CAT_NAME} или {CAT_ADDON_TEXT1} или {RULES_IMPORT_ADDON_TEXT1} в зависимости от каталога, поэтому в примерах их не указываю.
— Многие поставщики в данной тематики дают прайс в формате XML где уже все разбито по колонкам. Запросите такую возможность у поставщика.
-Очень важный момент: привести производителей, модели и цвета к единым значениям. Некоторые поставщики используют по-разному написания бренда и модели (кириллицей, латиницей), для образца лучше брать Яндекс-Маркет.
-Букву обозначающую скорость, обязательно писать без пробела от индекса шины, чтоб эти слова были слитные — это избавит от ошибок сопоставления.
— Лучше не использовать в названии «XL», т.к. в реальных названиях этих обозначений нет, а технологию «RunFlat» лучше обозначать сразу после модели.
-После цифр радиуса или ширины удаляйте ,0 (т.е R16 а не R16,0 )
— Во всех дробных числах заменяйте запятую на точку
Заключение
Обработки прайсов шин и дисков, тема действительно уникальна, и интересна. Вынеc много нового для себя от данной работы. В данной статье пытался максимально подробно описать все нюансы, чтоб могли настроить свои прайс-листы. Вы также всегда можете обратится ко мне, и получить качественную настройку Ваших прайсов. Цена настройки одного прайс листа — 4000 российских рублей (60$).