Версия: 1.0.0
Дата: 2026-02-14
Основа: Анализ решений для каталога запчастей
| Критерий | Обычный магазин | Каталог запчастей |
|---|---|---|
| Поиск | Название, бренд | OEM номер, модель грузовика |
| Атрибуты | 3-5 (цвет, размер) | 10+ (марка, модель, платформа, двигатель, узел, агрегат) |
| Решение покупки | Визуальное (красиво/некрасиво) | Техническая совместимость |
| Конверсия | Эмоции + дизайн | Точность подбора |
| Возвраты | Редко (размер не подошёл) | Критично (деталь не подходит = потеря денег) |
| Клиенты | B2C (физлица) | B2B (СТО, автопарки) + B2C |
Как организовать каталог, чтобы пользователь БЫСТРО нашёл нужную деталь?
Все запчасти → Двигатель → Турбины → [список турбин]
Плюсы:
- Привычно для обычных магазинов
- Простая структура
Минусы:
- ❌ Пользователь не знает подходит ли деталь
- ❌ Нужно фильтровать по марке ПОСЛЕ входа в категорию
- ❌ Много кликов до нужной детали
Volvo → Кабина → Подвеска → Амортизаторы
Плюсы:
- ✅ Пользователь сразу видит ТОЛЬКО совместимые детали
- ✅ Меньше кликов (2-3 вместо 4-5)
- ✅ Снижение ошибок (покупка неподходящей детали)
Минусы:
- Нужна матрица совместимости (деталь ↔ модель)
- Более сложная архитектура
3 входа в каталог:
1. По марке (для новичков): Volvo → Модель → Узел → Деталь
2. По узлам (для опытных): Все узлы → Узел → Деталь + фильтр по марке/модели
3. Поиск OEM (для профи): "20499340" → сразу товар
Итог: Удовлетворяет всех пользователей.
Много атрибутов (марка, модель, платформа, двигатель, узел, агрегат, склад). Где разместить фильтры?
┌────────────────────────────────────────────┐
│ [Марка ▼] [Модель ▼] [Узел ▼] [Цена ▼] │
├────────────────────────────────────────────┤
│ [Товары grid 4 колонки] │
Плюсы:
- Компактно
Минусы:
- ❌ Мало места для фильтров (нужно в dropdown)
- ❌ Сложно показать >5 фильтров
┌──────────┬────────────────────────────────┐
│ ФИЛЬТРЫ │ Найдено: 142 товара │
│ │ │
│ Марка │ [Grid товаров] │
│ ☑ Volvo │ │
│ │ │
│ Модель │ │
│ ☑ FH4 │ │
└──────────┴────────────────────────────────┘
Плюсы:
- ✅ Много места для фильтров (10+)
- ✅ Видны все выбранные фильтры одновременно
- ✅ Привычно для b2b (похоже на EXIST, EMEX)
Минусы:
- Занимает место по горизонтали (решается: sidebar 250px, контент 70%)
Почему NOT Range?
❌ ПЛОХО (Range для марок):
[Volvo]────────────[Scania]
↑ что это вообще значит? "от Volvo до Scania"?
✅ ХОРОШО (Checkboxes):
☑ Volvo (58 товаров)
☐ MAN (45 товаров)
☑ Scania (42 товара)
Range подходит ТОЛЬКО для:
- Цена: [500]──[10000]
- Вес: [1]──[50] кг
Профессионалы знают OEM номер ("20499340"), новички — только модель ("Volvo FH4"). Как обеспечить оба сценария?
Ввод: "амортизатор volvo"
Результат:
- Товары с "амортизатор" + марка Volvo
- Категория "Амортизаторы"
- Марка "Volvo"
Ввод: "20499340"
Детект: только цифры, похоже на OEM
Результат: Прямой переход на карточку товара
Ввод: "BAZON-2049"
Детект: буквы + дефис + цифры
Результат: Поиск в поле SKU
Ввод: "amor"
Dropdown:
🔍 амортизатор volvo (78 товаров)
🔍 амортизатор man (45 товаров)
📦 Амортизаторы → категория
Как показать пользователю "подходит ли деталь к его грузовику"?
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 (устаревшая платформа) │
└────────────────────────────────────────┘
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';
}
Как сохранить SEO позиции при миграции с CS-Cart на Drupal?
CS-Cart (старый):
/trucks/volvo/fh4/podveska/amortizator-20499340.html
Drupal (новый):
/zapchasti/volvo/fh4/podveska/amortizator-20499340/
Redirect:
301 /trucks/* → /zapchasti/volvo/*
~13 000 позиций + матрица совместимости = много JOIN запросов. Как обеспечить <2 сек загрузки каталога?
// Кеш списка товаров категории
$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