projects/org/@biz-lideravto/it/docs/catalog/CATALOG_GUIDE.md

CATALOG GUIDE — Руководство по созданию и ведению каталога

Версия: 1.0.0
Дата: 2026-03-13
Фаза: операционный стандарт

← Назад в оглавление


Содержание


А. Сущности каталога

А1. Иерархия

Навигационное дерево:

МАРКА (Scania, Volvo...)
  └── МОДЕЛЬ (Scania 6 серия, Volvo FH IV...)
        └── СИСТЕМА (Двигатель, Трансмиссия...)
              └── УЗЕЛ (Форсунка, Турбина, ТНВД...)
                    └── ДЕТАЛЬ (карточка по OEM)
                          └── ТОВАР (SKU — конкретная позиция с ценой/остатком)

Ключевые термины:
- Деталь — карточка товара, идентифицируется по OEM-номеру. Одна деталь = одна страница на сайте.
- Товар (SKU) — конкретная позиция на складе: деталь + производитель + цена + остаток. Одна деталь может иметь несколько SKU (разные производители запчасти).

Таксономия (что это за деталь):

СИСТЕМА (8 штук — верхний уровень: Двигатель, Трансмиссия...)
  └── УЗЕЛ (61 штука — средний уровень: Форсунка, ТНВД...)
        └── ДЕТАЛЬ (карточка по OEM — нижний уровень)

Совместимость (для каких грузовиков):

МАРКА → МОДЕЛЬ ↔ ДЕТАЛЬ  (M:N — одна деталь подходит ко многим моделям)

Совместимость определяется по полной иерархии (Марка → Модель → Система → Узел → Деталь).
Платформенная совместимость действует с исключениями на уровне системы:

Пример Совместимо Исключение (система)
Volvo FH4 + Renault T Двигатель, Трансмиссия, Шасси, Электрика ❌ Кабина
Scania 5 + Scania 6 Двигатель (DC13), часть Шасси ❌ Кабина, ❌ часть Трансмиссии
Iveco Stralis + S-Way Двигатель (Cursor), Шасси ❌ Кабина

Правило: при добавлении платформенной совместимости всегда указывать исключённые системы.

URL объединяет навигацию и таксономию:

/zapchasti/{marka}/{model}/{sistema}/{uzel}/{nazvanie}-{oem}/

Отвечает на два вопроса: для кого (марка/модель) и что это (система/узел).

А2. Марка

А3. Модель грузовика

Полная таблица: it/data/references/MODELS_ALL.csv

А4. Система (уровень 1 таксономии)

8 систем, зафиксированы жёстко. Новые системы требуют пересмотра всей таксономии.

Slug Название Пример узлов
dvigatel Двигатель Топливная система, Смазочная система, Охлаждение
transmissiya Трансмиссия КПП, Сцепление, Кардан
kabina Кабина Двери, Стёкла, Сиденья
shassi Шасси Рама, Подвеска, Рулевое, Тормоза
elektrika Электрика Генератор, Стартер, Фары
v-sbore В сборе Турбокомпрессоры, Радиаторы
specoborudovanie Спецоборудование ВОМ, Гидравлика
krepchoz Крепёж Болты, Гайки, Хомуты

А5. Узел (уровень 2 таксономии)

61 узел, каждый привязан к одной системе. Узел = группа деталей одного функционального назначения.

Полная таблица: it/data/references/TAXONOMY.csv

А6. Деталь

Карточка товара — основная SEO-единица каталога. Одна деталь = одна страница = один canonical URL.
Идентифицируется по OEM-номеру. Не зависит от поставщика или производителя запчасти.

Обязательные поля:
- Название (canonical, по правилам именования)
- OEM-номер (эталонный)
- Система + Узел
- Совместимые модели (минимум одна)

А6а. Товар (SKU)

Конкретная позиция на складе. Привязан к карточке детали. Один SKU = один поставщик/производитель + цена + остаток.

Одна деталь может иметь несколько SKU:
- "Форсунка 2031835" от производителя Bosch — SKU-001, 12 500 руб, 5 шт
- "Форсунка 2031835" от производителя Delphi — SKU-002, 9 800 руб, 2 шт

На карточке детали показываются все доступные SKU с выбором варианта.

А7. OEM-номер (оригинальный)

Номер детали от производителя грузовика (не производителя запчасти).
Пример: Scania присвоила форсунке номер 2031835 — это OEM Scania.

А8. Кросс-номер

Тот же физический товар, но под другим OEM-номером. Два типа:

Тип Что это Пример
Supersession Производитель заменил свой старый номер новым Scania 18748142082819
Cross-brand Деталь одинакова для двух марок грузовиков Volvo 742xxxxx = Renault DTI-xxxxx

