Структура SKU: Архитектура компонентов через дефис

В этой статье объясняется, как наша система SKU (Stock Keeping Unit) использует структуру с разделением дефисами для уникальной идентификации каждой конфигурации продукта, а также для мощного извлечения характеристик и фильтрации.

Проблема: Идентификация конфигураций продукта

Мини-ПК может иметь тысячи конфигураций:

  • Корпус (Chassis): Treo, S, H (разные форм-факторы)

  • Плата (Board): N100, i5-1335U, i7-1355U (разные процессоры)

  • ОЗУ (RAM): 4GB, 8GB, 16GB, 32GB, 64GB

  • Накопитель (Flash): 128GB, 256GB, 512GB, 1TB, 2TB

  • Адаптер (Adapter): 2H (2 HDMI), 2D (2 DisplayPort), 1H1D (1 HDMI + 1 DisplayPort)

  • WiFi: W6 (WiFi 6), W6E (WiFi 6E), None

  • ОС (OS): 11P (Windows 11 Pro), U (Ubuntu), DOS (FreeDOS)

  • Аксессуары (Accessories): Клавиатура, мышь, крепление VESA и т.д.

При 3 корпусах × 10 платах × 5 вариантах ОЗУ × 5 накопителях × 5 адаптерах × 3 WiFi × 3 ОС = 33 750 возможных конфигураций нам нужен систематический способ идентифицировать каждую.

Решение: SKU через дефис

Мы используем структуру с разделением дефисами, где каждая позиция представляет категорию компонента:

Treo-N100-8-256-2H-W6-11P

Это создает уникальный идентификатор для каждой конфигурации.

Разбор SKU

graph LR
    SKU[Treo-N100-8-256-2H-W6-11P]
    SKU --> C[Treo
Корпус] SKU --> B[N100
Плата/ЦП] SKU --> R[8
ОЗУ, ГБ] SKU --> F[256
Накопитель, ГБ] SKU --> A[2H
Адаптер] SKU --> W[W6
WiFi 6] SKU --> O[11P
Windows 11 Pro]

Последовательность компонентов

SKU следует фиксированной последовательности, определенной в коде:

