Спецпроекты

CatalogLint

Проверка выгрузки CommerceML перед загрузкой в интернет-магазин: цены без товаров, дубли и неполная выгрузка, которая выглядит как массовое удаление.

Тип
Проверка выгрузки каталога
Стек
Python
Код
Открыт на GitHub
Год
2026

Ворота перед складом

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

CATALOGLINT
Шлагбаум и сбитое предложение — за ними и следитеЯщик — товар, ценник — его предложение: они едут парамиСтеллаж — прошлая полная выгрузка, пустая ячейка — пропавший товарМодель проверки выгрузки CommerceML перед загрузкой в интернет-магазин. Товары (ящики) и их предложения (ценники) едут парами через ворота. Предложение без товара толкатель сбрасывает в лоток брака; повторный идентификатор тоже уходит в брак. Рядом шкала усадки сравнивает число товаров с прошлой полной выгрузкой, стеллажом на 50 ячеек: пока пропало не больше 20 % ранее активных товаров, ворота открыты, а ровно 20 % ещё проходят. Когда пропало больше, шлагбаум опускается, и утилита возвращает ненулевой код, которым можно остановить импорт. Порог настраивается, по умолчанию он 20 %. В модели прошлая выгрузка — 50 товаров: сегодня 48 — это 4 %, а неполная выгрузка из 38 даёт 24 %.

Зачем

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

Усадка каталога

Если рядом лежит прошлая полная выгрузка, утилита сравнивает их. Пропало или помечено на удаление больше 20 % ранее активных товаров — ошибка. Порог настраивается, а частичные обмены утилита отклоняет, чтобы не принять отсутствие товара за удаление.

Технически

  • Один каталог и один пакет предложений с совпадающим Ид.
  • Повторные и пропавшие идентификаторы товаров и предложений.
  • Цены: пустые, неизвестные типы, повторы уровня.
  • Порог усадки каталога, по умолчанию 20 %.
Код на GitHub

Обсудим ваш проект?

Обсудить проект