Кросс-номера хранятся в поле oem_crosses карточки детали.
При поиске по любому кросс-номеру → находим основную карточку.

А9. Аналог

Другой физический товар, который выполняет ту же функцию, но не идентичен оригиналу.
Пример: неоригинальная форсунка от Bosch вместо оригинальной Scania — это аналог.

Итого: три разных понятия:

OEM       = оригинальный номер — главный идентификатор карточки
Кросс     = тот же товар, другой номер → одна карточка
Аналог    = похожий товар, другая деталь → отдельная карточка

А10. Артикул (SKU)

Внутренний номер склада. Используется в 1С и при импорте. Не используется в URL.
Один артикул = один SKU (производитель + цена + остаток) на карточке детали.


Б. Структура деталей и SKU (поля)

Б1. Поля карточки детали (обязательные)

Поле Тип Пример Примечание
название строка "Форсунка топливная" по правилам NAMING_RULES.md
oem строка 2031835 эталонный OEM (один, canonical)
oem_crosses список 1874814, 1529018 только кросс-номера (без canonical OEM)
система taxonomy dvigatel один из 8
узел taxonomy forsunka один из 61
модели M:N [4-FH, 4-FM] список кодов из MODELS_ALL
slug строка forsunka-toplivnaya-2031835 {nazvanie}-{oem}

Б2. Поля карточки детали (опциональные технические)

Поле Тип Примечание
вес decimal кг
габариты string "200×150×80 мм"
описание text текстовое описание

Б3. Поля SKU (привязаны к детали)

Поле Тип Примечание
артикул (SKU) строка внутренний номер склада/1С
производитель string бренд запчасти (Bosch, Delphi...)
страна string страна производства
цена decimal розничная, руб
цена_опт decimal для B2B клиентов
остаток integer штук на складе
склад enum основной / под заказ
срок_поставки string "1-3 дня"
гарантия string "12 месяцев"

Б4. Медиа (привязаны к детали, не к SKU)

Правило Требование
Формат JPG, WebP
Размер 800×800 px минимум
Фон белый или нейтральный
Количество минимум 1, рекомендуется 3+
Имя файла {oem}-1.jpg, {oem}-2.jpg

Б5. SEO-поля (генерируются автоматически для карточки детали)

Поле Шаблон
title {Название} {OEM} для {Модель} — купить в Москве
description {Название} OEM {OEM} для {Марка} {Модель}. ✓ В наличии. Цена {Цена} руб. Доставка по РФ.
canonical_url см. раздел Д

В. OEM-эталон и канонизация

В1. Проблема: несколько OEM на один товар

Один физический товар может иметь несколько действующих OEM-номеров:
- Исходный OEM производителя (например, 1874814)
- Новый OEM после supersession (например, 2082819)
- Кросс-номер от другого завода (например, 2031835 для Renault той же детали)

Правило: одна карточка товара — один canonical OEM в URL.

В2. Выбор эталонного OEM

Приоритет выбора canonical OEM:

1. Самый новый (актуальный) OEM производителя грузовика
2. Если равнозначны  OEM с наибольшим поисковым спросом
3. Если неизвестно  более короткий номер (легче набрать)
Ситуация Решение
Старый OEM заменён новым Canonical = новый, старый в oem_crosses
Volvo + Renault T (одна деталь) Canonical = Volvo OEM (742xxxxx), Renault как кросс
MB MP4 + MP5 (одна деталь) Canonical = актуальный (MP5 если одинаково)

В3. Одна карточка — один canonical OEM

Принцип: мы не дублируем карточки. Один физический товар = одна страница Drupal.

Если товар подходит к нескольким моделям из разных веток URL:
- Карточка товара имеет один canonical URL
- В других ветках навигации — ссылки на эту карточку (не копии)
- SEO-атрибут rel=canonical указывает на один и тот же URL

В4. Ссылки из других веток

Пример: форсунка подходит к Scania 5 серии, Volvo FH IV, Renault T.

Canonical URL: /zapchasti/scania/5/dvigatel/forsunka/forsunka-toplivnaya-2031835/
                  ↑ здесь живёт карточка товара (с canonical)

В навигации Volvo:
/zapchasti/volvo/fh3/dvigatel/forsunka/ — листинг содержит ссылку на эту карточку
→ ссылка ведёт на canonical URL (не копию)

Если OEM один у Scania + Volvo → ANY URL:
/zapchasti/scania/any/dvigatel/forsunka/forsunka-toplivnaya-2031835/
→ rel=canonical = /zapchasti/scania/any/...
→ страница модели Volvo ссылается на этот any-URL

В5. ANY-правило (когда срабатывает)

