projects/org/@biz-lideravto/it/design/DESIGN-analysis.md

ANALYSIS — lideravto-new

Версия: 1.0.0
Дата: 2026-02-14
Основа: Анализ решений для каталога запчастей

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


Специфика грузовых запчастей

Отличия от обычного e-commerce

Критерий Обычный магазин Каталог запчастей
Поиск Название, бренд OEM номер, модель грузовика
Атрибуты 3-5 (цвет, размер) 10+ (марка, модель, платформа, двигатель, узел, агрегат)
Решение покупки Визуальное (красиво/некрасиво) Техническая совместимость
Конверсия Эмоции + дизайн Точность подбора
Возвраты Редко (размер не подошёл) Критично (деталь не подходит = потеря денег)
Клиенты B2C (физлица) B2B (СТО, автопарки) + B2C

Ключевые требования

  1. Совместимость ПЕРВИЧНА — пользователь должен видеть "подходит/не подходит" ДО покупки
  2. OEM номер — быстрый поиск по оригинальному артикулу (профессионалы знают номер)
  3. Множественные поставщики — один OEM = разные цены/склады/сроки
  4. Технические характеристики — не "красиво", а "совместимо"
  5. B2B ориентированность — многие клиенты — СТО, автопарки (нужны оптовые цены, счета)

Решение 1: Архитектура каталога

Проблема

Как организовать каталог, чтобы пользователь БЫСТРО нашёл нужную деталь?

Варианты

A. Классический каталог (по категориям)

Все запчасти → Двигатель → Турбины → [список турбин]

Плюсы:
- Привычно для обычных магазинов
- Простая структура

Минусы:
- ❌ Пользователь не знает подходит ли деталь
- ❌ Нужно фильтровать по марке ПОСЛЕ входа в категорию
- ❌ Много кликов до нужной детали

B. Вход через марку грузовика ✅ ВЫБРАНО

Volvo → Кабина → Подвеска → Амортизаторы

Плюсы:
- ✅ Пользователь сразу видит ТОЛЬКО совместимые детали
- ✅ Меньше кликов (2-3 вместо 4-5)
- ✅ Снижение ошибок (покупка неподходящей детали)

Минусы:
- Нужна матрица совместимости (деталь ↔ модель)
- Более сложная архитектура

C. Гибридный подход ✅ РЕАЛИЗОВАНО

3 входа в каталог:
1. По марке (для новичков): Volvo → Модель → Узел → Деталь
2. По узлам (для опытных): Все узлы → Узел → Деталь + фильтр по марке/модели
3. Поиск OEM (для профи): "20499340" → сразу товар

Итог: Удовлетворяет всех пользователей.


Решение 2: Фильтрация

Проблема

Много атрибутов (марка, модель, платформа, двигатель, узел, агрегат, склад). Где разместить фильтры?

Варианты

A. Horizontal (сверху)

┌────────────────────────────────────────────┐
│ [Марка ▼] [Модель ▼] [Узел ▼] [Цена ▼]   │
├────────────────────────────────────────────┤
│ [Товары grid 4 колонки]                    │

Плюсы:
- Компактно

Минусы:
- ❌ Мало места для фильтров (нужно в dropdown)
- ❌ Сложно показать >5 фильтров

B. Sidebar (слева) ✅ ВЫБРАНО

┌──────────┬────────────────────────────────┐
│ ФИЛЬТРЫ  │ Найдено: 142 товара            │
│          │                                │
│ Марка    │ [Grid товаров]                 │
│ ☑ Volvo  │                                │
│          │                                │
│ Модель   │                                │
│ ☑ FH4    │                                │
└──────────┴────────────────────────────────┘

Плюсы:
- ✅ Много места для фильтров (10+)
- ✅ Видны все выбранные фильтры одновременно
- ✅ Привычно для b2b (похоже на EXIST, EMEX)

Минусы:
- Занимает место по горизонтали (решается: sidebar 250px, контент 70%)

Тип фильтров: Default (Checkboxes)

Почему NOT Range?

 ПЛОХО (Range для марок):
[Volvo]────────────[Scania]
    что это вообще значит? "от Volvo до Scania"?

 ХОРОШО (Checkboxes):
 Volvo (58 товаров)
 MAN (45 товаров)
 Scania (42 товара)

Range подходит ТОЛЬКО для:
- Цена: [500]──[10000]
- Вес: [1]──[50] кг


Решение 3: Поиск

Проблема

Профессионалы знают OEM номер ("20499340"), новички — только модель ("Volvo FH4"). Как обеспечить оба сценария?

Решение: 3 режима поиска ✅ РЕАЛИЗОВАНО

