SKU構造: ハイフン区切りコンポーネントアーキテクチャ

この記事では、当社のSKU(在庫管理単位)システムがハイフン区切りの構造をどのように使用して、あらゆる製品構成を一意に識別し、強力な機能抽出とフィルタリングを可能にするかを説明します。

課題: 製品構成の識別

ミニPCには数千もの構成があります:

  • シャーシ: Treo, S, H (異なるフォームファクター)

  • ボード: N100, i5-1335U, i7-1355U (異なるプロセッサー)

  • RAM: 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), None

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

  • アクセサリー: キーボード、マウス、VESAマウントなど

3シャーシ × 10ボード × 5 RAM × 5 フラッシュ × 5 アダプター × 3 WiFi × 3 OS = 33,750の可能な構成となり、それぞれを体系的に識別する方法が必要です。

解決策: ハイフン区切りSKU

各位置がコンポーネントカテゴリを表すハイフン区切りの構造を使用します:

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

これにより、すべての構成に対して一意の識別子が作成されます。

SKUの内訳

graph LR
    SKU[Treo-N100-8-256-2H-W6-11P]
    SKU --> C[Treo
Chassis] SKU --> B[N100
Board/CPU] SKU --> R[8
RAM GB] SKU --> F[256
Flash GB] SKU --> A[2H
Adapter] SKU --> W[W6
WiFi 6] SKU --> O[11P
Windows 11 Pro]

パーツの順序

SKUはコードで定義された固定の順序に従います:

part_sequence = [
    Categories.CHASSIS,      # Position 0
    Categories.BOARD,        # Position 1
# ... (実装の詳細は省略)

すべてのSKUには、最初の7つのコンポーネント(シャーシからOSまで)が少なくとも含まれている必要があります。アクセサリーはオプションです。

コンポーネントカテゴリ

1. シャーシ

物理的な筐体とフォームファクター:

  • Treo: 最新のミニPCシャーシ(コンパクト、モダンデザイン)

  • 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. RAM

メインメモリ容量:

  • 4: 4GB DDR4

  • 8: 8GB DDR4

  • 16: 16GB DDR4

  • 32: 32GB DDR4

  • 64: 64GB DDR4

RAMは単位なしで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) + Bluetooth 5.2

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

  • None: ワイヤレスなし (イーサネットのみ)

7. OS

オペレーティングシステム:

  • 11P: Microsoft Windows 11 Pro

  • U: Ubuntu Linux 24.04 LTS

  • DOS: FreeDOS (OSなし)

  • Thinux: Thinvent® Thinux™ エンベデッドLinux

8. アクセサリー (オプション)

追加コンポーネント:

  • 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 ミニ PC, Intel N100, 8GB DDR4, 256GB SSD, 2× HDMI, WiFi 6, Windows 11 Pro

externalフィールドには、各コンポーネントの顧客向けの名前が含まれています。

機能抽出

SKU構造により、自動的な機能抽出が可能になります:

機能の順序

抽出する機能の順序を定義します:

feature_sequence = {
    "Generation": {"Unit": "", "Heading": "Processing"},
    "Series": {"Unit": "", "Heading": "Processing"},
# ... (実装の詳細は省略)

各機能には以下があります:

  • Unit: 測定単位 (GB, GHz, Mbps)

  • Heading: グループ化のためのカテゴリ (Processing, Display, Connectivity)

機能の抽出

SKU内の各コンポーネントについて、その機能を抽出します:

# Board: 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. 機能抽出

この構造により、以下のための自動的な機能抽出が可能になります:

  • 製品ページ (仕様の表示)

  • 検索フィルター (RAM、ストレージなどでフィルタリング)

  • 比較表 (機能を並べて比較)

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システムは、ハイフン区切りの構造を使用して製品構成を一意に識別します:

  • 構造: Chassis-Board-RAM-Flash-Adapter-WiFi-OS-Accessories

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

  • 利点:

  • 一意の識別 (33,750以上の構成)

  • 人間が読める (調べる必要なし)

  • ソート可能 (自然な順序付け)

  • フィルタリング可能 (任意のコンポーネントで)

  • 機能抽出 (自動的)

  • コスト計算 (パーツの合計)

  • URL生成 (直接マッピング)

検証:

  • コンポーネント存在チェック

  • 互換性制約

  • 最小長要件

展開:

  • SKU → 人間が読める名前

  • コンポーネント → 機能

  • 機能 → フィルター

この構造は、強力な検索、フィルタリング、SEO最適化を可能にする当社の製品カタログの基盤です。


← ドキュメントインデックスに戻る