Условие: один OEM + совместим с 2+ моделями одного бренда.

Пример: OEM 2031835 подходит к Scania 5-R и Scania 6-R
 Canonical URL: /zapchasti/scania/any/dvigatel/forsunka/forsunka-2031835/
 Страница /scania/5/dvigatel/forsunka/  ссылка на any-URL
 Страница /scania/6/dvigatel/forsunka/  ссылка на any-URL

Если OEM подходит к Scania И Volvo — это две отдельные страницы, не any:

/zapchasti/scania/any/dvigatel/forsunka/forsunka-2031835/   ← Scania canonical
→ В карточке: "Также подходит к Volvo FH III" (текстовая ссылка)
→ Volvo страница ссылается на эту карточку

В6. Кросс-OEM в поиске

Все OEM (включая устаревшие) должны быть в поиске по сайту:
- Поиск по 1874814 → находит карточку с canonical OEM 2082819
- В карточке: "Заменён: 1874814 → 2082819" (информация для пользователя)


Г. Совместимость деталей и моделей

Г1. Алгоритм определения совместимости

Принцип: показываем совместимость только если она подтверждена на 100%. Вероятная, приблизительная, экспертная совместимость — не показывается. Лучше «уточните» чем неверное «подходит».

ШАГ 1: Есть прямое подтверждение источника 100%?
  (TecDoc / TEXA / официальный прайс с конкретной моделью)
         ↓ ДА                          ↓ НЕТ
   100% совместимо              ШАГ 2: Система → Правило
   → добавить в список                   ↓
                              ШАГ 3: Правило → Группа
                                         ↓
                              ШАГ 4: Есть ли исключения/флаги?
                                ↓ НЕТ              ↓ ДА
                           100% совместимо    → "Уточните"
                           → добавить в список    (не показывать)

ШАГ 2 — Система → Правило

Система детали Правило
Крепёж / * UNIVERSAL — все модели без исключений
Кабина / * CABIN — строго по группе кабины
Двигатель / * ENGINE — строго по семейству двигателя
В сборе / Агрегаты ENGINE — по двигателю
В сборе / Кузов CABIN — по кабине
Трансмиссия / * PLATFORM — по платформенной группе
Шасси / * PLATFORM — по платформенной группе
Электрика / Датчики PLATFORM — по платформенной группе
Электрика / Блоки CAN PLATFORM — но только внутри поколения
Спецоборудование / * PLATFORM — по платформенной группе

ШАГ 3 — Правило + Модель → Группа (из COMPATIBILITY_GROUPS.csv)

Правило Ключ Пример
PLATFORM платформенная группа модели Volvo FH4 → GRP-VOL-E6-RNL
ENGINE семейство двигателя модели Volvo FH4 → GRP-ENG-D13K
CABIN тип кабины модели Volvo FH4 → GRP-CAB-VOL-FH
UNIVERSAL все модели

ШАГ 4 — Проверка флагов неопределённости

Если у детали или модели есть хотя бы один флаг из таблицы ниже → совместимость НЕ утверждать, показать «уточните».

Флаг Модели/ситуации с флагом
Двигатель неоднороден (несколько семейств) MB MP3 (OM501 или OM471 — зависит от года)
Конфигурация двигателя неизвестна Scania P с DC9 или DC13 (зависит от заказа)
Платформа частична (только некоторые узлы) MAN TGA + TGS/TGX I (только ZF + Wabco, не CAN)
Группа не определена любая модель без group_id в MODELS_ALL.csv
Кабина не выделена в отдельную группу MB MP4/MP5 (GRP-CAB отсутствует — TODO)

→ Флаги хранятся в поле flags в MODELS_ALL.csv и COMPATIBILITY_GROUPS.csv.

Пример работы алгоритма:

Форсунка двигателя, данные от TecDoc: "Volvo FH4 2013-2020"
  ШАГ 1: источник = TecDoc → 100%
  → Совместима: Volvo FH4 ✓ (показываем зелёным)

Форсунка двигателя, в прайсе только "Scania"
  ШАГ 1: нет конкретной модели → переходим
  ШАГ 2: Двигатель → ENGINE
  ШАГ 3: нет модели → группа не определена → ФЛАГ
  ШАГ 4: флаг → "уточните совместимость" (не показываем моделей)

Стекло кабины, прайс: "Volvo FH IV (4-FH)"
  ШАГ 1: источник = прайс с моделью → 100%
  → Совместима: Volvo FH4 ✓
  Дополнительно: ШАГ 2→CABIN → GRP-CAB-VOL-FH (FH2, FH3, FH4)
  ШАГ 4: флагов нет → добавить весь GRP-CAB-VOL-FH