1. Умный поиск (default)

Ввод: "амортизатор volvo"
Результат:
  - Товары с "амортизатор" + марка Volvo
  - Категория "Амортизаторы"
  - Марка "Volvo"

2. Поиск по OEM

Ввод: "20499340"
Детект: только цифры, похоже на OEM
Результат: Прямой переход на карточку товара

3. Поиск по артикулу

Ввод: "BAZON-2049"
Детект: буквы + дефис + цифры
Результат: Поиск в поле SKU

Автодополнение (Suggestion)

Ввод: "amor"
Dropdown:
  🔍 амортизатор volvo (78 товаров)
  🔍 амортизатор man (45 товаров)
  📦 Амортизаторы → категория

Решение 4: Совместимость

Проблема

Как показать пользователю "подходит ли деталь к его грузовику"?

Решение: Матрица M:N ✅ РЕАЛИЗОВАНО

Модель данных

Product (id, title, sku, oem, ...)
     M:N
ProductCompatibility (product_id, model_id)
    
Model (id, name, brand_id, platform, ...)

Отображение на карточке товара

┌────────────────────────────────────────┐
│ Амортизатор передний (OEM 20499340)   │
│                                        │
│ Совместимо с:                          │
│ ✅ Volvo FH4 (2012-2020)               │
│ ✅ Volvo FM (2013-2020)                │
│ ✅ Volvo FMX (2013-2018)               │
│                                        │
│ ❌ НЕ подходит для:                    │
│ ✗ Volvo FH3 (устаревшая платформа)    │
└────────────────────────────────────────┘

Логика в модуле dru_lider_compatibility

function checkCompatibility($product_id, $model_id) {
  // Проверка прямой совместимости
  $direct = db_query("SELECT 1 FROM product_compatibility
                      WHERE product_id = ? AND model_id = ?",
                     [$product_id, $model_id])->fetchField();

  if ($direct) return 'compatible';

  // Проверка через платформу
  $platform_match = db_query("SELECT 1 FROM products p
                              JOIN models m ON p.platform = m.platform
                              WHERE p.id = ? AND m.id = ?",
                             [$product_id, $model_id])->fetchField();

  if ($platform_match) return 'maybe';

  return 'incompatible';
}

Решение 5: SEO

Проблема

Как сохранить SEO позиции при миграции с CS-Cart на Drupal?

Решение: 301 Redirects ✅ ПЛАНИРУЕТСЯ

Маппинг URL

CS-Cart (старый):
/trucks/volvo/fh4/podveska/amortizator-20499340.html

Drupal (новый):
/zapchasti/volvo/fh4/podveska/amortizator-20499340/

Redirect:
301 /trucks/* → /zapchasti/volvo/*

Модуль dru_lider_seo


Решение 6: Производительность

Проблема

~13 000 позиций + матрица совместимости = много JOIN запросов. Как обеспечить <2 сек загрузки каталога?

Решение: Кеширование ✅ ПЛАНИРУЕТСЯ

Drupal Cache API

// Кеш списка товаров категории
$cache_key = "catalog:category:{$category_id}:page:{$page}";
$cached = \Drupal::cache()->get($cache_key);

if ($cached) {
  return $cached->data;
}

$products = loadProductsFromDB($category_id, $page);
\Drupal::cache()->set($cache_key, $products, time() + 3600); // 1 час
return $products;

Стратегия кеширования

Данные TTL Invalidation
Список товаров категории 1 час При добавлении/удалении товара
Карточка товара 24 часа При изменении товара
Mega Menu 24 часа При изменении категорий
Фильтры 1 час При изменении товаров

Выводы

Принятые решения

# Решение Обоснование
1 Вход через марку грузовика Снижение ошибок, меньше кликов
2 Sidebar фильтры Место для 10+ фильтров
3 3 режима поиска Удовлетворение всех пользователей
4 Матрица совместимости M:N Точный подбор деталей
5 301 redirects Сохранение SEO
6 Drupal Cache API Производительность <2 сек

→ Метрики успеха: BRIEF.md — раздел "Бизнес-цели (KPI)"


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

Родительские:
- BRIEF.md — техническое задание
- REQUIREMENTS.md — детальные требования

Дочерние:
- DESIGN.md — архитектура решения (итоговое)

Детали реализации (архив):
- ../docs/arh/superseded/CATALOG_ARCHITECTURE.md — детальная архитектура каталога (устарело)
- ../docs/arh/DESIGN_ANALYSIS.md — анализ UX решений
- ../docs/arh/COMPATIBILITY_SOLUTION.md — система совместимости


Версия: 1.0.0

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