diff --git a/plans/bom-v2-architecture-presentation.pptx b/plans/bom-v2-architecture-presentation.pptx new file mode 100644 index 0000000..00bae4f Binary files /dev/null and b/plans/bom-v2-architecture-presentation.pptx differ diff --git a/plans/bom-v2-meeting-summary.md b/plans/bom-v2-meeting-summary.md new file mode 100644 index 0000000..a8ab37a --- /dev/null +++ b/plans/bom-v2-meeting-summary.md @@ -0,0 +1,129 @@ +# BOM V2 아키텍처 — 개발팀 회의 요약 + +> **일자**: 2026-03-22 | **상세 문서**: `plans/bom-v2-universal-architecture-plan.md` + +--- + +## 1. 왜 V2가 필요한가 (V1 한계) + +| 문제 | 현재 (V1) | 영향 | +|------|---------|------| +| 3중 BOM 병렬 | Product BOM + Design BOM + Item BOM (JSON) | 데이터 불일치, 유지보수 3배 | +| 버전 관리 없음 | `items.bom` JSON 덮어쓰기 | 변경 이력 추적 불가 | +| 업종 종속 | 경동기업 수식 하드코딩 | 다른 회사 적용 불가 | +| 기능 부재 | 대체품목, 유효기간, 팬텀, 승인 없음 | 확장 불가 | + +**V2 목표**: 3중 병렬 → **단일 BOM 엔진**, 모든 업종 대응 + +--- + +## 2. V2 핵심 변경점 + +### 2.1 새 테이블 4개 + +``` +items (기존 유지) + └── bom 컬럼 → 제거 (관계형으로 이관) + +bom_headers (신규) ← BOM 버전/상태/유효기간 + └── bom_lines (신규) ← 구성품 목록 (수량, 수식, 로스율, 공정 연결) + └── bom_substitutes (신규) ← 대체품목 + +operations (신규) ← 공정 라우팅 (BOM-공정 연동) +tenant_bom_settings (신규) ← 테넌트별 BOM 설정 +``` + +### 2.2 BOM 유형 4→7종 + +| 유형 | 용도 | 대표 업종 | +|------|------|---------| +| **STANDARD** | 고정 자재 구성 | 제조, 유통 세트 | +| **FORMULA** | 수식/배합비 | 블라인드, 식품, 화장품 | +| **CONFIGURABLE** | 옵션 선택형 | 보험 특약, 호텔, 가구 | +| **ENGINEERING** | 설계용 (승인 후 STANDARD 전환) | 전자, 자동차 | +| **PROJECT** | 수주형 1회성 | 건설 BOQ, SI, 광고 | +| **SERVICE** | 인력공수 + 실비 | 컨설팅, 물류, 정비 | +| **SUBSCRIPTION** | 정기 과금/반복 | SaaS, 렌탈, 교육 | + +### 2.3 품목유형 5→15종 + +**기존 유지**: FG(완제품), PT(부품), SM(부자재), RM(원자재), CS(소모품) + +**물리적 추가**: SA(반조립), WIP(재공품), PH(팬텀), BP(부산물) + +**비물리적 추가**: SV(서비스), LB(노동), EQ(장비), LC(라이선스), TB(시간제), PK(패키지) + +### 2.4 BOM 버전 워크플로우 + +``` +DRAFT → PENDING → APPROVED → ACTIVE → OBSOLETE + ↓ (설계 변경) + 새 REVISION (REV.02) +``` + +--- + +## 3. 핵심 테이블 구조 + +### bom_headers + +| 컬럼 | 타입 | 설명 | +|------|------|------| +| item_id | FK→items | 부모 품목 | +| revision | VARCHAR(20) | REV.01, REV.02... | +| bom_type | VARCHAR(20) | 7종 중 하나 | +| status | VARCHAR(20) | DRAFT~OBSOLETE | +| effective_from/to | DATE | 유효기간 | +| base_qty | DECIMAL | 기준 수량 | +| source_template_id | FK→bom_templates | 수식 BOM 연결 | + +### bom_lines + +| 컬럼 | 타입 | 설명 | +|------|------|------| +| child_item_id | FK→items | 자식 품목 | +| quantity | DECIMAL | 소요량 | +| quantity_formula | VARCHAR | 수식 ("W1*H1/1e6") | +| waste_rate | DECIMAL | 로스율 (5%=0.05) | +| category | VARCHAR | 카테고리 그룹명 | +| operation_id | FK→operations | 공정 연결 | +| is_optional | BOOLEAN | 옵션 여부 | +| option_group | VARCHAR | 옵션 그룹 (택1) | +| duration_value/unit | DECIMAL/VARCHAR | 기간 (구독/렌탈) | +| billing_cycle | VARCHAR | 과금 주기 | +| grade_level | VARCHAR | 인력 등급 | + +--- + +## 4. V1 → V2 마이그레이션 + +``` +Phase 1: V2 테이블 생성 (V1 유지) +Phase 2: items.bom JSON → bom_headers + bom_lines 이관 +Phase 3: V2 API 추가 (V1 래퍼로 하위호환) +Phase 4: MNG/React UI 전환 +Phase 5: V1 items.bom 컬럼 제거 +``` + +**핵심**: V1 데이터 100% 무손실 이관, V1 API는 래퍼로 유지하여 점진적 전환 + +--- + +## 5. 구현 로드맵 + +| Phase | 기간 | 핵심 작업 | +|:-----:|:----:|---------| +| **1** | 2~3주 | DB 테이블 + 모델 + 기본 CRUD API + 데이터 이관 | +| **2** | 2~3주 | BOM 트리/전개/역전개 + 버전관리 + Diff | +| **3** | 3~4주 | 수식BOM + 대체품목 + 유효기간 + 공정연동 + 승인 | +| **4** | 2~3주 | MNG/React UI 전환 + 테넌트 설정 화면 | + +--- + +## 6. 논의 사항 + +- [ ] Phase 1 시작 시점 (현재 진행 중인 작업과 우선순위) +- [ ] V1 API 래퍼 유지 기간 (프론트엔드 전환 완료까지?) +- [ ] 업종 프리셋 12개 중 Phase 1에서 구현할 범위 +- [ ] 비물리적 품목유형 (LB, EQ, LC, TB, PK) 도입 시점 +- [ ] Design BOM (bom_templates) 통합 vs. 병존 결정