Деталь двигателя, прайс: "MB Actros MP3"
  ШАГ 1: источник = прайс с моделью → переходим к ШАГ 4
  ШАГ 4: MB MP3 → флаг "Двигатель неоднороден (OM501/OM471)"
  → "Уточните год выпуска" (не показываем зелёную галочку)

Правило: если совместимость не прошла все шаги без флагов → НЕ показывать как «подходит». Неверная «подходит» хуже чем «уточните».

Полные группы: COMPATIBILITY_MATRIX.md

Г1а. Матрица совместимости (M:N)

Связь: одна деталь может подходить ко многим моделям, одна модель имеет много деталей.

Хранится в Drupal как field_compatible_models (entity reference).

Г2. Источники данных о совместимости

Два уровня: достаточно для 100% и недостаточно.

Достаточно для утверждения совместимости:

Источник Использование
TecDoc / TEXA (официальный каталог производителя) Добавлять напрямую, флагов нет
Официальный прайс поставщика с конкретной моделью Добавлять, проверить флаги модели
Верифицированные группы из COMPATIBILITY_GROUPS.csv (без TODO, без флагов) Расширять на всю группу

Недостаточно — не использовать для утверждения:

Источник Почему недостаточно
Прайс с только маркой без модели ("Scania") Неизвестно какое поколение
Экспертная оценка механика ("ставили, встаёт") Не является подтверждением совместимости
Логическое умозаключение ("похоже на ту же платформу") Может содержать неизвестные исключения
Группы из COMPATIBILITY_GROUPS.csv с пометкой TODO Не верифицированы

Г3. Платформенная совместимость

Детальная система: COMPATIBILITY_MATRIX.md — 3 правила (PLATFORM/ENGINE/CABIN) × 25 групп

Каждая деталь получает тип совместимости в зависимости от системы/узла:

Правило Системы Значит
PLATFORM Трансмиссия, Шасси, Пневматика Вся платформенная группа
ENGINE Двигатель, В сборе/агрегаты Семейство двигателей
CABIN Кабина Только эта кабина
UNIVERSAL Крепёж, расходники Любая модель

Совместимость платформ не глобальная — она определяется с исключениями на уровне системы.

Платформа Совместимые системы Исключения
Volvo FH4 + Renault T (2013+) Двигатель, Трансмиссия, Шасси, Электрика ❌ Кабина
Scania 5 + Scania 6 Двигатель (DC13), Электрика, часть Шасси ❌ Кабина, ❌ NXT-компоненты
Mercedes MP4 + MP5 Двигатель (OM471), Шасси ❌ Кабина, ⚠️ AdBlue-система
Mercedes MP2 + MP3 Трансмиссия, Шасси ❌ Кабина, ❌ Двигатель (OM501≠OM471)
Iveco Stralis + S-Way Двигатель (Cursor), Трансмиссия, Шасси ❌ Кабина
Iveco Stralis + Trakker Двигатель, Трансмиссия, Шасси ❌ Кабина
MAN TGA + TGS/TGX I Двигатель (D26), Трансмиссия (ZF) ❌ Кабина, ❌ CAN-шина

Правило при добавлении товара:
- Только системы из колонки «Совместимые системы» расширяются на смежную модель
- Системы из колонки «Исключения» — не расширяются, остаются строго по одной модели
- При добавлении Volvo FH4 → автоматически расширить на Renault T только для Двигатель/Трансмиссия/Шасси/Электрика (не Кабина)
- Если есть сомнение в границах → не расширять, оставить «уточните»

Г4. Сигналы совместимости на карточке товара

Правило отображения: показываем зелёный только если совместимость прошла алгоритм Г1 без флагов. В остальных случаях — жёлтый «уточните».

Сигнал Цвет Условие
"✓ Подходит для {Модель}" зелёный модель прошла алгоритм Г1 → 100% подтверждено
"✗ Не подходит для {Модель}" красный пользователь выбрал модель, её нет в списке совместимых
"⚠ Уточните совместимость" жёлтый пользователь не выбрал модель ИЛИ список совместимости пуст
"⚠ Уточните год выпуска" жёлтый модель в списке, но у неё флаг неоднородного двигателя (MB MP3)
"⚠ Уточните конфигурацию" жёлтый модель в списке, но у неё флаг нескольких двигателей (Scania P)

Что НЕ показываем:
- Никогда не показываем зелёный на основании только марки без модели
- Никогда не показываем зелёный для моделей с флагами неопределённости
- Никогда не показываем «вероятно подходит» или «возможно совместимо» — только 100% или уточнить

Г5. Универсальные детали

