Перейти к содержанию

Качество товарных данных

Товарные данные участвуют сразу в карточке, категории, сравнении, фильтре и внешней выгрузке. Если в одном месте написано девять скоростей, а в другом десять, изменение оформления не устранит проблему выбора. В этом уроке построим редакционную сверку значений для того же каталога «ВелоМастер».

Работаем с вымышленными пятью SKU и четырьмя моделями из снимка 11 октября 2026 года. Документы lesson-23 находятся в архиве курса. Исполнение валидатора, запросы к магазинам, проверки производителей и результаты площадок не выполнялись. Результат урока — словарь полей, ожидаемые правила и явно обозначенные ошибки для чтения.

Идентичность переживает редактирование названия

SKU отделяет складскую позицию от текста её описания. VM-H1-M и VM-H1-L относятся к одной модели VM-H1, но имеют разные размеры и остатки. Если редактор улучшил название шлема, это не повод заменить SKU и потерять связь с прежними данными. Если появился другой настоящий вариант, это уже самостоятельная позиция.

У VM-C9 и VM-C10 разница не сводится к наличию. Это разные модели с заданным числом скоростей. Нельзя объединить их по одинаковому числу звеньев или включённому замку. Внутренний ключ должен сохранять смысл изделия, а не зависеть от цены и рекламного прилагательного.

Для будущей передачи товаров Google тоже требует устойчивый идентификатор предложения. Справка ID Merchant Center. Наш внутренний выбор SKU как учебного id является проектной моделью, а не подтверждением зарегистрированного товара. Он не превращает SKU в GTIN и не доказывает корректность MPN производителя.

Тип и единица являются частью поля

Запишем известные характеристики в однозначных единицах. Число звеньев — целое значение links:116, объём средства — volume_ml:100, цена — price_rub:490. Остаток выражается в единицах товара, а не в упаковках неопределённого размера. У шлема диапазон окружности имеет нижнюю и верхнюю границу в сантиметрах.

{
  "sku": "VM-H1-M",
  "model_id": "VM-H1",
  "size": "M",
  "circumference_cm": [54, 58],
  "price_rub": 2990,
  "stock_units": 4
}

Такой фрагмент удобен для сравнения данных. Текст «средний размер» без диапазона не эквивалентен этим значениям. Запись «54–58 мм» также меняет смысл, хотя выглядит почти так же. Поэтому при сопровождении проверяют не только наличие числа, но и единицу, тип и предмет поля.

Цена товара отличается от цены услуги. VM-C9 стоит 1290 RUB, установка цепи — отдельно 1200 RUB, диагностика — 700 RUB. Значение 2490 в согласованном учебном примере относится к детали с установкой, а не к новой цене одной цепи. Нельзя передать его в товарную строку только потому, что оно найдено рядом с названием изделия.

Цена и наличие относятся к снимку предложения. Характеристики модели могут сохраняться дольше, но тоже требуют источника. В рабочем каталоге полезно хранить дату и происхождение каждого изменяемого сведения. Наша модель помечена fictional и не изображает документацию настоящего производителя.

Неизвестное не равно отрицательному

Для VM-LW температурные испытания неизвестны. Для VM-H1 нет подтверждённых сертификатов и измерений защиты. Правильное представление — отсутствие данных и редакционная задача, а не false, нулевая температура или фраза «испытания не пройдены». Последние значения утверждали бы факт, которого у нас нет.

С GTIN действует тот же принцип. Неизвестный код не означает, что у изделия вообще отсутствуют идентификаторы. Заполнять его нулями или кодом похожего товара нельзя. В руководстве Google об идентификаторах отдельно рассматривается ситуация, когда присвоенные идентификаторы недоступны продавцу: их нельзя угадывать.

Во внутреннем словаре можно хранить состояние знания рядом со значением: unknown, confirmed либо not_applicable, если неприменимость действительно обоснована. Эти статусы редакционной модели не являются значениями Merchant. Выгрузка должна переводить подтверждённые сведения по правилам конкретного формата, а не посылать слово unknown в любое поле.

Для нашего вымышленного бренда «ВелоМастер» и MPN, совпадающего с SKU, источник — условие лаборатории. В реальном магазине имя продавца не становится автоматически брендом всех изделий. Если происхождение не подтверждено, такие поля требуют сверки, а не массового заполнения одним названием магазина.

Ошибки показываются отдельно от реестра

В архиве выделен предметный файл с намеренно неправильными значениями для чтения. Например, VM-C9 получила speeds 10, VM-LW — объём 100 литров, а шлем M — остаток варианта L. Это не исходные данные магазина и не результат запуска программы. Каждая строка сопровождается ожидаемым объяснением несоответствия.

Не следует исправлять неизвестное поле похожим известным только ради прохождения проверки. Если диапазон L не подходит к M, отсутствие данных M нельзя закрыть копированием. Когда источник не найден, задача остаётся открытой. Честная неполнота полезнее формально заполненной таблицы, которая ведёт к неправильному выбору.

Правила типа «SKU уникален», «остаток неотрицательный» и «известная категория существует» можно позже превратить в автоматическую проверку. Но их выполнение само по себе не подтвердит физическую характеристику товара. Число десять является допустимым целым, однако для VM-C9 противоречит заданной модели. Формат и предметная истинность — разные уровни качества.

Поверхности должны сообщать одну версию

Возьмём VM-C10. Карточка сообщает нулевой остаток и отсутствие приёма заказов. Сравнение не предлагает немедленную покупку, а руководство не направляет к неподходящей VM-C9. Будущая выгрузка должна учитывать именно это состояние, а не старое значение из ручного списка. Иначе один корректный реестр не предотвратит ложное предложение на другой поверхности.

Для VM-H1 проверяем выбранный размер и конкретный остаток. Общая модель может показывать оба диапазона, но ссылка ?size=L должна раскрывать L 58–62 см и остаток два. Canonical остаётся базовым адресом модели. Это ожидаемая договорённость адресов; её браузерная реализация ещё отсутствует.

У VM-LW сезонная заметность не меняет объём 100 мл и остаток шесть. Поле неизвестных испытаний не должно превращаться в положительный температурный диапазон после добавления зимнего заголовка. Таким образом, сверка проходит через содержание главы, а не только через наличие JSON-ключа.

Результат фиксирует исправление и границу знания

В after.json каталог и бизнес сохраняются, добавляется редакционный словарь и перечень ожидаемых несоответствий. Мы не объявляем, что валидатор нашёл ошибки в настоящем магазине. Примеры были подготовлены специально для объяснения, а реестр не изменялся по выдуманным результатам выполнения.

После чтения можно сопоставить каждое известное значение с названием, единицей, вариантом и датой. Для неизвестных сведений остаётся понятная задача подтверждения. Следующая глава использует эту дисциплину при составлении внешнего фрагмента: отсутствие ошибок в собственном словаре ещё не означает готовность магазина к приёму данных площадкой.