Прайсы поставщиков в разных форматах: как перестать переносить их руками
Десять поставщиков — десять файлов. У одного Excel с объединёнными ячейками, у другого XML-фид, у третьего PDF, четвёртый отдаёт API. Поставщик меняет порядок колонок без предупреждения, и прайс устаревает раньше, чем его успели внести. Разберём, как устроить приём так, чтобы новый поставщик не означал новую программу.
Почему «обработка под каждый прайс» не масштабируется
Обычный путь — написать загрузку под конкретный файл. Пока поставщиков три, это работает. Дальше обработки копятся: каждая знает про «колонку D», каждую приходится переписывать при смене формата и перепроверять после обновлений учётной системы. Ошибка в одной обработке тихо портит цены, и это всплывает уже у клиента.
1. Реестр источников вместо набора программ
Каждый поставщик — запись в реестре: откуда забирать данные, в каком формате, по какому расписанию, какие поля чему соответствуют. Новый поставщик — это новая запись с правилами сопоставления, а не новая программа. Логика разбора одна для всех источников одного формата.
2. Сырьё отдельно от каталога
Каждый приход сохраняется как есть — снимок файла или ответа API. Каталог собирается из сырья по правилам. Если в карточке появилось странное значение, его можно проследить до конкретного файла и строки. А при ошибке в правилах достаточно пересобрать каталог из уже сохранённых снимков, не запрашивая поставщика заново.
3. Значения — к вашему словарю
«220 В», «220В», «220 Вольт» и «~220» — одно значение. Единицы измерения, написание брендов, названия характеристик приводятся к единому словарю. Неизвестное значение не попадает в карточку молча: оно уходит в очередь, где человек один раз решает, чему оно соответствует, — и дальше правило работает само.
4. Сведение позиций разных поставщиков
Один и тот же товар приходит от нескольких поставщиков под разными названиями. Сводить по названию ненадёжно; надёжнее — по артикулу производителя, бренду, штрихкоду. Совпадения с низкой уверенностью не сводятся автоматически, а идут на проверку: ложное объединение двух разных товаров обходится дороже, чем лишний дубль.
5. Проверки до публикации
Цена отличается от прошлой в разы, пропали остатки по всему прайсу, исчезла половина позиций — всё это признаки сломанного файла, а не реального изменения. Такие приходы стоит останавливать до публикации и показывать человеку, а не выкладывать на витрину.
6. Расписание и журнал
Прайсы забираются по расписанию, а в журнале видно, что пришло, сколько позиций обновлено, что отклонено и почему. Тогда вопрос «почему у нас старая цена» решается за минуту, а не расследованием.
С чего начать
- Выписать всех поставщиков и форматы, в которых они присылают данные.
- Посчитать, сколько часов в месяц уходит на перенос прайсов и исправление ошибок после него.
- Начать с двух-трёх самых «шумных» поставщиков: на них правила окупаются быстрее всего.
Так устроен приём данных в платформе, которую мы построили для компании нашей группы: семь форматов источников — API, фиды, Excel, PDF, сайты — по общим правилам.