Детали без привязки к конкретной модели (хомуты, крепёж, масло, жидкости):
- Поле модели = пустое или ["any"]
- URL: /zapchasti/universal/krepchoz/{nazvanie}-{oem}/
- Совместимость на карточке: "Универсальная деталь"


Д. URL и SEO-структура

Д1. Полная URL-схема

Уровень 0:  /                                         ← Главная
Уровень 1:  /zapchasti/                               ← Каталог (навигатор)
Уровень 2:  /zapchasti/{marka}/                       ← Марка (навигатор)
Уровень 3:  /zapchasti/{marka}/{model}/               ← Модель (навигатор)
Уровень 4:  /zapchasti/{marka}/{model}/{sistema}/     ← Система (навигатор)
Уровень 5:  /zapchasti/{marka}/{model}/{sistema}/{uzel}/     ← Узел (листинг)
Уровень 6:  /zapchasti/{marka}/{model}/{sistema}/{uzel}/{nazvanie}-{oem}/  ← Товар

Специальные URL:

ANY-листинг:  /zapchasti/{marka}/any/{sistema}/{uzel}/
ANY-товар:    /zapchasti/{marka}/any/{sistema}/{uzel}/{nazvanie}-{oem}/
Alias-модель: /zapchasti/{marka}/{alias-model}/ → 301 → /{canonical-model}/

Д2. Правила slug

Элемент Правило Пример
{marka} строчный транслит scania, mercedes-benz
{model} url_slug из MODELS_ALL 6, fh4, mp4
{sistema} slug системы dvigatel, transmissiya
{uzel} slug узла forsunka, toplivny-nasos-vd
{nazvanie} транслит названия товара forsunka-toplivnaya
{oem} OEM как есть (цифры/буквы) 2031835, a0070170021

Длина URL: максимум 115 символов (рекомендация поисковиков).
Средняя длина URL товара в проекте: ~85 символов — укладываемся.

Д3. Canonical vs Alias для моделей

Canonical страница (имеет собственную SEO-страницу):
- Имеет 10+ товаров
- canonical_model в MODELS_ALL = пустой (сама является canonical)

Alias (301 redirect на canonical):
- Менее 10 товаров
- Другая буква кузова той же платформы (например, Scania G6 → Scania R6)
- Поле canonical_model заполнено кодом canonical

Отдельная страница для alias (SEO alias):
- 10+ товаров, но та же платформа
- Создаётся страница с rel=canonical → canonical URL
- Пример: Scania G6 (906 товаров) — своя страница /scania/g6/, canonical = /scania/6/

Д4. Редиректы (301)

Ситуация Действие
Alias-модель с <10 товаров 301 → canonical модель
OEM изменился (supersession) 301 со старого URL → новый URL
Старый сайт (CS-Cart) 301 на новый URL
Узел переименован 301 со старого slug → новый

Правило цепочек: максимум 2 хопа. Если старый OEM → новый OEM → ещё новее → нужно выпрямить цепочку до 1 хопа.

Д5. Что делать при смене OEM

Шаг 1: Определить новый canonical OEM
Шаг 2: Обновить поле oem в товаре → новый OEM
Шаг 3: Добавить старый OEM в oem_crosses
Шаг 4: Создать 301: /.../{nazvanie}-{старый-oem}/ → /.../{nazvanie}-{новый-oem}/
Шаг 5: Обновить sitemap.xml
Шаг 6: Проверить цепочки (нет ли двойного хопа)

Е. UX правила

Е1. Навигация (хлебные крошки)

На каждой странице:

Главная > Запчасти > Scania > Scania 6 серия > Двигатель > Форсунка > [Название товара]

Е2. Мега-меню

Структура десктоп мега-меню:

[Марка]     [Система]      [Популярное]
Scania      Двигатель      Форсунки Scania
Volvo       Трансмиссия    Турбины Volvo
Mercedes    Кабина         ТНВД Scania
MAN         Шасси          → Все популярные
DAF         Электрика
Renault     В сборе

Е3. Страница-навигатор

Тип страниц: главная каталога, марка, модель, система.

Обязательные блоки навигатора:
1. Hero — название, описание 150-200 слов (уникальный SEO-текст)
2. Навигация вглубь — карточки следующего уровня (с количеством товаров)
3. Листинг "В сборе" — крупные карточки (фото + цена + "В наличии")
4. Листинг "Распродажа" — строчный формат (экономит место, много товаров)
5. Листинг "Популярное" — сетка 3-4 колонки
6. SEO-блок — расширенное описание, FAQ (скрыт кнопкой "читать далее")

Е4. Страница-листинг (узел)

Тип страниц: узел /scania/6/dvigatel/forsunka/.

