- SAM 슈퍼 솔루션 비전 문서 (623만 사업체 범용 경영 플랫폼) - 모듈형 적응 아키텍처 (Core + Industry Modules) - 업종 프리셋 → 모듈 자동 활성화 - 4단계 시장 진입 로드맵 (제조→서비스→소상공인→플랫폼) - 수익 모델 (Free/Starter/Business/Enterprise) - BOM V2 부록: 전 업종 BOM 적용 맵 - 20개 카테고리, 150+ 세부 업종의 BOM 유형 분류 - ERP 사각지대 TOP 10 (외식 75만, 소매 40만 등) - 사업체 수 기반 시장 규모 분석
50 KiB
BOM V2 범용 멀티테넌트 아키텍처 설계
작성일: 2026-03-22 상태: 설계 중 담당: R&D실 목표: 어떤 업종/회사도 수용 가능한 확장형 BOM 시스템
1. V1 현황 진단
1.1 현재 구조 (3중 병렬)
V1 BOM 시스템
├── Product BOM (product_components) ← 레거시, 폐기 진행 중
├── Design BOM (bom_templates) ← 수식 산출용 (활성)
└── Item BOM (items.bom JSON) ← 현재 표준
| 시스템 | 저장 방식 | 계층 | 버전 | 상태 |
|---|---|---|---|---|
| Product BOM | 관계형 (product_components) | N-Level | 없음 | 폐기 중 |
| Design BOM | 관계형 (bom_template_items) | 1-Level | 모델 버전 | 수식 전용 |
| Item BOM | JSON (items.bom) | 1-Level* | 없음 | 표준 |
*Item BOM은 저장이 1-Level이지만, 자식의 BOM을 재귀 탐색하여 트리를 구성한다.
1.2 V1 한계점
| 분류 | 한계 | 영향 |
|---|---|---|
| 구조 | BOM이 JSON 평탄 저장 → 다단계 재귀 탐색 필요 | 성능 저하, 순환 참조 위험 |
| 구조 | 3개 BOM 시스템 병렬 → 데이터 일관성 유지 어려움 | 유지보수 비용 |
| 버전 | BOM 버전/리비전 없음 (덮어쓰기) | 변경 이력 추적 불가 |
| 유형 | item_type 5종 고정 (FG/PT/SM/RM/CS) | 반제품(WIP), 팬텀 등 미지원 |
| 수식 | 산출 수식이 경동기업 제품에 하드코딩 | 다른 업종 적용 불가 |
| 공정 | BOM-공정(Routing) 연동 없음 | 공정별 자재 투입 관리 불가 |
| 대체 | 대체품목(Substitute) 미지원 | 자재 부족 시 대응 불가 |
| 유효 | BOM 유효기간(Effectivity) 없음 | 설계 변경 시점 관리 불가 |
| 수율 | 수율/로스율이 Design BOM에만 존재 | Item BOM에서 로스 관리 불가 |
| 원가 | BOM 기반 원가 계산 구조 없음 | 표준원가 산출 불가 |
| 승인 | BOM 승인 워크플로우 없음 | 무검증 BOM 변경 가능 |
| 비교 | BOM 간 diff/비교 기능 제한적 | 설계 변경 영향 분석 어려움 |
1.3 V1에서 유지할 것
| 항목 | 이유 |
|---|---|
items 통합 테이블 |
Products+Materials 단일화 완료, 역행 불필요 |
tenant_id + BelongsToTenant |
멀티테넌시 기반 확립 |
options JSON 정책 |
확장성 확보 |
BomTemplate 수식 엔진 |
파라미터 기반 산출 유지 |
| Category 계층 분류 | 기존 카테고리 시스템 활용 |
2. V2 설계 원칙
2.1 핵심 원칙
P1. 전 업종 수용 — 제조/유통/건설/서비스/금융/구독 전부 지원
P2. 테넌트별 자율 — BOM 깊이, 유형, 수식, 단위를 테넌트가 정의
P3. 단일 BOM 엔진 — 3중 병렬 → 1개 통합 BOM 테이블
P4. 버전 필수 — 모든 BOM 변경은 리비전으로 관리
P5. 하위 호환 — V1 JSON BOM 데이터 무손실 마이그레이션
P6. 물리+비물리 — 자재뿐 아니라 노동/서비스/라이선스/구독도 구성요소
2.2 지원 대상 업종 (KSIC 22개 업종 전수 대응)
BOM = "상품이나 서비스를 구성하는 모든 요소의 구조화된 명세"로 확장 정의
A. 제조업 (KSIC C)
| 업종 | BOM 특성 | V2 대응 | BOM 유형 | 깊이 |
|---|---|---|---|---|
| 블라인드/스크린 (현재) | 수식 기반, 가변 사이즈 | 수식 엔진 유지 | FORMULA | 3~5 |
| 기계/금속 부품 | 다단계 조립, 가공 공정 | N-Level + Routing | STANDARD | 4~7 |
| 전자/반도체 | 대체품목, ECN, 팬텀 | Substitute + Effectivity | STANDARD+ENGINEERING | 7~12 |
| 식품/음료/화장품 | 배합비, 수율, 전성분 | Formula BOM + Co-product | FORMULA | 2~5 |
| 의류/섬유 | 사이즈/컬러 변형 | Variant BOM (매트릭스) | CONFIGURABLE | 2~3 |
| 자동차/부품 | EBOM→MBOM→SBOM 전환 | 3단계 BOM 라이프사이클 | CONFIGURABLE | 7~12 |
| 조선/중공업 | 블록 단위, 3D 연계 | 프로젝트 BOM + 블록 분해 | PROJECT | 8~15 |
| 제약/의료기기 | GMP, 로트 추적, 유효기한 | Formula + 추적성 | FORMULA | 3~8 |
B. 비제조업 — 서비스/유통/금융
| 업종 | BOM = 구성요소 | V2 대응 | BOM 유형 | 깊이 |
|---|---|---|---|---|
| 유통/이커머스 | 묶음 세트, 사은품, 포장 | Kit/Bundle BOM | STANDARD | 2~3 |
| 건설/인테리어 | 자재+인력+장비+외주 (BOQ) | Project BOM + 4요소 혼합 | PROJECT | 4~6 |
| IT/SaaS | 기능모듈, 인프라, 라이선스 | Subscription BOM + 티어 | SUBSCRIPTION | 2~4 |
| 보험/금융 | 주계약+특약+담보 | Configurable BOM + 요율 | CONFIGURABLE | 2~4 |
| 물류/운송 | 차량+인력+연료+운임 | Service BOM + 수식 운임 | SERVICE | 2~3 |
| 교육/이러닝 | 강의+교재+플랫폼+부가 | Subscription BOM | SUBSCRIPTION | 2~4 |
| 호텔/관광/여행 | 숙박+식사+교통+관광 | Configurable + 동적 요금 | CONFIGURABLE | 2~3 |
| 광고/마케팅 | 인력+미디어비+제작비 | Project BOM + 외주 | PROJECT | 3~4 |
| 법률/회계/컨설팅 | 인력공수+실비+외주 | Service BOM (타임차지) | SERVICE | 2~3 |
| 인력파견/아웃소싱 | 인력+4대보험+수수료 | Service BOM + 등급단가 | SERVICE | 2~3 |
| 렌탈/리스/구독 | 제품원가+소모품+금융비 | Subscription + 정기교체 | SUBSCRIPTION | 2~4 |
| 부동산/건물관리 | 인력+소모품+법정점검 | Service BOM + SLA | SERVICE | 2~4 |
| 에너지/플랜트 | EPC 통합 (설계+조달+시공) | Project BOM + O&M | PROJECT | 4~6 |
| 인쇄/출판/미디어 | 용지+잉크+공정+인력 | Project BOM + 부수 단가 | PROJECT | 3~4 |
3. V2 데이터 모델
3.1 핵심 테이블 설계
V2 BOM 테이블 구조
items (기존 유지 + 확장)
├── item_type 확장: FG, SA, PT, WIP, PH, SM, RM, CS, BP, SV, LB, EQ, LC, TB, PK
└── bom 컬럼: 제거 (관계형으로 이관)
bom_headers (신규 — BOM 헤더/버전)
├── item_id → items
├── revision (REV.01, REV.02 ...)
├── status (DRAFT → PENDING → APPROVED → ACTIVE → OBSOLETE)
├── effective_from / effective_to
└── bom_type (STANDARD | ENGINEERING | CONFIGURABLE | FORMULA | PROJECT | SERVICE | SUBSCRIPTION)
bom_lines (신규 — BOM 라인/구성품)
├── bom_header_id → bom_headers
├── child_item_id → items
├── quantity + quantity_formula
├── waste_rate (로스율)
├── operation_id → operations (공정 연결)
├── effective_from / effective_to (라인별 유효기간)
└── options JSON (확장 속성)
bom_substitutes (신규 — 대체품목)
├── bom_line_id → bom_lines
├── substitute_item_id → items
├── priority (대체 우선순위)
└── conversion_factor (환산 계수)
operations (신규 — 공정/라우팅)
├── item_id → items
├── sequence (공정 순서)
├── process_id → processes (공정 마스터)
├── setup_time, run_time, wait_time
└── work_center_id (작업장)
3.2 ERD 관계
items ─────────────────────────────────────────────────
│ (1:N) │
▼ │
bom_headers ────────────────────────── │
│ (1:N) │ │
▼ │ │
bom_lines ─── (N:1) ──→ items ◄─────┘ │
│ (1:N) │ │
▼ │ (N:1) │
bom_substitutes ▼ │
operations ─── (N:1) ──→ processes │
│ │
└── (N:1) ──→ work_centers │
│
bom_templates (기존 유지) │
└── 수식 산출 → bom_headers 자동 생성 ───────────────┘
3.3 items.item_type 확장 (5→15종)
물리적 품목 (Physical)
| 코드 | 한글 | 설명 | V1 | V2 | 대표 업종 |
|---|---|---|---|---|---|
FG |
완제품 | 판매 가능한 최종 제품 | O | O | 전 업종 |
SA |
반조립품 | 중간 조립품 (재고 관리됨) | - | 신규 | 전자, 자동차, 가구 |
PT |
부품 | 구성 부품 | O | O | 전 업종 |
WIP |
재공품 | 가공 중인 중간 산출물 | - | 신규 | 제조업 전반 |
PH |
팬텀 | 가상 그룹 (재고 없음, BOM 전개 시 투과) | - | 신규 | 전자, 조선 |
SM |
부자재 | 보조 자재 | O | O | 전 업종 |
RM |
원자재 | 주요 원료 | O | O | 제조업, 건설, 식품 |
CS |
소모품 | 일회성 소모 자재 | O | O | 전 업종 |
BP |
부산물 | 생산 시 발생하는 부산물 | - | 신규 | 식품, 화학, 제약 |
비물리적 품목 (Non-Physical) — 서비스/유통/금융 업종 핵심
| 코드 | 한글 | 설명 | V1 | V2 | 대표 업종 |
|---|---|---|---|---|---|
SV |
서비스 | 외주 가공, 검사비, 용역 | - | 신규 | 전 업종 |
LB |
노동 | 인력 공수 (M/M, M/D, 시간) | - | 신규 | 건설, IT, 컨설팅, 광고 |
EQ |
장비 | 장비/설비 임대, 감가상각 할당 | - | 신규 | 건설, 물류, 인쇄 |
LC |
라이선스 | SW 라이선스, 저작권, 특허 | - | 신규 | IT, 미디어, 교육 |
TB |
시간제 | 시간/기간 기반 항목 (숙박, 구독) | - | 신규 | 호텔, 렌탈, 교육 |
PK |
패키지 | 복합 상품 패키지 (보험 특약, 여행 패키지) | - | 신규 | 보험, 여행, 유통 |
테넌트별로 사용할 유형을 선택한다. 블라인드 업체는 FG/PT/SM/RM/CS만, IT SaaS는 FG/PK/LC/TB/SV를 활성화.
3.4 bom_headers 상세
CREATE TABLE bom_headers (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
tenant_id BIGINT UNSIGNED NOT NULL,
item_id BIGINT UNSIGNED NOT NULL, -- 부모 품목
revision VARCHAR(20) NOT NULL DEFAULT 'REV.01',
bom_type VARCHAR(20) NOT NULL DEFAULT 'STANDARD',
-- STANDARD: 고정 자재 구성 (제조, 유통 세트)
-- ENGINEERING: 설계용 (비생산, 승인 후 STANDARD 전환)
-- CONFIGURABLE: 옵션 조합 (보험 특약, 호텔 패키지, 차량 옵션)
-- FORMULA: 배합/수식 (식품, 화장품, 블라인드 수식 산출)
-- PROJECT: 수주형 1회성 (건설 BOQ, 광고 캠페인, SI 프로젝트)
-- SERVICE: 노동/시간 중심 (컨설팅, 물류, FM, 인력파견)
-- SUBSCRIPTION: 구독/반복 과금 (SaaS, 렌탈, 교육, 멤버십)
status VARCHAR(20) NOT NULL DEFAULT 'DRAFT',
-- DRAFT → PENDING → APPROVED → ACTIVE → OBSOLETE
effective_from DATE NULL, -- 유효 시작
effective_to DATE NULL, -- 유효 종료
base_qty DECIMAL(18,6) NOT NULL DEFAULT 1, -- 기준 수량
base_unit VARCHAR(20) NULL, -- 기준 단위
description TEXT NULL,
approved_by BIGINT UNSIGNED NULL, -- 승인자
approved_at DATETIME NULL,
source_template_id BIGINT UNSIGNED NULL, -- Design BOM 연결
options JSON NULL, -- 확장 속성
created_by BIGINT UNSIGNED NULL,
updated_by BIGINT UNSIGNED NULL,
created_at TIMESTAMP NULL,
updated_at TIMESTAMP NULL,
deleted_at TIMESTAMP NULL,
UNIQUE KEY uq_bom_tenant_item_rev (tenant_id, item_id, revision, deleted_at),
INDEX idx_bom_tenant_item (tenant_id, item_id),
INDEX idx_bom_tenant_status (tenant_id, status),
INDEX idx_bom_effective (tenant_id, effective_from, effective_to)
);
3.5 bom_lines 상세
CREATE TABLE bom_lines (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
tenant_id BIGINT UNSIGNED NOT NULL,
bom_header_id BIGINT UNSIGNED NOT NULL,
child_item_id BIGINT UNSIGNED NOT NULL, -- 자식 품목
quantity DECIMAL(18,6) NOT NULL DEFAULT 1, -- 소요량
quantity_formula VARCHAR(500) NULL, -- 수식 (예: "W1 * H1 / 1000000")
unit VARCHAR(20) NULL,
waste_rate DECIMAL(9,6) NOT NULL DEFAULT 0, -- 로스율 (0.05 = 5%)
category VARCHAR(100) NULL, -- 카테고리 그룹명
operation_id BIGINT UNSIGNED NULL, -- 공정 연결
effective_from DATE NULL, -- 라인별 유효 시작
effective_to DATE NULL, -- 라인별 유효 종료
is_phantom TINYINT(1) NOT NULL DEFAULT 0, -- 팬텀 여부 (BOM 전개 시 투과)
is_optional TINYINT(1) NOT NULL DEFAULT 0, -- 옵션 여부 (CONFIGURABLE BOM)
option_group VARCHAR(100) NULL, -- 옵션 그룹명 (같은 그룹 내 택1)
supply_type VARCHAR(20) DEFAULT 'STOCK', -- STOCK | PURCHASE | SUBCONTRACT
-- 비물리적 항목용 필드 (서비스/노동/구독)
duration_value DECIMAL(10,2) NULL, -- 기간 값 (숙박 2박, 구독 12개월)
duration_unit VARCHAR(20) NULL, -- 기간 단위 (DAY|MONTH|YEAR|HOUR)
billing_cycle VARCHAR(20) NULL, -- 과금 주기 (MONTHLY|YEARLY|ONCE)
grade_level VARCHAR(50) NULL, -- 인력 등급 (시니어/주니어, 파트너/어소)
unit_price DECIMAL(18,4) NULL, -- 단가 (시간당, 월당, 건당)
sort_order INT NOT NULL DEFAULT 0,
notes VARCHAR(500) NULL,
options JSON NULL, -- 확장 속성
created_by BIGINT UNSIGNED NULL,
updated_by BIGINT UNSIGNED NULL,
created_at TIMESTAMP NULL,
updated_at TIMESTAMP NULL,
deleted_at TIMESTAMP NULL,
INDEX idx_bl_tenant_header (tenant_id, bom_header_id),
INDEX idx_bl_child (child_item_id),
INDEX idx_bl_operation (operation_id),
INDEX idx_bl_effective (effective_from, effective_to)
);
3.6 bom_substitutes 상세
CREATE TABLE bom_substitutes (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
tenant_id BIGINT UNSIGNED NOT NULL,
bom_line_id BIGINT UNSIGNED NOT NULL,
substitute_item_id BIGINT UNSIGNED NOT NULL, -- 대체 품목
priority INT NOT NULL DEFAULT 1, -- 대체 우선순위 (1=최우선)
conversion_factor DECIMAL(12,6) NOT NULL DEFAULT 1, -- 환산 계수
effective_from DATE NULL,
effective_to DATE NULL,
notes VARCHAR(255) NULL,
options JSON NULL,
created_at TIMESTAMP NULL,
updated_at TIMESTAMP NULL,
INDEX idx_bs_tenant_line (tenant_id, bom_line_id),
UNIQUE KEY uq_bs_line_sub (bom_line_id, substitute_item_id)
);
4. BOM 유형별 동작
4.1 STANDARD BOM (표준 BOM)
가장 일반적인 형태. 고정 수량 기반.
FG-001 (스크린 제품) [REV.02, ACTIVE, 2026-01-01~]
├── [주자재] RM-001 스크린 원단 x10.65 m² (로스 5%)
├── [모터] PT-001 모터 150K x1 EA
├── [제어기] PT-002 제어기 노출형 x1 EA
├── [절곡품] WIP-001 케이스 500*380 x3.22 m → 공정: 절곡
├── [절곡품] WIP-002 마구리 505*385 x1 EA → 공정: 절곡
├── [부자재] SM-001 감기샤프트 x1 EA
├── [검사비] SV-001 검사비 x1 EA
└── [대체] PT-001 → PT-001-B 모터 200K (priority=1, factor=1.0)
4.2 FORMULA BOM (수식 BOM)
파라미터 입력 → 수식 평가 → 수량 자동 계산. 기존 Design BOM의 발전형.
FG-KSS02 (스크린 SUS 측면형) [FORMULA]
├── 파라미터: W0=3000, H0=3000, QTY=1, MP=single
├── 변수계산: W1=W0+140, H1=H0+350, M=W1*H1/1e6, K=M*2+(W0/1000)*14.17
│
├── RM-슬랫 qty_formula="M" → 10.65 m²
├── PT-모터 qty_formula="1" → 1 EA
├── WIP-케이스 qty_formula="W1/1000" → 3.14 m
├── SM-샤프트 qty_formula="CEIL(H1/2000)" → 2 EA
└── SV-검사 qty_formula="1" → 1 EA
수식 평가 후 결과를 STANDARD BOM으로 스냅샷 저장 가능 (V1의 "BOM 저장" 기능 유지).
4.3 CONFIGURABLE BOM (구성형 BOM)
옵션 조합에 따라 구성이 달라지는 BOM. 가구/의류/맞춤 제품에 적합.
FG-DESK (사무용 책상) [CONFIGURABLE]
├── [공통] PT-프레임 x1 EA — 항상 포함
├── [공통] SM-나사세트 x1 SET — 항상 포함
│
├── [옵션: 상판 재질]
│ ├── 원목 → RM-원목상판 x1 EA
│ ├── MDF → RM-MDF상판 x1 EA
│ └── 유리 → RM-유리상판 x1 EA + SM-흡착패드 x4 EA
│
└── [옵션: 다리 높이]
├── 표준(720mm) → PT-다리-720 x4 EA
└── 높은(900mm) → PT-다리-900 x4 EA
4.4 ENGINEERING BOM (설계 BOM)
생산 투입 전 설계 단계 BOM. 승인 후 STANDARD로 전환.
ENGINEERING BOM (설계팀)
│ 검토 → 승인
▼
STANDARD BOM (생산팀)
│ ECN (설계 변경)
▼
새 REVISION 생성 (REV.02)
4.5 PROJECT BOM (프로젝트 BOM)
수주형 1회성 프로젝트. 건설 BOQ, SI 프로젝트, 광고 캠페인 등.
PRJ-APT (아파트 신축 프로젝트) [PROJECT]
├── [공종: 토목기초]
│ ├── RM-철근 x120 톤 → 조달: 구매
│ ├── RM-레미콘 x800 m³ → 조달: 구매
│ ├── LB-철근공 x40 M/D → grade: 기능공
│ └── EQ-크레인 x30 일 → duration: 30 DAY
├── [공종: 골조]
│ ├── RM-철근 x350 톤
│ ├── LB-형틀목공 x80 M/D
│ └── EQ-타워크레인 x90 일
├── [공종: 전기설비]
│ ├── PT-배전반 x3 SET
│ └── LB-전기공 x60 M/D → grade: 특급기능공
└── [외주]
└── SV-소방설비 x1 식 → supply: SUBCONTRACT
4.6 SERVICE BOM (서비스 BOM)
노동/시간 중심. 컨설팅, 물류, 시설관리, 인력파견 등.
SV-CONSULTING (경영 컨설팅 프로젝트) [SERVICE]
├── [인력]
│ ├── LB-프로젝트리더 x3 M/M → grade: 파트너, unit_price: 2000만/월
│ ├── LB-시니어컨설턴트 x6 M/M → grade: 시니어, unit_price: 1200만/월
│ └── LB-주니어컨설턴트 x12 M/M → grade: 주니어, unit_price: 700만/월
├── [도구/솔루션]
│ ├── LC-분석SW라이선스 x3 개월 → billing: MONTHLY
│ └── LC-설문플랫폼 x1 개월
├── [실비]
│ ├── CS-출장교통비 x20 건
│ └── CS-인쇄비 x500 부
└── [산출물]
├── SV-현황진단보고서 x1 건
└── SV-전략보고서 x1 건
SV-LOGISTICS (화물운송) [SERVICE]
├── EQ-5톤냉장탑차 x1 대
├── LB-운전기사 x8 시간 → grade: 1종대형
├── RM-경유 qty_formula="거리km * 0.12" → 수식: 거리 비례
├── SV-상하차인력 x2 인·시간 → optional: true
└── PK-화물보험 x1 건 → optional: true, 화물가액 비례
4.7 SUBSCRIPTION BOM (구독 BOM)
기간/과금 기반 반복 서비스. SaaS, 렌탈, 교육, 멤버십 등.
PK-SAAS-ENT (ERP SaaS Enterprise 플랜) [SUBSCRIPTION]
├── [기능 모듈] — billing: MONTHLY
│ ├── LC-재무회계모듈 x1 → 포함
│ ├── LC-생산관리모듈 x1 → 포함
│ ├── LC-인사급여모듈 x1 → 포함
│ └── LC-구매물류모듈 x1 → 포함
├── [인프라]
│ ├── TB-vCPU x8 코어 → billing: MONTHLY
│ ├── TB-메모리 x32 GB
│ └── TB-스토리지 x500 GB
├── [라이선스]
│ ├── LC-사용자계정 x50 User → billing: MONTHLY
│ └── LC-동시접속 x20 Session
└── [옵션 부가서비스] — optional: true
├── SV-전담CS지원 x10 시간/월 → option_group: "support"
├── SV-데이터백업 x1 일1회 → option_group: "backup"
└── SV-교육 x2 회/연 → option_group: "training"
PK-RENTAL (정수기 렌탈) [SUBSCRIPTION]
├── FG-정수기본체 x1 EA → 감가상각: 60개월
├── [정기 교체 소모품] — duration_unit: MONTH
│ ├── PT-세디먼트필터 x1 EA → 교체주기: 6개월
│ ├── PT-카본필터 x1 EA → 교체주기: 6개월
│ └── PT-UF멤브레인 x1 EA → 교체주기: 12개월
├── LB-위생점검인력 x1 회/월 → billing: MONTHLY
└── SV-금융비용 x1 식 → unit_price: 취득가 × 조달금리 / 계약개월
5. BOM 버전 관리
5.1 리비전 워크플로우
REV.01 (DRAFT)
│ 편집 완료
▼
REV.01 (PENDING) ← 승인 요청
│ 승인자 확인
▼
REV.01 (APPROVED) ← 승인 완료
│ 유효기간 도래
▼
REV.01 (ACTIVE) ← 생산에 사용
│ 설계 변경 발생
▼
REV.01 (OBSOLETE) ← 비활성화
REV.02 (DRAFT) 생성 ← 새 리비전
5.2 유효기간 관리
REV.01 ────────[2025-01-01 ~ 2026-06-30]────────
REV.02 [2026-07-01 ~ ]──────────────
↑
설계 변경 적용일
- 특정 날짜에 유효한 BOM 조회:
WHERE effective_from <= ? AND (effective_to IS NULL OR effective_to >= ?) - 라인별 유효기간: 부품 단종/교체 시 개별 라인 종료
5.3 BOM 비교 (Diff)
{
"comparison": "REV.01 vs REV.02",
"added": [
{ "item": "PT-003 신규부품", "qty": 2 }
],
"removed": [
{ "item": "PT-002 구부품", "qty": 1 }
],
"changed": [
{ "item": "RM-001 원단", "qty_before": 10.0, "qty_after": 10.65, "reason": "로스율 반영" }
]
}
6. 팬텀(Phantom) 품목
6.1 개념
팬텀 품목은 재고로 관리하지 않는 가상 그룹이다. BOM 전개(Explosion) 시 팬텀은 "투과"되어 하위 구성품이 직접 상위로 올라간다.
6.2 V1 → V2 매핑
V1의 item_type: CAT (카테고리 그룹)가 V2의 팬텀에 해당한다.
V1 (가상 CAT 노드):
FG-001
├── [CAT] 주자재 (가상 — DB에 없음, 코드로 생성)
│ └── RM-001 스크린 원단
└── [CAT] 모터 (가상)
└── PT-001 모터
V2 (팬텀 품목):
FG-001
├── PH-주자재 (팬텀 — items 테이블에 실체 있음)
│ └── RM-001 스크린 원단
└── PH-모터 (팬텀)
└── PT-001 모터
BOM 전개 결과 (MRP):
FG-001 → RM-001, PT-001 (팬텀 투과)
6.3 팬텀 활용
| 용도 | 설명 |
|---|---|
| 그룹화 | V1의 카테고리 그룹을 구조화 |
| 중간조립 생략 | 재고 불필요한 중간 단계 |
| 공통 부품군 | 여러 FG에서 공유하는 부품 묶음 |
7. 공정-BOM 연동 (Routing)
7.1 공정 마스터
CREATE TABLE processes (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
tenant_id BIGINT UNSIGNED NOT NULL,
code VARCHAR(50) NOT NULL,
name VARCHAR(255) NOT NULL,
type VARCHAR(50) NULL, -- FABRICATION | ASSEMBLY | INSPECTION | SUBCONTRACT
options JSON NULL,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP NULL,
updated_at TIMESTAMP NULL,
deleted_at TIMESTAMP NULL,
UNIQUE KEY uq_process_tenant_code (tenant_id, code, deleted_at)
);
7.2 공정 라우팅
CREATE TABLE operations (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
tenant_id BIGINT UNSIGNED NOT NULL,
item_id BIGINT UNSIGNED NOT NULL, -- 대상 품목
bom_header_id BIGINT UNSIGNED NULL, -- BOM과 연결 (선택)
sequence INT NOT NULL, -- 공정 순서 (10, 20, 30...)
process_id BIGINT UNSIGNED NOT NULL, -- 공정 마스터
work_center_id BIGINT UNSIGNED NULL, -- 작업장/설비
setup_time DECIMAL(10,2) DEFAULT 0, -- 준비 시간 (분)
run_time DECIMAL(10,2) DEFAULT 0, -- 가동 시간 (분/단위)
wait_time DECIMAL(10,2) DEFAULT 0, -- 대기 시간 (분)
description VARCHAR(500) NULL,
options JSON NULL,
created_at TIMESTAMP NULL,
updated_at TIMESTAMP NULL,
deleted_at TIMESTAMP NULL,
INDEX idx_op_tenant_item (tenant_id, item_id),
INDEX idx_op_sequence (item_id, sequence)
);
7.3 공정별 자재 투입
FG-001 스크린 제품
공정 10: 원단 재단 → RM-001 원단 (이 공정에서 투입)
공정 20: 절곡 가공 → WIP-001 케이스, WIP-002 마구리
공정 30: 조립 → PT-001 모터, PT-002 제어기, SM-001 샤프트
공정 40: 검사 → SV-001 검사비
공정 50: 포장 → SM-002 포장재
bom_lines.operation_id로 각 자재가 어느 공정에서 투입되는지 연결한다.
8. 테넌트별 BOM 설정
8.1 테넌트 BOM 설정 (tenant_bom_settings)
CREATE TABLE tenant_bom_settings (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
tenant_id BIGINT UNSIGNED NOT NULL UNIQUE,
-- 활성화할 품목 유형
enabled_item_types JSON NOT NULL DEFAULT '["FG","PT","SM","RM","CS"]',
-- 활성화할 BOM 유형
enabled_bom_types JSON NOT NULL DEFAULT '["STANDARD"]',
-- BOM 최대 깊이
max_bom_depth INT NOT NULL DEFAULT 10,
-- 승인 워크플로우 사용 여부
require_approval BOOLEAN NOT NULL DEFAULT FALSE,
-- 유효기간 관리 사용 여부
use_effectivity BOOLEAN NOT NULL DEFAULT FALSE,
-- 대체품목 사용 여부
use_substitutes BOOLEAN NOT NULL DEFAULT FALSE,
-- 공정(Routing) 연동 여부
use_routing BOOLEAN NOT NULL DEFAULT FALSE,
-- 로스율 관리 여부
use_waste_rate BOOLEAN NOT NULL DEFAULT FALSE,
-- 팬텀 품목 사용 여부
use_phantom BOOLEAN NOT NULL DEFAULT FALSE,
-- 수식 BOM 사용 여부
use_formula_bom BOOLEAN NOT NULL DEFAULT FALSE,
-- 비물리적 항목 (서비스/노동/구독) 사용 여부
use_labor_items BOOLEAN NOT NULL DEFAULT FALSE,
-- 구독/과금 주기 관리 여부
use_billing_cycle BOOLEAN NOT NULL DEFAULT FALSE,
-- 옵션 BOM (CONFIGURABLE) 사용 여부
use_option_groups BOOLEAN NOT NULL DEFAULT FALSE,
-- 카테고리 그룹 표시 방식
category_display VARCHAR(20) DEFAULT 'FOLDER', -- FOLDER | FLAT | NONE
-- 커스텀 BOM 라인 필드 (테넌트별 확장)
custom_line_fields JSON NULL,
options JSON NULL,
created_at TIMESTAMP NULL,
updated_at TIMESTAMP NULL
);
8.2 업종별 프리셋 (12 카테고리, KSIC 22개 업종 커버)
| 프리셋 ID | 대상 업종 | KSIC | BOM 유형 | 품목 유형 |
|---|---|---|---|---|
mfg_discrete |
기계/금속/전자 제조 | C25~C28 | STANDARD, ENGINEERING | FG,SA,PT,PH,WIP,SM,RM,CS |
mfg_formula |
식품/화학/화장품/제약 | C10~C21 | FORMULA, STANDARD | FG,PT,RM,CS,BP,SV |
mfg_custom |
블라인드/가구/의류 | C13~C32 | FORMULA, CONFIGURABLE | FG,PT,WIP,SM,RM,CS,SV |
mfg_heavy |
자동차/조선/중공업 | C30,C281 | STANDARD, CONFIGURABLE, ENGINEERING | FG,SA,PT,PH,WIP,SM,RM,CS,SV |
construction |
건설/인테리어/에너지 | F41~42, D35 | PROJECT, CONFIGURABLE | FG,PT,SM,RM,CS,LB,EQ,SV |
distribution |
유통/도소매/이커머스 | G45~47 | STANDARD | FG,PT,SM,CS,PK |
it_saas |
IT/SaaS/솔루션 | J58~63 | SUBSCRIPTION, PROJECT | FG,PK,LC,TB,LB,SV |
finance_insurance |
보험/금융 | K64~66 | CONFIGURABLE, SUBSCRIPTION | FG,PK,SV,TB |
professional |
법률/회계/컨설팅/광고 | M69~71 | SERVICE, PROJECT | SV,LB,LC,CS,EQ |
logistics |
물류/운송/인력파견 | H49~52, N78 | SERVICE | SV,LB,EQ,CS,PK |
hospitality |
호텔/관광/교육 | I55, N79, P85 | CONFIGURABLE, SUBSCRIPTION | FG,PK,SV,TB,LB |
rental |
렌탈/리스/구독 | N77, K64 | SUBSCRIPTION | FG,PT,CS,SV,TB,LB |
프리셋 상세 (JSON)
{
"mfg_discrete": {
"label": "이산/조립 제조 (기계, 전자, 금속)",
"enabled_item_types": ["FG","SA","PT","PH","WIP","SM","RM","CS"],
"enabled_bom_types": ["STANDARD","ENGINEERING"],
"max_bom_depth": 15,
"require_approval": true,
"use_effectivity": true,
"use_substitutes": true,
"use_phantom": true,
"use_routing": true,
"use_waste_rate": true,
"category_display": "FOLDER"
},
"mfg_formula": {
"label": "배합/공정 제조 (식품, 화학, 화장품, 제약)",
"enabled_item_types": ["FG","PT","RM","CS","BP","SV"],
"enabled_bom_types": ["FORMULA","STANDARD"],
"max_bom_depth": 5,
"use_formula_bom": true,
"use_waste_rate": true,
"use_routing": true,
"category_display": "FLAT"
},
"mfg_custom": {
"label": "주문 제작 (블라인드, 가구, 의류)",
"enabled_item_types": ["FG","PT","WIP","SM","RM","CS","SV"],
"enabled_bom_types": ["FORMULA","CONFIGURABLE","STANDARD"],
"max_bom_depth": 5,
"use_formula_bom": true,
"use_waste_rate": true,
"use_routing": true,
"category_display": "FOLDER"
},
"construction": {
"label": "건설/인테리어/에너지 (BOQ+WBS)",
"enabled_item_types": ["FG","PT","SM","RM","CS","LB","EQ","SV"],
"enabled_bom_types": ["PROJECT","CONFIGURABLE"],
"max_bom_depth": 6,
"use_routing": true,
"category_display": "FOLDER"
},
"distribution": {
"label": "유통/도소매 (세트/번들)",
"enabled_item_types": ["FG","PT","SM","CS","PK"],
"enabled_bom_types": ["STANDARD"],
"max_bom_depth": 3,
"category_display": "FLAT"
},
"it_saas": {
"label": "IT/SaaS/솔루션 (구독+프로젝트)",
"enabled_item_types": ["FG","PK","LC","TB","LB","SV"],
"enabled_bom_types": ["SUBSCRIPTION","PROJECT"],
"max_bom_depth": 4,
"category_display": "FOLDER"
},
"finance_insurance": {
"label": "보험/금융 (주계약+특약)",
"enabled_item_types": ["FG","PK","SV","TB"],
"enabled_bom_types": ["CONFIGURABLE","SUBSCRIPTION"],
"max_bom_depth": 4,
"category_display": "FOLDER"
},
"professional": {
"label": "전문 서비스 (법률, 회계, 컨설팅, 광고)",
"enabled_item_types": ["SV","LB","LC","CS","EQ"],
"enabled_bom_types": ["SERVICE","PROJECT"],
"max_bom_depth": 4,
"category_display": "FLAT"
},
"logistics": {
"label": "물류/운송/인력파견",
"enabled_item_types": ["SV","LB","EQ","CS","PK"],
"enabled_bom_types": ["SERVICE"],
"max_bom_depth": 3,
"use_formula_bom": true,
"category_display": "FLAT"
},
"hospitality": {
"label": "호텔/관광/교육/여행",
"enabled_item_types": ["FG","PK","SV","TB","LB"],
"enabled_bom_types": ["CONFIGURABLE","SUBSCRIPTION"],
"max_bom_depth": 3,
"category_display": "FOLDER"
},
"rental": {
"label": "렌탈/리스/구독 서비스",
"enabled_item_types": ["FG","PT","CS","SV","TB","LB"],
"enabled_bom_types": ["SUBSCRIPTION"],
"max_bom_depth": 4,
"category_display": "FOLDER"
}
}
9. API 설계
9.1 엔드포인트 구조
/api/v2/items/{itemId}/bom/
├── GET / BOM 헤더 목록 (리비전 이력)
├── POST / BOM 헤더 생성 (새 리비전)
├── GET /{bomId} BOM 상세 (헤더 + 라인)
├── PUT /{bomId} BOM 헤더 수정
├── DELETE /{bomId} BOM 삭제 (DRAFT만)
│
├── GET /{bomId}/lines BOM 라인 목록
├── POST /{bomId}/lines 라인 추가
├── PUT /{bomId}/lines/bulk 라인 일괄 업서트
├── PUT /{bomId}/lines/{id} 라인 수정
├── DELETE /{bomId}/lines/{id} 라인 삭제
│
├── GET /{bomId}/tree BOM 트리 (재귀, 팬텀 투과 옵션)
├── GET /{bomId}/flat BOM 전개 (Explosion, 평탄화)
├── GET /{bomId}/where-used 역전개 (이 품목을 사용하는 BOM)
│
├── POST /{bomId}/approve 승인 요청
├── POST /{bomId}/activate 활성화
├── POST /{bomId}/obsolete 비활성화
├── POST /{bomId}/clone 복제 (새 리비전)
├── GET /{bomId}/diff/{otherId} BOM 비교
│
├── GET /{bomId}/substitutes 대체품목 목록
├── POST /{bomId}/lines/{id}/substitutes 대체품목 추가
│
└── POST /{bomId}/calculate 수식 BOM 계산 (FORMULA 타입)
/api/v2/bom/
├── GET /settings 테넌트 BOM 설정 조회
├── PUT /settings 테넌트 BOM 설정 변경
├── GET /search BOM 검색 (품목코드, 구성품 등)
└── POST /mass-replace 품목 일괄 대체 (ECN)
9.2 BOM 트리 응답 (V2)
{
"bom_header": {
"id": 1,
"item_id": 100,
"revision": "REV.02",
"status": "ACTIVE",
"bom_type": "STANDARD",
"effective_from": "2026-07-01",
"base_qty": 1
},
"tree": {
"id": 100,
"code": "FG-KSS02",
"name": "KSS02 스크린 SUS 측면형",
"item_type": "FG",
"depth": 0,
"children": [
{
"bom_line_id": 10,
"id": 0,
"name": "주자재",
"item_type": "PH",
"is_phantom": true,
"depth": 1,
"children": [
{
"bom_line_id": 11,
"id": 201,
"code": "RM-슬랫-방화",
"name": "스크린 실리카",
"item_type": "RM",
"quantity": 10.65,
"unit": "m²",
"waste_rate": 0.05,
"effective_quantity": 11.18,
"operation": { "sequence": 10, "name": "원단 재단" },
"substitutes": [
{ "item_code": "RM-슬랫-일반", "priority": 1, "factor": 1.0 }
],
"depth": 2,
"children": []
}
]
}
]
},
"summary": {
"total_items": 17,
"total_groups": 6,
"max_depth": 3,
"has_substitutes": true,
"has_formulas": false
}
}
10. V1 → V2 마이그레이션
10.1 마이그레이션 전략
Phase 1: 테이블 생성 (V2 테이블 추가, V1 유지)
│
Phase 2: 데이터 이관 (items.bom JSON → bom_headers + bom_lines)
│
Phase 3: API 전환 (V1 API 유지 + V2 API 추가)
│
Phase 4: 프론트엔드 전환 (MNG/React V2 UI)
│
Phase 5: V1 폐기 (items.bom 컬럼 제거, V1 API 제거)
10.2 데이터 이관 스크립트
// items.bom JSON → bom_headers + bom_lines 변환
foreach (Item::whereNotNull('bom')->cursor() as $item) {
$header = BomHeader::create([
'tenant_id' => $item->tenant_id,
'item_id' => $item->id,
'revision' => 'REV.01',
'bom_type' => 'STANDARD',
'status' => 'ACTIVE',
'base_qty' => 1,
]);
foreach ($item->bom as $i => $bomLine) {
BomLine::create([
'tenant_id' => $item->tenant_id,
'bom_header_id' => $header->id,
'child_item_id' => $bomLine['child_item_id'],
'quantity' => $bomLine['quantity'] ?? 1,
'unit' => $bomLine['unit'] ?? null,
'category' => $bomLine['category'] ?? null,
'sort_order' => $i,
]);
}
}
10.3 하위 호환
| V1 API | V2 대응 | 전환 방식 |
|---|---|---|
GET /v1/items/{id}/bom/tree |
GET /v2/items/{id}/bom/{activeId}/tree |
V1 래퍼 → V2 호출 |
POST /v1/items/{id}/save-bom |
POST /v2/items/{id}/bom + lines |
V1 래퍼 유지 |
POST /v1/quotes/calculate/bom |
POST /v2/items/{id}/bom/{id}/calculate |
V1 래퍼 유지 |
11. 구현 로드맵
Phase 1: 기반 구축 (2~3주)
bom_headers,bom_lines,bom_substitutes마이그레이션 생성tenant_bom_settings테이블 및 프리셋BomHeader,BomLine,BomSubstitute모델 생성BomService핵심 CRUD (생성, 조회, 수정, 삭제)- V1 items.bom → V2 데이터 이관 스크립트
- V2 BOM API 기본 엔드포인트
Phase 2: 핵심 기능 (2~3주)
- BOM 트리 빌더 (재귀, 팬텀 투과, 깊이 제한)
- BOM 전개 (Explosion) — 평탄화 조회
- 역전개 (Where-Used) — 이 부품을 사용하는 상위 BOM
- BOM 버전 관리 (리비전 생성, 복제)
- BOM 비교 (Diff)
- items.item_type 확장 (SA, WIP, PH, BP, SV)
Phase 3: 확장 기능 (3~4주)
- 수식 BOM (FORMULA) — Design BOM 연동 개선
- 대체품목 관리
- 유효기간(Effectivity) 관리
- 공정(Routing) 테이블 및 BOM-공정 연동
- BOM 승인 워크플로우
- 원가 계산 연동 (BOM 기반 표준원가)
Phase 4: UI 및 통합 (2~3주)
- MNG BOM 관리 UI 전환 (V2 API)
- React BOM 트리 뷰어 V2 연동
- 테넌트 BOM 설정 관리 화면
- V1 API 래퍼 → V2 전환 완료
- V1 items.bom 컬럼 제거
12. 업종별 시나리오 검증 (12개)
A. 제조업군
12.1 블라인드/스크린 (현재 고객, mfg_custom)
프리셋: mfg_custom
BOM 유형: FORMULA + STANDARD
검증: ✓ 수식 산출 → BOM 저장, ✓ WIP 절곡품 트리, ✓ 카테고리 FOLDER, ✓ V1 100% 호환
12.2 전자부품 (mfg_discrete)
프리셋: mfg_discrete
BOM 유형: STANDARD + ENGINEERING
검증: ✓ 15단계 BOM, ✓ 팬텀 투과, ✓ ECN 일괄 대체, ✓ 유효기간, ✓ 승인 워크플로우
12.3 식품/화장품 (mfg_formula)
프리셋: mfg_formula
BOM 유형: FORMULA
검증: ✓ 배합비(%) 수식, ✓ 수율/로스, ✓ 부산물(BP), ✓ 전성분 목록 추출
12.4 건설/인테리어 (construction)
프리셋: construction
BOM 유형: PROJECT
검증: ✓ 공종별 자재+노동(LB)+장비(EQ)+외주(SV) 4요소
✓ 단위 다양성 (m³, 톤, M/D, 식)
✓ 공정표 연동, ✓ 설계 변경 리비전
B. 서비스/유통군
12.5 유통/이커머스 (distribution)
프리셋: distribution
BOM 유형: STANDARD
검증: ✓ 3종 세트 → 단품 재고 차감, ✓ 사은품/포장재 포함, ✓ 시즌 구성 변경
12.6 IT SaaS (it_saas)
프리셋: it_saas
BOM 유형: SUBSCRIPTION
검증: ✓ 기능모듈(LC) + 인프라(TB) + 사용자수(LC) 구성
✓ 월/연 과금 주기(billing_cycle)
✓ 티어 업그레이드 (옵션 추가)
✓ 프로젝트형 SI는 PROJECT로 분리
12.7 보험/금융 (finance_insurance)
프리셋: finance_insurance
BOM 유형: CONFIGURABLE + SUBSCRIPTION
검증: ✓ 주계약(FG) + 필수특약(PK) + 선택특약(PK, optional)
✓ option_group: "암담보", "뇌혈관" (택1)
✓ 갱신형: billing_cycle=YEARLY, duration=10 YEAR
✓ 나이/성별 요율 → options JSON으로 단가 테이블 연결
12.8 법률/컨설팅 (professional)
프리셋: professional
BOM 유형: SERVICE
검증: ✓ 인력(LB) grade별 시간단가 (파트너 50만/h, 어소 15만/h)
✓ 공수 M/M 환산 (1M/M = 160h)
✓ 실비(CS) + 외주(SV) + 라이선스(LC) 혼합
✓ 타임차지 vs. 고정가 구분 (bom_type으로)
12.9 물류/운송 (logistics)
프리셋: logistics
BOM 유형: SERVICE
검증: ✓ 차량(EQ) + 기사(LB) + 연료(RM, qty_formula) 구성
✓ 운임 수식: "거리km * 중량톤 * 기본단가 * 할증계수"
✓ 옵션: 상하차 인력, 포장, 보험 (is_optional)
12.10 호텔/여행 (hospitality)
프리셋: hospitality
BOM 유형: CONFIGURABLE
검증: ✓ 숙박(TB, 2박) + 조식(SV, 2회) + 부대시설(SV) 구성
✓ 옵션: 스파, 레이트체크아웃 (option_group)
✓ 여행 패키지: 항공(SV)+숙박(TB)+가이드(LB)+입장(SV) 구성
✓ 성수기 단가 계수 → options JSON
12.11 렌탈/구독 (rental)
프리셋: rental
BOM 유형: SUBSCRIPTION
검증: ✓ 본체(FG) + 소모품(PT, 교체주기) + 점검인력(LB) 구성
✓ 정기 교체: duration_value=6, duration_unit=MONTH
✓ 감가상각: 제품원가 ÷ 계약개월 = 월 원가
✓ 해지 시 잔존가치 계산
12.12 교육/이러닝 (hospitality)
프리셋: hospitality
BOM 유형: SUBSCRIPTION
검증: ✓ 강의콘텐츠(LC, 120강) + 교재(FG) + 플랫폼(TB) 구성
✓ 구독기간: duration=6 MONTH, billing=MONTHLY
✓ 옵션: 라이브Q&A(SV), AI분석(SV), 첨삭(LB)
✓ 접근 권한 제어 (단원별 잠금/해제)
부록 A. 대한민국 전 업종 BOM 적용 맵 (623만 사업체)
KSIC 기준 20개 카테고리, 150+ 세부 업종의 BOM 적용 패턴
A.1 BOM 적용 유형 분류
모든 업종의 상품/서비스 구성요소를 7가지 BOM 유형으로 분류할 수 있다:
| BOM 유형 | 핵심 질문 | 대표 업종 | 사업체 규모 |
|---|---|---|---|
| STANDARD | "이 제품은 항상 이 부품으로 구성된다" | 제조, 유통 세트 | ~70만 |
| FORMULA | "배합비/수식으로 수량이 결정된다" | 식품, 화학, 블라인드 | ~15만 |
| CONFIGURABLE | "고객 옵션에 따라 구성이 달라진다" | 보험, 호텔, 자동차 | ~30만 |
| PROJECT | "이 프로젝트에만 해당하는 1회성 구성이다" | 건설, SI, 광고, 이벤트 | ~35만 |
| SERVICE | "인력 공수 + 실비로 구성된다" | 컨설팅, 물류, 생활서비스 | ~100만 |
| SUBSCRIPTION | "정기적으로 반복 과금되는 구성이다" | SaaS, 렌탈, 교육, 멤버십 | ~30만 |
| NONE | "BOM 불필요 — POS/CRM/예약만 필요" | 편의점, 주차장, 중개업 | ~340만 |
A.2 카테고리별 BOM 적용 상세
제조업 (63만 사업체) — BOM 필수
| 세부 업종 | 사업체 수 | BOM 유형 | 프리셋 |
|---|---|---|---|
| 금속가공/기계부품 | ~8만 | STANDARD | mfg_discrete |
| 섬유/의류/봉제 | ~6만 | CONFIGURABLE (컬러/사이즈) | mfg_custom |
| 식품/음료 제조 | ~5만 | FORMULA | mfg_formula |
| 전자/전기부품 | ~4만 | STANDARD+ENGINEERING | mfg_discrete |
| 화학/플라스틱 | ~3만 | FORMULA | mfg_formula |
| 가구/목재 | ~2만 | CONFIGURABLE | mfg_custom |
| 인쇄/출판 | ~1만 | PROJECT | construction |
| 의약/의료기기 | ~5천 | FORMULA+STANDARD | mfg_formula |
| 블라인드/스크린 | ~수백 | FORMULA | mfg_custom |
식음료/외식 (75만+ 사업체) — 레시피 BOM
| 세부 업종 | 사업체 수 | BOM 유형 | 핵심 가치 |
|---|---|---|---|
| 일반음식점 | ~55만 | FORMULA (레시피) | 식재료 원가율 자동 |
| 카페/커피숍 | ~10만 | FORMULA (레시피) | 음료별 원가 추적 |
| 배달 전문점 | ~10만 | FORMULA (레시피) | 배달채널 통합+원가 |
| 베이커리/제과 | ~1만 | FORMULA (배합) | 일일 생산계획 |
| 위탁급식 | ~3천 | FORMULA (레시피×인분) | 영양+원가 자동화 |
건설/부동산 (26만 사업체) — 프로젝트 BOM
| 세부 업종 | 사업체 수 | BOM 유형 | 핵심 가치 |
|---|---|---|---|
| 전문건설업 | ~15만 | PROJECT | 현장별 원가 추적 |
| 공인중개사 | ~11만 | NONE (CRM) | 매물 CRM |
| 인테리어 | ~6만 | PROJECT+CONFIGURABLE | 견적→시공 자동화 |
| 종합건설업 | ~5만 | PROJECT | BOQ+WBS 통합 |
유통/소매 (152만 사업체) — 세트 BOM 또는 불필요
| 세부 업종 | 사업체 수 | BOM 유형 | 핵심 가치 |
|---|---|---|---|
| 전문소매 (의류, 가전) | ~30만 | NONE (재고관리) | 멀티채널 재고 |
| 편의점/슈퍼 | ~14만 | NONE (POS) | 자동발주 |
| 도매업 | ~10만 | NONE (B2B 수발주) | 외상관리 |
| 온라인쇼핑몰 | ~5만 | STANDARD (번들) | 마켓 통합 |
| 약국 | ~2.5만 | NONE (처방) | 안전재고 |
생활서비스 (20만+ 사업체) — 서비스 BOM / 시술 BOM
| 세부 업종 | 사업체 수 | BOM 유형 | 핵심 가치 |
|---|---|---|---|
| 미용실/헤어샵 | ~9만 | SERVICE (시술BOM) | 시술별 재료 원가 |
| 자동차 정비 | ~4만 | SERVICE (부품BOM) | 차량별 정비 이력 |
| 세탁소 | ~4만 | NONE (접수관리) | 전산화 0%→디지털 |
| 네일/속눈썹/왁싱 | ~2만 | SERVICE (시술BOM) | 소재료 원가 |
| 청소대행 | ~3천 | SERVICE | 인력 스케줄링 |
의료/건강 (12만+ 사업체) — 시술/처방 BOM
| 세부 업종 | 사업체 수 | BOM 유형 | 핵심 가치 |
|---|---|---|---|
| 의원/클리닉 | ~7만 | SERVICE (시술BOM) | 시술별 원가+수익 |
| 약국 | ~2.5만 | FORMULA (조제) | 안전재고 자동발주 |
| 치과 | ~1.7만 | SERVICE (치료BOM) | 치료 단계 관리 |
| 한의원 | ~1.3만 | FORMULA (탕약BOM) | 처방 원가 자동화 |
| 헬스장/PT | ~1만 | SUBSCRIPTION | 회원 라이프사이클 |
| 필라테스/요가 | ~1만 | SUBSCRIPTION | 강사별 수익 정산 |
| 동물병원 | ~5,259 | FORMULA (처방BOM) | 진료+약품 통합 |
교육/학원 (15만+ 사업체) — 구독 BOM
| 세부 업종 | 사업체 수 | BOM 유형 | 핵심 가치 |
|---|---|---|---|
| 입시/보습학원 | ~9만 | SUBSCRIPTION | 원생 이탈 예측 |
| 음악/미술/체육 학원 | ~3만 | SUBSCRIPTION | 강사별 수익 |
| 어린이집/유치원 | ~4만 | NONE (원아관리) | 보조금 연동 |
| 독서실/스터디카페 | ~5천 | SUBSCRIPTION | 좌석별 수익 |
| 코딩/AI 교육 | ~5천 | SUBSCRIPTION | 학습 이력 |
운송/물류 (40만+ 사업체) — 서비스 BOM
| 세부 업종 | 사업체 수 | BOM 유형 | 핵심 가치 |
|---|---|---|---|
| 개별화물/용달 | ~10만 | SERVICE | 기사별 정산 |
| 택배/배송 | ~5만(업체) | SERVICE | 건별 수익성 |
| 퀵서비스 | ~1만 | SERVICE | 실시간 배차 |
| 이사업체 | ~5천 | SERVICE (BOM) | 건별 손익 |
| 보세창고/3PL | ~2천 | STANDARD | WMS 통합 |
IT/디지털 (45만+ 사업체) — 프로젝트/구독 BOM
| 세부 업종 | 사업체 수 | BOM 유형 | 핵심 가치 |
|---|---|---|---|
| IT 프리랜서/1인 | ~41만 | SERVICE | 1인 ERP |
| SW 개발사 | ~2.4만 | PROJECT | 프로젝트 수익성 |
| 웹에이전시 | ~2만 | PROJECT | 작업물 납기+원가 |
| SaaS/구독 서비스 | ~5천 | SUBSCRIPTION | 구독 수익 관리 |
이벤트/관혼상제 (2만+ 사업체) — 행사 BOM
| 세부 업종 | 사업체 수 | BOM 유형 | 핵심 가치 |
|---|---|---|---|
| 웨딩업체 | ~5천 | PROJECT (행사BOM) | 건별 원가+수익 |
| 꽃집/화환 | ~5천 | STANDARD (꽃BOM) | 시즌 수요 예측 |
| 이벤트기획 | ~3천 | PROJECT | 행사 원가 관리 |
| 케이터링 | ~2천 | FORMULA+PROJECT | 식재료×인분 |
| 장례식장/상조 | ~1천+ | STANDARD (패키지) | 장례 패키지 관리 |
환경/방역 (6만+ 사업체) — 서비스 BOM
| 세부 업종 | 사업체 수 | BOM 유형 | 핵심 가치 |
|---|---|---|---|
| 폐기물 수집·운반 | ~5만 | SERVICE | 노선별 수익성 |
| 방역업 | ~3천 | SERVICE (약품BOM) | 계약 자동 갱신 |
| 환경 컨설팅 | ~2천 | SERVICE | 측정 데이터 관리 |
기타 Long Tail (50만+ 사업체)
| 세부 업종 | 사업체 수 | BOM 유형 | 핵심 가치 |
|---|---|---|---|
| 철물점/자재점 | ~2만 | NONE (재고) | 소상공인 재고 |
| 안경원 | ~1만 | SERVICE (처방) | 처방 이력 |
| 사진관/스튜디오 | ~8천 | PROJECT | 촬영 일정 |
| 공유오피스 | ~168사 | SUBSCRIPTION | 좌석 가동률 |
| 농업법인/스마트팜 | ~10만 | FORMULA (재배BOM) | 작기별 원가 |
| 축산업 | ~수만 | FORMULA (사료BOM) | 개체 이력 |
| 수출입 기업 | ~31만 | 기존BOM+무역 | 환율 손익 |
| 프랜차이즈 가맹점 | ~30만 | 본부 BOM 따름 | 본사 연동 |
A.3 ERP 사각지대 TOP 10 (SAM 우선 공략 대상)
| 순위 | 업종 | 사업체 수 | 현재 관리 방식 | SAM 진입 가치 |
|---|---|---|---|---|
| 1 | 음식점/카페 | ~75만 | POS만, 원가 추적 없음 | 레시피BOM → 원가율 자동 |
| 2 | 소규모 소매 | ~40만 | POS만, 재무 단절 | POS+ERP 통합 |
| 3 | 미용/뷰티 | ~12만 | 예약앱만, 재고/회계 없음 | 예약+재고+회원 통합 |
| 4 | 학원/교육 | ~12만 | 수강료 앱만 | 원생 CRM+수업+회계 |
| 5 | 건설 소기업 | ~21만 | 엑셀+카톡 | 공사별 원가 자동화 |
| 6 | 화물/물류 | ~40만 | 배차+정산 수기 | 배차+정산 통합 |
| 7 | IT 프리랜서 | ~41만 | 없음 | 1인 ERP 라이트 |
| 8 | 세탁/수선/수리 | ~5만 | 전산화 0% | 접수+이력 디지털화 |
| 9 | 동물병원 | ~5,259 | 진료+재고 분리 | 진료+약품 통합 |
| 10 | 농업법인/스마트팜 | ~10만 | 엑셀, IoT 미연동 | 재배이력+출하 통합 |
관련 문서
| 문서 | 경로 |
|---|---|
| 품목 정책 | rules/item-policy.md |
| 견적 시스템 | features/quotes/README.md |
| 제품/품목/설계 DB | system/database/products.md |
| BOM 아이템 매핑 | dev/dev_plans/bom-item-mapping-plan.md |
| BOM 트리 3단계 | changes/20260318_item-management-bom-tree.md |
| 재공품 생산 정책 | rules/wip-production-policy.md |
| options JSON 정책 | standards/options-column-policy.md |
| SAM 슈퍼 솔루션 비전 | projects/sam-super-solution-vision.md |
최종 업데이트: 2026-03-22