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 파이프라인을 구동합니다:
자세한 내용은 SEO 파이프라인 개요를 참조하세요.
참고 자료
기술 개념
-
재고 관리 단위(SKU) - Wikipedia
-
자재 명세서(BOM) - Wikipedia
관련 글
-
단일 진실 공급원으로서의 productdb.json - 제품 데이터베이스 구조
-
기능 추출 및 집계 - 기능이 추출되는 방법
-
SKU 구조가 고유 페이지를 가능하게 하는 방법 - SEO 이점
-
문구-필터 매핑 - 필터에 기능 사용하기
-
SEO 파이프라인 개요 - 전체 파이프라인 아키텍처
요약
당사의 SKU 시스템은 하이픈으로 구분된 구조를 사용하여 제품 구성을 고유하게 식별합니다:
-
구조:
Chassis-Board-RAM-Flash-Adapter-WiFi-OS-Accessories -
예시:
Treo-N100-8-256-2H-W6-11P -
장점:
-
고유 식별 (33,750개 이상의 구성)
-
사람이 읽기 쉬움 (조회 불필요)
-
정렬 가능 (자연 정렬)
-
필터링 가능 (구성 요소별)
-
기능 추출 (자동)
-
비용 계산 (부품 합계)
-
URL 생성 (직접 매핑)
유효성 검사:
-
구성 요소 존재 확인
-
호환성 제약 조건
-
최소 길이 요구 사항
확장:
-
SKU → 사람이 읽을 수 있는 이름
-
구성 요소 → 기능
-
기능 → 필터
이 구조는 당사 제품 카탈로그의 기초로서, 강력한 검색, 필터링 및 SEO 최적화를 가능하게 합니다.