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流程提供支持:
详情请参阅SEO流程概述。
参考资料
技术概念
相关文章
-
productdb.json作为单一事实来源 - 产品数据库结构
-
特性提取与聚合 - 如何提取特性
-
SKU结构如何实现唯一页面 - SEO优势
-
短语到筛选器映射 - 使用特性进行筛选
-
SEO流程概述 - 完整的流程架构
总结
我们的SKU系统使用连字符分隔的结构来唯一标识产品配置:
-
结构:
机箱-主板-内存-闪存-适配器-WiFi-操作系统-配件 -
示例:
Treo-N100-8-256-2H-W6-11P -
优势:
-
唯一标识(33,750+种配置)
-
人可读(无需查找)
-
可排序(自然排序)
-
可筛选(按任何组件)
-
特性提取(自动)
-
成本计算(部件总和)
-
URL生成(直接映射)
验证:
-
组件存在性检查
-
兼容性约束
-
最小长度要求
扩展:
-
SKU → 人可读名称
-
组件 → 特性
-
特性 → 筛选器
此结构是我们产品目录的基础,支持强大的搜索、筛选和SEO优化。