part_sequence = [
    Categories.CHASSIS,      # Позиция 0
    Categories.BOARD,        # Позиция 1
# ... (детали реализации опущены)

Каждый SKU должен содержать как минимум первые 7 компонентов (от Chassis до OS). Аксессуары являются опциональными.

Категории компонентов

1. Корпус (Chassis)

Физический корпус и форм-фактор:

  • Treo: Последняя версия корпуса для мини-ПК (компактный, современный дизайн)

  • S: Малый форм-фактор (компактный десктоп)

  • H: Стандартный форм-фактор (традиционный десктоп)

Корпус определяет:

  • Физические размеры

  • Варианты крепления (VESA, настольное)

  • Тепловую конструкцию (пассивное vs активное охлаждение)

  • Расположение портов

2. Плата (Board)

Материнская плата с процессором:

  • N100: Intel N100 (4 ядра, 3.4 ГГц, TDP 6 Вт)

  • N150: Intel N150 (4 ядра, 3.6 ГГц, TDP 6 Вт)

  • i5-1335U: Intel Core i5 13-го поколения (10 ядер, 4.6 ГГц, TDP 15 Вт)

  • i7-1355U: Intel Core i7 13-го поколения (10 ядер, 5.0 ГГц, TDP 15 Вт)

Плата определяет:

  • Поколение, серию и модель процессора

  • Количество ядер

  • Максимальную частоту

  • Размер кэша

  • Интегрированную графику

3. ОЗУ (RAM)

Объем оперативной памяти:

  • 4: 4 ГБ DDR4

  • 8: 8 ГБ DDR4

  • 16: 16 ГБ DDR4

  • 32: 32 ГБ DDR4

  • 64: 64 ГБ DDR4

ОЗУ указывается в ГБ без единицы измерения.

4. Накопитель (Flash)

Емкость SSD-накопителя:

  • 128: 128 ГБ SSD

  • 256: 256 ГБ SSD

  • 512: 512 ГБ SSD

  • 1024: 1 ТБ SSD (1024 ГБ)

  • 2048: 2 ТБ SSD (2048 ГБ)

Накопитель указывается в ГБ без единицы измерения.

5. Адаптер (Adapter)

Конфигурация видеовыходов:

  • 2H: 2× порта HDMI

  • 2D: 2× DisplayPort

  • 1H1D: 1× HDMI + 1× DisplayPort

  • 1H1V: 1× HDMI + 1× VGA

  • 3H: 3× порта HDMI

Адаптер определяет доступные видеовыходы.

6. WiFi

Беспроводное подключение:

  • W6: WiFi 6 (802.11ax) + Bluetooth 5.2

  • W6E: WiFi 6E (802.11ax 6 ГГц) + Bluetooth 5.2

  • None: Без беспроводного модуля (только Ethernet)

7. ОС (OS)

Операционная система:

  • 11P: Microsoft Windows 11 Pro

  • U: Ubuntu Linux 24.04 LTS

  • DOS: FreeDOS (без ОС)

  • Thinux: Thinvent® Thinux™ Embedded Linux

8. Аксессуары (Accessories, опционально)

Дополнительные компоненты:

  • KM: Комплект клавиатура + мышь

  • MK: Механическая клавиатура

  • VESA: Кронштейн для крепления VESA

  • Stand: Регулируемая подставка

Несколько аксессуаров можно комбинировать: KM-VESA

Валидация SKU

Не все комбинации являются допустимыми. Мы проверяем SKU с помощью правил совместимости:

Функция проверки SKU

def check_sku(sku: str) -> bool:
    partids = sku.split("-")
    if len(partids) < len(part_sequence):
# ... (детали реализации опущены)

Ограничения совместимости

Компоненты могут указывать, с какими другими компонентами они совместимы:

Пример: Корпус Treo допускает определенные платы

{
  "Treo": {
    "allows": {
      "Board": ["N100", "N150", "i5-1335U"],
      "RAM": ["4", "8", "16", "32"],
      "Adapter": ["2H", "1H1D"]
    }
  }
}

Это предотвращает недопустимые комбинации, такие как "Treo-i7-64-2048-3H" (Treo не поддерживает i7 или адаптер 3H).

Расшифровка SKU

Мы преобразуем SKU в понятные человеку названия:

def expand_sku(sku: str) -> str:
    part_ids = sku.split("-")
    part_names = [
        productdb[part_sequence[i].value][part_id]["external"] 
# ... (детали реализации опущены)        
    ]

Пример:

Ввод:  Treo-N100-8-256-2H-W6-11P
Вывод: Мини-ПК Treo, Intel N100, 8 ГБ DDR4, 256 ГБ SSD, 2× HDMI, WiFi 6, Windows 11 Pro

Поле external содержит название компонента, отображаемое клиенту.

Извлечение характеристик

Структура SKU позволяет автоматически извлекать характеристики:

Последовательность характеристик

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

feature_sequence = {
    "Generation": {"Unit": "", "Heading": "Processing"},
    "Series": {"Unit": "", "Heading": "Processing"},
# ... (детали реализации опущены)

Каждая характеристика имеет:

  • Unit: Единица измерения (ГБ, ГГц, Мбит/с)

  • Heading: Категория для группировки (Обработка, Дисплей, Подключение)

Извлечение характеристик

Для каждого компонента в SKU мы извлекаем его характеристики:

# Плата: N100
{
    "Generation": "12th",
# ... (детали реализации опущены)

Эти характеристики агрегируются по всем компонентам для создания полного набора характеристик продукта.

Преимущества этой структуры

1. Уникальная идентификация

Каждая конфигурация имеет уникальный SKU. Никакой неоднозначности.

2. Понятность для человека

SKU понятен человеку:

  • Treo-N100-8-256-2H-W6-11P четко показывает конфигурацию

  • Не нужно заглядывать в базу данных, чтобы понять, что это

3. Сортировка

SKU сортируются естественным образом:

  • Treo-N100-8-256-2H-W6-11P

  • Treo-N100-16-512-2H-W6-11P

  • Treo-i5-16-512-2H-W6-11P

Сортировка по SKU группирует похожие конфигурации вместе.

4. Фильтрация

Мы можем фильтровать по любому компоненту:

  • Все продукты Treo: Treo-*

  • Все продукты с N100: *-N100-*

  • Все продукты с 16 ГБ ОЗУ: *-16-*

5. Извлечение характеристик

Структура позволяет автоматически извлекать характеристики для:

  • Страниц продуктов (отображение характеристик)

  • Фильтров поиска (фильтрация по ОЗУ, накопителю и т.д.)

  • Таблиц сравнения (сравнение характеристик)

6. Расчет стоимости

Мы можем рассчитать стоимость, суммируя стоимость компонентов:

def calculate_sku_cost(sku: str) -> float:
# ... (детали реализации опущены)
    return total_cost

7. Генерация URL

SKU напрямую отображаются на URL продуктов:

SKU:  Treo-N100-8-256-2H-W6-11P
URL:  /p/Treo-N100-8-256-2H-W6-11P

Отдельный слаг для URL не требуется.

Составные компоненты

Некоторые компоненты являются составными (состоят из нескольких частей):

Пример: Плата с интегрированными компонентами

{
  "N100": {
    "external": "Intel N100",
# ... (детали реализации опущены)

Это позволяет:

  • Ведомость материалов (BOM): Перечислить все необходимые компоненты

  • Расчет стоимости: Суммировать стоимость составляющих

  • Отслеживание запасов: Отслеживать использование компонентов

SKU для отдельных компонентов

Не все SKU содержат дефисы. Отдельные компоненты также могут быть SKU:

  • N100 (только плата)

  • Treo (только корпус)

  • KM (клавиатура + мышь)

Они используются для:

  • Запасных частей

  • Апгрейдов

  • Аксессуаров

Функция is_single_part() проверяет, является ли SKU отдельным компонентом или полным продуктом.

Интеграция с SEO-пайплайном

Структура SKU питает SEO-пайплайн:

  1. Извлечение характеристик: Извлечение характеристик для соответствия фраз
  2. Генерация фильтров: Создание фильтров для извлечения фильтров
  3. Сопоставление продуктов: Сопоставление запросов с продуктами по характеристикам
  4. Страницы запросов: Генерация страниц для комбинаций характеристик

Подробности см. в Обзоре SEO-пайплайна.

Ссылки

Технические концепции

Связанные статьи

Резюме

Наша система SKU использует структуру с разделением дефисами для уникальной идентификации конфигураций продуктов:

  • Структура: Корпус-Плата-ОЗУ-Накопитель-Адаптер-WiFi-ОС-Аксессуары

  • Пример: Treo-N100-8-256-2H-W6-11P

  • Преимущества:

  • Уникальная идентификация (33 750+ конфигураций)

  • Понятность для человека (не нужно заглядывать в справочник)

  • Сортировка (естественный порядок)

  • Фильтрация (по любому компоненту)

  • Извлечение характеристик (автоматическое)

  • Расчет стоимости (сумма частей)

  • Генерация URL (прямое отображение)

Валидация:

  • Проверка существования компонента

  • Ограничения совместимости

  • Требование минимальной длины

Расшифровка:

  • SKU → Понятное человеку название

  • Компонент → Характеристики

  • Характеристики → Фильтры

Эта структура является основой нашего каталога продуктов, обеспечивая мощный поиск, фильтрацию и SEO-оптимизацию.


← Назад к указателю документации