diff --git a/plans/bom-v2-universal-architecture-plan.md b/plans/bom-v2-universal-architecture-plan.md index 7e4fdb7..c93f2de 100644 --- a/plans/bom-v2-universal-architecture-plan.md +++ b/plans/bom-v2-universal-architecture-plan.md @@ -60,24 +60,49 @@ V1 BOM 시스템 ### 2.1 핵심 원칙 ``` -P1. 모든 업종 수용 — 이산/공정/조립/혼합 제조 전부 지원 -P2. 테넌트별 자율 — BOM 깊이, 유형, 수식을 테넌트가 정의 +P1. 전 업종 수용 — 제조/유통/건설/서비스/금융/구독 전부 지원 +P2. 테넌트별 자율 — BOM 깊이, 유형, 수식, 단위를 테넌트가 정의 P3. 단일 BOM 엔진 — 3중 병렬 → 1개 통합 BOM 테이블 P4. 버전 필수 — 모든 BOM 변경은 리비전으로 관리 P5. 하위 호환 — V1 JSON BOM 데이터 무손실 마이그레이션 +P6. 물리+비물리 — 자재뿐 아니라 노동/서비스/라이선스/구독도 구성요소 ``` -### 2.2 지원 대상 업종 +### 2.2 지원 대상 업종 (KSIC 22개 업종 전수 대응) -| 업종 | BOM 특성 | V2 대응 | -|------|---------|---------| -| **블라인드/스크린** (현재) | 수식 기반, 가변 사이즈 | 수식 엔진 유지 | -| **기계 부품** | 다단계 조립, 가공 공정 | N-Level + Routing | -| **전자/반도체** | 대체품목, ECN 관리 | Substitute + Effectivity | -| **식품/화학** | 배합비, 수율, 부산물 | Formula BOM + Co-product | -| **건설/플랜트** | 프로젝트별 BOM, 대량 자재 | Project BOM + Bulk | -| **가구/인테리어** | 옵션 조합, 커스텀 | Configurable BOM | -| **의류/섬유** | 사이즈별 BOM, 색상별 원단 | Variant BOM | +> 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 | --- @@ -89,7 +114,7 @@ P5. 하위 호환 — V1 JSON BOM 데이터 무손실 마이그레이션 V2 BOM 테이블 구조 items (기존 유지 + 확장) - ├── item_type 확장: FG, SA, PT, WIP, PH, SM, RM, CS, BP, SV + ├── item_type 확장: FG, SA, PT, WIP, PH, SM, RM, CS, BP, SV, LB, EQ, LC, TB, PK └── bom 컬럼: 제거 (관계형으로 이관) bom_headers (신규 — BOM 헤더/버전) @@ -97,7 +122,7 @@ bom_headers (신규 — BOM 헤더/버전) ├── revision (REV.01, REV.02 ...) ├── status (DRAFT → PENDING → APPROVED → ACTIVE → OBSOLETE) ├── effective_from / effective_to - └── bom_type (STANDARD | ENGINEERING | CONFIGURABLE | FORMULA) + └── bom_type (STANDARD | ENGINEERING | CONFIGURABLE | FORMULA | PROJECT | SERVICE | SUBSCRIPTION) bom_lines (신규 — BOM 라인/구성품) ├── bom_header_id → bom_headers @@ -143,22 +168,34 @@ bom_templates (기존 유지) │ └── 수식 산출 → bom_headers 자동 생성 ───────────────┘ ``` -### 3.3 items.item_type 확장 +### 3.3 items.item_type 확장 (5→15종) -| 코드 | 한글 | 설명 | V1 | V2 | -|------|------|------|:--:|:--:| -| `FG` | 완제품 | 판매 가능한 최종 제품 | O | O | -| `SA` | 반조립품 | 중간 조립품 (재고 관리됨) | - | **신규** | -| `PT` | 부품 | 구성 부품 | O | O | -| `WIP` | 재공품 | 가공 중인 중간 산출물 | - | **신규** | -| `PH` | 팬텀 | 가상 그룹 (재고 없음, BOM 전개 시 투과) | - | **신규** | -| `SM` | 부자재 | 보조 자재 | O | O | -| `RM` | 원자재 | 주요 원료 | O | O | -| `CS` | 소모품 | 일회성 소모 자재 | O | O | -| `BP` | 부산물 | 생산 시 발생하는 부산물 | - | **신규** | -| `SV` | 서비스 | 외주 가공, 검사비 등 비물리 항목 | - | **신규** | +**물리적 품목 (Physical)** -> 테넌트별로 사용할 유형을 선택할 수 있다. 블라인드 업체는 FG/PT/SM/RM/CS만, 전자업체는 SA/PH까지 활성화. +| 코드 | 한글 | 설명 | 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 상세 @@ -169,10 +206,13 @@ CREATE TABLE bom_headers ( item_id BIGINT UNSIGNED NOT NULL, -- 부모 품목 revision VARCHAR(20) NOT NULL DEFAULT 'REV.01', bom_type VARCHAR(20) NOT NULL DEFAULT 'STANDARD', - -- STANDARD: 일반 BOM - -- ENGINEERING: 설계용 (비생산) - -- CONFIGURABLE: 옵션 조합 BOM - -- FORMULA: 배합/수식 BOM + -- 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, -- 유효 시작 @@ -214,7 +254,15 @@ CREATE TABLE bom_lines ( 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, -- 확장 속성 @@ -324,6 +372,89 @@ STANDARD BOM (생산팀) 새 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 버전 관리 @@ -506,6 +637,12 @@ CREATE TABLE tenant_bom_settings ( 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 라인 필드 (테넌트별 확장) @@ -516,52 +653,117 @@ CREATE TABLE tenant_bom_settings ( ); ``` -### 8.2 업종별 프리셋 +### 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)** ```json { - "presets": { - "blind_screen": { - "label": "블라인드/스크린 제조", - "enabled_item_types": ["FG", "PT", "WIP", "SM", "RM", "CS", "SV"], - "enabled_bom_types": ["STANDARD", "FORMULA"], - "max_bom_depth": 5, - "use_formula_bom": true, - "use_waste_rate": true, - "use_routing": true, - "category_display": "FOLDER" - }, - "electronics": { - "label": "전자/반도체", - "enabled_item_types": ["FG", "SA", "PT", "PH", "SM", "RM", "CS"], - "enabled_bom_types": ["STANDARD", "ENGINEERING"], - "max_bom_depth": 15, - "require_approval": true, - "use_effectivity": true, - "use_substitutes": true, - "use_phantom": true - }, - "food_chemical": { - "label": "식품/화학", - "enabled_item_types": ["FG", "PT", "RM", "CS", "BP"], - "enabled_bom_types": ["STANDARD", "FORMULA"], - "use_formula_bom": true, - "use_waste_rate": true, - "category_display": "FLAT" - }, - "furniture": { - "label": "가구/인테리어", - "enabled_item_types": ["FG", "SA", "PT", "SM", "RM"], - "enabled_bom_types": ["STANDARD", "CONFIGURABLE"], - "max_bom_depth": 5 - }, - "simple_assembly": { - "label": "단순 조립", - "enabled_item_types": ["FG", "PT", "SM", "RM", "CS"], - "enabled_bom_types": ["STANDARD"], - "max_bom_depth": 3, - "category_display": "FLAT" - } + "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" } } ``` @@ -762,47 +964,116 @@ foreach (Item::whereNotNull('bom')->cursor() as $item) { --- -## 12. 업종별 시나리오 검증 +## 12. 업종별 시나리오 검증 (12개) -### 12.1 블라인드/스크린 (현재) +### A. 제조업군 +**12.1 블라인드/스크린** (현재 고객, mfg_custom) ``` -설정: STANDARD + FORMULA, WIP 사용, 카테고리 FOLDER -검증: - ✓ 수식 산출 → BOM 자동 생성 - ✓ 절곡품(WIP) BOM 트리 - ✓ 카테고리 그룹 표시 - ✓ V1 데이터 100% 호환 +프리셋: mfg_custom +BOM 유형: FORMULA + STANDARD +검증: ✓ 수식 산출 → BOM 저장, ✓ WIP 절곡품 트리, ✓ 카테고리 FOLDER, ✓ V1 100% 호환 ``` -### 12.2 전자부품 제조 - +**12.2 전자부품** (mfg_discrete) ``` -설정: STANDARD + ENGINEERING, SA/PH 사용, 승인 필수, 대체품목, ECN -검증: - ✓ 15단계 BOM 깊이 - ✓ 팬텀 품목 투과 전개 - ✓ ECN 시 일괄 품목 대체 - ✓ 리비전별 유효기간 관리 +프리셋: mfg_discrete +BOM 유형: STANDARD + ENGINEERING +검증: ✓ 15단계 BOM, ✓ 팬텀 투과, ✓ ECN 일괄 대체, ✓ 유효기간, ✓ 승인 워크플로우 ``` -### 12.3 식품 제조 - +**12.3 식품/화장품** (mfg_formula) ``` -설정: FORMULA, 수율 관리, 부산물(BP) -검증: - ✓ 배합비 수식 (A원료 30% + B원료 70%) - ✓ 로스율 반영 투입량 - ✓ 부산물 자동 등록 +프리셋: mfg_formula +BOM 유형: FORMULA +검증: ✓ 배합비(%) 수식, ✓ 수율/로스, ✓ 부산물(BP), ✓ 전성분 목록 추출 ``` -### 12.4 가구 주문제작 - +**12.4 건설/인테리어** (construction) ``` -설정: CONFIGURABLE, 옵션 조합 -검증: - ✓ 상판/다리/마감 옵션별 BOM 분기 - ✓ 주문 시 옵션 선택 → BOM 확정 +프리셋: 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) + ✓ 접근 권한 제어 (단원별 잠금/해제) ``` ---