SKU 구조: 하이픈으로 구분된 구성 요소 아키텍처

이 글에서는 SKU(재고 관리 단위) 시스템이 하이픈으로 구분된 구조를 사용하여 모든 제품 구성을 고유하게 식별하면서도 강력한 기능 추출 및 필터링을 가능하게 하는 방법을 설명합니다.

문제: 제품 구성 식별하기

미니 PC는 수천 가지의 구성이 가능합니다:

  • 채시: Treo, S, H (다른 폼 팩터)

  • 보드: N100, i5-1335U, i7-1355U (다른 프로세서)

  • RAM: 4GB, 8GB, 16GB, 32GB, 64GB

  • 플래시: 128GB, 256GB, 512GB, 1TB, 2TB

  • 어댑터: 2H (HDMI 2개), 2D (DisplayPort 2개), 1H1D (HDMI 1개 + DisplayPort 1개)

  • 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: HDMI 포트 2개

  • 2D: DisplayPort 2개

  • 1H1D: HDMI 1개 + DisplayPort 1개

  • 1H1V: HDMI 1개 + VGA 1개

  • 3H: HDMI 포트 3개

어댑터는 사용 가능한 디스플레이 출력을 결정합니다.

6. WiFi

무선 연결:

  • W6: WiFi 6 (802.11ax) + 블루투스 5.2

  • W6E: WiFi 6E (802.11ax 6GHz) + 블루투스 5.2

  • None: 무선 기능 없음(이더넷 전용)

7. OS

운영 체제:

  • 11P: Microsoft Windows 11 Pro

  • U: Ubuntu Linux 24.04 LTS

  • DOS: FreeDOS (OS 없음)

  • Thinux: Thinvent® Thinux™ 임베디드 리눅스

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, HDMI 2개, 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 최적화를 가능하게 합니다.


← 문서 색인으로 돌아가기