Обязательные блоки:
1. Фильтры (сайдбар): марка, модель, цена, наличие
2. Счётчик: "Найдено: 47 форсунок для Scania 6 серии"
3. Сортировка: по цене (↑↓), по наличию, по популярности
4. Листинг: сетка 3 колонки (фото, название, OEM, цена, кнопка)
5. Пагинация: кнопка "Загрузить ещё" (без перезагрузки страницы)

Е5. Карточка товара

Обязательные блоки:
1. Галерея — фото (минимум 1)
2. Идентификация — Название, OEM, кросс-номера, Артикул
3. Цена и кнопки — Цена, "В корзину", "Купить в 1 клик"
4. Совместимость — зелёный/красный/жёлтый блок (см. Г4)
5. Технические характеристики — вес, габариты, производитель, гарантия
6. Описание — текстовое описание товара
7. "Смотрят также" — похожие товары (тот же узел, другие модели)


Ж. SEO: Яндекс, Google, Bing

Ж1. Общие теги (все страницы)

<title>...</title>                    <!-- уникальный для каждой страницы -->
<meta name="description" content="...">  <!-- уникальный -->
<link rel="canonical" href="...">        <!-- ОБЯЗАТЕЛЬНО -->
<meta name="robots" content="index,follow">  <!-- для всех SEO-страниц -->

Страницы без индексации (noindex):
- Корзина, профиль, страницы поиска
- Alias-модели с <10 товаров (только 301, не noindex)
- Фильтрованные URL с параметрами (?sort=price)

Ж2. Шаблоны meta title

Тип страницы Шаблон
Марка Запчасти {Марка} — купить в Москве
Модель Запчасти {Марка} {Модель} — {N} товаров в наличии
Система {Система} {Марка} {Модель} — каталог запчастей
Узел (листинг) {Узел} для {Марка} {Модель} — {N} товаров, цены
Товар (canonical) {Название} {OEM} для {Марка} {Модель} — цена, наличие
ANY-товар {Название} {OEM} для {Марка} — цена, наличие

Максимум: 65 символов для title, 155 для description.

Ж3. Schema.org разметка

Страница товара (Product):

{
  "@type": "Product",
  "name": "Форсунка топливная",
  "sku": "SKU-12345",
  "mpn": "2031835",
  "offers": {
    "@type": "Offer",
    "price": "12500",
    "priceCurrency": "RUB",
    "availability": "InStock"
  }
}

Хлебные крошки (BreadcrumbList): на всех страницах.

Листинг (ItemList): на страницах узла.

Ж4. Яндекс — особенности

Canonical у Яндекса = директива (обязательная к исполнению, не подсказка).

Правило Яндекс
rel=canonical строго соблюдает, не индексирует alias
Дубли страниц жёстко наказывает, обязательно ставить canonical
Alias-модели либо 301, либо canonical на основную
Тонкий контент фильтр АГС — минимум 150 слов уникального текста
Скорость PageSpeed 60+ обязательно для нормального ранжирования

Яндекс.Вебмастер — товарный граф (Маркет):
- Price: актуальная цена в рублях
- Availability: InStock / OutOfStock
- Condition: NewCondition
- Обновление: при изменении цены/остатков (не реже 1 раза в сутки)

Турбо-страницы (опционально для мобильного):
- Яндекс рекомендует для карточек товаров
- Ускоряет загрузку на мобильных
- Реализация через Яндекс Вебмастер + RSS-фид

Ж5. Google — особенности

Canonical у Google = рекомендация (может проигнорировать если сигналы слабые).

Правило Google
rel=canonical сигнал, не директива — нужны дополнительные сигналы
Внутренние ссылки должны вести на canonical URL (не alias)
Sitemap только canonical URL в sitemap
Core Web Vitals LCP < 2.5s, FID < 100ms, CLS < 0.1

Google Search Console (обязательно):
- Подключить домен
- Загрузить sitemap.xml
- Мониторить индексацию после запуска

Structured Data (обязательно для Google Shopping):
- Product + Offer + Availability
- Review (если есть отзывы)

Ж6. Bing — особенности

Меньший приоритет, но отдельные правила:

Правило Bing
rel=canonical соблюдает, аналогично Яндексу
IndexNow поддерживает быструю индексацию — использовать при обновлениях
Schema.org важен для Bing Shopping

Общее правило: делаем сайт правильно для Яндекса (строже) — Google и Bing получают автоматически.

Ж7. Sitemap.xml

Ж8. robots.txt

User-agent: *
Disallow: /cart/
Disallow: /user/
Disallow: /search?
Disallow: /admin/
Allow: /zapchasti/

Sitemap: https://lideravto.ru/sitemap-index.xml

З. Процессы добавления

