SKU结构:连字符分隔的组件架构

本文解释我们的SKU(库存单位)系统如何使用连字符分隔的结构来唯一标识每个产品配置,同时实现强大的特性提取和筛选功能。

问题:识别产品配置

一台迷你电脑可能有数千种配置:

  • 机箱:Treo、S、H(不同外形规格)

  • 主板:N100、i5-1335U、i7-1355U(不同处理器)

  • 内存:4GB、8GB、16GB、32GB、64GB

  • 闪存:128GB、256GB、512GB、1TB、2TB

  • 适配器:2H(2个HDMI)、2D(2个DisplayPort)、1H1D(1个HDMI + 1个DisplayPort)

  • WiFi:W6(WiFi 6)、W6E(WiFi 6E)、无

  • 操作系统:11P(Windows 11专业版)、U(Ubuntu)、DOS(FreeDOS)

  • 配件:键盘、鼠标、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
主板/CPU] SKU --> R[8
内存 GB] SKU --> F[256
闪存 GB] SKU --> A[2H
适配器] SKU --> W[W6
WiFi 6] SKU --> O[11P
Windows 11 专业版]

部件顺序

SKU遵循代码中定义的固定顺序:

part_sequence = [
    Categories.CHASSIS,      # 位置 0
    Categories.BOARD,        # 位置 1
# ... (实现细节省略)

每个SKU必须至少包含前7个组件(从机箱到操作系统)。配件是可选的。

组件类别

1. 机箱

物理外壳和外形规格:

  • Treo:最新的迷你电脑机箱(紧凑,现代设计)

  • S:小型外形规格(紧凑型台式机)

  • H:标准外形规格(传统台式机)

机箱决定了:

  • 物理尺寸

  • 安装选项(VESA、桌面)

  • 散热设计(无风扇 vs 风扇冷却)

  • 端口布局

2. 主板

带处理器的主板:

  • N100:Intel N100(4核,3.4GHz,6W TDP)

  • N150:Intel N150(4核,3.6GHz,6W TDP)

  • i5-1335U:Intel Core i5 第13代(10核,4.6GHz,15W TDP)

  • i7-1355U:Intel Core i7 第13代(10核,5.0GHz,15W TDP)

主板决定了:

  • 处理器代次、系列、型号

  • 核心数量

  • 最大频率

  • 缓存大小

  • 集成显卡

3. 内存

主内存容量:

  • 4:4GB DDR4

  • 8:8GB DDR4

  • 16:16GB DDR4

  • 32:32GB DDR4

  • 64:64GB DDR4

内存以GB为单位指定,不带单位。

4. 闪存

SSD存储容量:

  • 128:128GB SSD

  • 256:256GB SSD

  • 512:512GB SSD

  • 1024:1TB SSD(1024GB)

  • 2048:2TB SSD(2048GB)

闪存以GB为单位指定,不带单位。

5. 适配器

显示输出配置:

  • 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)+ 蓝牙 5.2

  • W6E:WiFi 6E(802.11ax 6GHz)+ 蓝牙 5.2

  • :无无线(仅限以太网)

7. 操作系统

操作系统:

  • 11P:Microsoft Windows 11 专业版

  • U:Ubuntu Linux 24.04 LTS

  • DOS:FreeDOS(无操作系统)

  • Thinux:Thinvent® Thinux™ 嵌入式 Linux

8. 配件(可选)

额外组件:

  • KM:键盘 + 鼠标组合

  • MK:机械键盘

  • VESA:VESA支架

  • 支架:可调节支架

多个配件可以组合: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,8GB DDR4,256GB SSD,2× HDMI,WiFi 6,Windows 11 专业版

external 字段包含每个组件面向客户的名称。

特性提取

SKU结构支持自动特性提取:

特性顺序

我们定义要提取的特性顺序:

feature_sequence = {
    "Generation": {"Unit": "", "Heading": "Processing"},
    "Series": {"Unit": "", "Heading": "Processing"},
# ... (实现细节省略)

每个特性具有:

  • 单位:计量单位(GB、GHz、Mbps)

  • 标题:用于分组的类别(处理、显示、连接性)

提取特性

对于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-*

  • 所有16GB产品:*-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 slug。

复合项目

某些组件是复合的(由多个部件组成):

示例:带集成组件的主板

{
  "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优化。


← 返回文档索引