З1. Добавление нового товара (алгоритм)

1. ПОЛУЧИТЬ данные от поставщика (прайс, описание, OEM)
2. ПРОВЕРИТЬ OEM:
   - Уже есть в каталоге?  обновить, не создавать дубль
   - OEM заменён?  найти актуальный через TecDoc или данные поставщика (не parts_dictionary  он для названий, не OEM)
3. ОПРЕДЕЛИТЬ систему и узел:
   - По parts_dictionary.csv  canonical name  система + узел
   - Если нет  определить вручную  добавить в словарь
4. ОПРЕДЕЛИТЬ совместимость:
   - Какие модели грузовиков?  из прайса или TecDoc
   - Проверить платформы  добавить смежные если нужно
5. ОПРЕДЕЛИТЬ URL:
   - 1 модель  /zapchasti/{marka}/{model}/{sistema}/{uzel}/{nazvanie}-{oem}/
   - 2+ модели одного бренда  /zapchasti/{marka}/any/{sistema}/{uzel}/{nazvanie}-{oem}/
   - 2+ брендов  выбрать один canonical бренд, в других  ссылки
6. СОЗДАТЬ товар в Drupal:
   - Заполнить все обязательные поля
   - Добавить фото
   - Проверить title и description (автогенерация)
7. ПРОВЕРИТЬ после сохранения:
   - URL корректный?
   - canonical правильный?
   - Появился в листинге?

З2. Добавление новой модели грузовика

1. Добавить строку в MODELS_ALL.csv:
   - Заполнить все поля (марка, код, seo_slug, url_slug, годы, платформа)
   - Определить canonical_model (или пусто если сама canonical)
2. Если canonical: создать страницу в Drupal
3. Если alias с 301: настроить редирект
4. Если SEO alias: создать страницу с rel=canonical
5. Обновить мега-меню (если показывать_меню = да)
6. Обновить BRAND_COMPATIBILITY.md если новая платформа

З3. Добавление нового узла в таксономию

1. Согласовать название (canonical name) по NAMING_RULES.md
2. Определить систему (один из 8)
3. Добавить в TAXONOMY.csv: система, название, slug
4. Добавить в parts_dictionary.csv: маппинги вариантов названий  canonical
5. Создать taxonomy term в Drupal
6. SEO-страница узла создаётся автоматически при появлении первого товара

И. Процессы обновления

И1. Обновление цен и остатков

Источник: прайс-лист поставщика (CSV/Excel)
Частота: ежедневно (автоматически) или по запросу

Алгоритм:
1. Загрузить прайс в /mnt/beget-s3/lideravto/inbox/
2. Запустить: drush lider:update-prices --file=prais.csv
3. Проверить: log/prices-YYYY-MM-DD.log
4. Обновление Schema.org Offer = автоматически при сохранении

И2. Смена OEM (supersession)

1. Получить информацию о замене: старый OEM  новый OEM
2. Найти товар по старому OEM в Drupal
3. Обновить поле oem  новый OEM
4. Добавить старый OEM в oem_crosses
5. Создать 301: /.../{nazvanie}-{старый}/  /.../{nazvanie}-{новый}/
6. Проверить цепочки (нет ли тройного хопа)
7. Обновить sitemap.xml
8. Уведомить Google/Яндекс через IndexNow

И3. Объединение дублей

Ситуация: обнаружили два товара с разными OEM, но это один физический товар.

1. Определить canonical OEM (по правилам В2)
2. Перенести все поля из дубля в основной (добавить OEM в кросс-номера)
3. Настроить 301: URL дубля  URL основного
4. Удалить/архивировать дубль (не физически удалять  историю сохраняем)
5. Проверить внутренние ссылки (если где-то ссылались на дубль)

И4. Снятие с продажи

НЕ УДАЛЯТЬ товар — только архивировать:
1. Установить остаток = 0
2. Установить статус = "Архив"
3. Страница остаётся (SEO не теряем)
4. На странице: "Товар снят с производства. Возможные аналоги:"
5. Добавить ссылки на аналоги из того же узла
6. Sitemap: убрать из основного sitemap, добавить в архивный

К. Импорт из CSV/прайсов

К1. Формат входного файла

Минимальные колонки для импорта:

oem;название;цена;остаток;модели
2031835;Форсунка топливная;12500;5;Scania 5-R,Scania 6-R

Расширенный формат (предпочтительный):

oem;название;цена;остаток;модели;производитель;вес;гарантия

Кодировка: UTF-8. Разделитель: ; (точка с запятой).

К2. Маппинг через parts_dictionary

Файл: it/lider-drupal/data/parts_dictionary.csv

Содержит: bazon_name → canonical_name → система → узел

При импорте: название из прайса → lookup в словаре → система + узел.
Если нет совпадения → товар попадает в очередь ручной обработки.

К3. Обработка дублей при импорте

1. Найти товар по OEM (первичный ключ)
2. Если найден  обновить цену/остаток/производителя
3. Если не найден  проверить oem_crosses
4. Если нашли через кросс  обновить (не создавать новый)
5. Если нигде не нашли  создать новый

К4. Команды импортёра (Drupal drush)

# Импорт каталога из CSV
drush lider:import-products --file=catalog.csv --dry-run   # preview
drush lider:import-products --file=catalog.csv             # реальный импорт

# Импорт таксономии
drush lider:import-taxonomy --file=taxonomy.csv

# Импорт моделей грузовиков
drush lider:import-models --file=models.csv

# Обновление цен
drush lider:update-prices --file=prices.csv

# Пересчёт canonical/any URLs
drush lider:rebuild-urls

К5. Проверка после импорта

Проверить:
□ Количество импортированных записей (лог)
□ Количество ошибок (лог)
□ Несколько случайных товаров — URL правильный?
□ Фильтрация в листинге работает?
□ Поиск находит новые OEM?
□ Canonical теги проставлены?

Л. Качество каталога

Л1. Регулярные проверки (еженедельно)

# Дубли OEM
drush lider:check-duplicates

# Товары без фото
drush lider:report --filter=no-photo

# Товары без совместимости
drush lider:report --filter=no-models

# Broken URLs (404)
drush lider:check-urls

# Цепочки редиректов >2 хопов
drush lider:check-redirects

Л2. Метрики каталога (отчёт)

Метрика Цель Команда
Всего товаров drush lider:stats
С фото >90% drush lider:stats
С совместимостью >95% drush lider:stats
Дублей OEM 0 drush lider:check-duplicates
Broken 301 0 drush lider:check-redirects
Цепочки 3+ хопов 0 drush lider:check-redirects

Л3. Обновление словарей (при добавлении новых узлов)

При добавлении нового типа деталей в каталог:
1. Добавить новый узел в TAXONOMY.csv
2. Добавить маппинги в parts_dictionary.csv
3. Запустить drush lider:rebuild-taxonomy
4. Перепроверить товары в очереди ручной обработки


М. Закреплённые наименования новых моделей (2019–2026)

Зафиксированы slug и названия для актуальных и перспективных моделей,
добавленных в MODELS_ALL.csv в марте 2026. Товаров пока нет — строки резервируют URL.

Марка Код URL Полное название С года Совместимость
Scania Super /scania/super/ Scania Super (2023–н.в.) 2023 Кабина ≈ 6 серия NXT; двигатель SC13 — новый
Volvo 5-FH /volvo/fh5/ Volvo FH V (2021–н.в.) 2021 Двигатель D13K/D16K ≈ FH4; кабина — другая
MAN 3-TGX /man/tgx-3/ MAN TGX III (2020–н.в.) 2020 Новое поколение после TGX II
Iveco S-Way /iveco/s-way/ Iveco S-Way (2019–н.в.) 2019 Шасси и двигатели ≈ Stralis
DAF XG /daf/xg/ DAF XG/XG+ (2021–н.в.) 2021 Новая платформа, несовместима с XF106

Правила slug при добавлении новых поколений

Ситуация Правило Пример
Новое поколение линейки добавить номер поколения fh4fh5
Полностью новая модель slug по названию модели s-way, xg, super
Год в названии не использовать в slug ~~fh-2021~~

Правила платформы

Ситуация Платформа Кросс-платформа
Новая платформа без преемственности новый код DAF-XG
Новая кабина, старый двигатель новый код VOL-FH5 VOL-E6 (FH4)
Новый двигатель, старая кабина новый код SCN-SUPER SCN-NXT (6 серия)

Совместимость при добавлении товаров


Связанные документы

Документ Назначение
SITE_STRUCTURE.md URL-схема, SEO-шаблоны, типы страниц
COMPATIBILITY_MATRIX.md ⭐ Матрица совместимости: 3 правила (PLATFORM/ENGINE/CABIN)
BRAND_COMPATIBILITY.md Платформенная совместимость брендов
NAMING_RULES.md Правила именования деталей
TAXONOMY.csv Эталон таксономии (8 систем, 61 узел) — it/data/references/
MODELS_ALL.csv Модели грузовиков (canonical/alias) — it/data/references/
parts_dictionary.csv Словарь названий деталей — it/lider-drupal/data/
IMPORT_ALGORITHM.md Детальный алгоритм импортёра

Версия: 1.0.0
Дата: 2026-03-13

← Назад в оглавление