# BOM 산출 아이템 ↔ Items Master 매핑 분석

> **분석일**: 2026-02-05
> **대상**: 경동기업 (tenant_id: 287)
> **범위**: BOM 산출 로직(KyungdongFormulaHandler) 전체 아이템 → SAM Items Master + 5130(chandj) DB

---

## 1. 요약

| 항목 | 수치 |
|------|------|
| 5130(KDunitprice) 총 아이템 | 601개 |
| SAM Items Master 총 아이템 | 780개 |
| 5130 → SAM 코드 매칭률 | **100% (601/601)** |
| SAM 견적 전용 아이템 (EST/BD/PT/PM) | 157개 |
| BOM 산출 생성 아이템 종류 | 22종 |
| BOM → SAM 매핑 완료 | 17종 |
| BOM → SAM 미매핑 | **5종** |

### 핵심 결론
- 5130 → SAM 마이그레이션은 **100% 완료** (코드 기준 전수 매칭)
- BOM 산출 로직에서 생성하는 22종 아이템 중 **5종이 SAM items master에 미등록**
- 미등록 5종: 케이스 마구리, L바, 무게평철12T, 검사비, 주자재(스크린/슬랫)
- SAM에는 이미 견적 전용 코드 체계(EST-*, BD-*, PT-*, PM-*)가 구축되어 있음

---

## 2. 5130(chandj) DB 구조

### 2.1 주요 테이블

| 테이블 | 건수 | 용도 |
|--------|------|------|
| **KDunitprice** | 601건 | 품목 단가 마스터 (SAM의 items 테이블에 해당) |
| **item_list** | 9건 | 견적 품목 분류 (스크린, 셔터박스, 연기장벽 등) |
| **parts** | 37건 | 부품 (가이드레일, 하단마감재 등 - 모델별) |
| **BDparts** | - | 절곡품 부품 |
| **price_angle** | 2건 | 앵글 단가표 (JSON 배열) |
| **price_bend** | - | 절곡 단가표 |
| **price_motor** | - | 모터 단가표 |
| **price_pipe** | - | 파이프 단가표 |
| **price_pole** | - | 환봉 단가표 |
| **price_raw_materials** | - | 원자재 단가표 |
| **price_screenplate** | - | 스크린판 단가표 |
| **price_shaft** | - | 샤프트 단가표 |
| **price_smokeban** | - | 연기차단재 단가표 |
| **price_etc** | - | 기타 단가표 |

### 2.2 KDunitprice 코드 체계

| 코드 접두사 | 범위 | 분류 | 비고 |
|------------|------|------|------|
| 00xxx | 00002~00046 | 부품/부재료 | 하장바, 가이드레일, 평철 등 |
| 20xxx | 20000~20011 | SUS 원재료 | SUS 1.2T, 1.5T 판재 |
| 30xxx | 30000~30006 | EGI 원재료 + 운송 | EGI 판재, 운송료 |
| 50xxx | 50000~50004 | 서비스 | 수리비, 제품개발, LED, 사용료 |
| 70xxx | 70001~70102 | KD 모터/브라켓/제어기 | 경동 자체 생산품 |
| 80xxx | 80006~80202 | 기타 부품/자재 | 절곡가공, 가스켓, 점검구 등 |
| 81xxx | 81000 | 기타 | 텐텐지롤 |
| 90xxx | 90100~90727 | 반제품/부자재 | 커넥터, 환봉, 링, 복주머니 등 |
| Hxxxx | H0001~H0020 | 철골자재 | 각파이프, 앵글 |
| K1xxx~K2xxx | K1011~K2029 | 작업복/안전화 | (비생산 품목) |
| Mxxxx | M0001~M0059 | 외주 모터/브라켓 | IS, HY, KST 등 |
| MCCD | MCCD0001 | 방범연동기 | |
| Nxxxx | N71100~N76101 | 신형 모터/브라켓/제어기 | N시리즈 |
| Rxxxx | R0001~R0008 | 샤우드 | BS/KS 샤우드 |
| Sxxxx | S0000~S0039 | 스크린/슬랫/셔터 | 주자재류 |
| Wxxxx | W0001 | 와이어 | |

---

## 3. SAM 견적 전용 코드 체계

SAM에는 5130에 없는 **견적 전용 아이템** 157개가 추가 등록되어 있음.

### 3.1 코드 체계별 분류

| 접두사 | 건수 | 용도 | 예시 |
|--------|------|------|------|
| **BD-** | 58개 | 절곡품 (모델/규격별) | BD-케이스-500*350, BD-가이드레일-KWE01-SUS-120*70 |
| **EST-** | 71개 | 견적 산출 전용 아이템 | EST-MOTOR-220V-300K, EST-SHAFT-4-6, EST-CTRL-매립형 |
| **PT-** | 15개 | 품목 템플릿 (규격 미포함) | PT-케이스, PT-가이드레일, PT-L-BAR |
| **PM-** | 13개 | 제어기 부품 매핑 | PM-020(제어기 노출형), PM-023(콘트롤박스) |

### 3.2 BD- (절곡품) 상세

모델별 규격이 정해진 절곡품:
- **케이스**: 10종 (500*350 ~ 780*650)
- **마구리**: 10종 (505*355 ~ 785*685)
- **가이드레일**: 20종 (모델별 SUS/EGI, 2가지 규격)
- **하단마감재**: 10종 (모델별 SUS/EGI)
- **L-BAR**: 5종 (모델별)
- **연기차단재**: 2종 (케이스용, 가이드레일용)
- **보강평철**: 1종

### 3.3 EST- (견적 전용) 상세

- **EST-MOTOR-**: 19종 (220V/380V, 용량별)
- **EST-CTRL-**: 17종 (제어기/방범/방화 부품)
- **EST-SHAFT-**: 18종 (3~12인치, 길이별)
- **EST-PIPE-**: 3종 (각파이프 두께/길이별)
- **EST-ANGLE-**: 8종 (메인앵글, 모터받침 앵글)
- **EST-RAW-**: 4종 (스크린원단, 슬랫)
- **EST-SMOKE-**: 2종 (연기차단재)

---

## 4. BOM 산출 아이템 매핑 상태

### 4.1 calculateSteelItems (절곡품) - 10종

| BOM 아이템명 | SAM 등록 | SAM 코드 | 5130 등록 | 매핑 상태 |
|-------------|----------|----------|-----------|----------|
| 케이스 | O | BD-케이스-{규격}, PT-케이스 | X (5130 미등록) | **SAM만 등록** |
| 케이스용 연기차단재 | O | BD-케이스용 연기차단재, EST-SMOKE-케이스용 | X | **SAM만 등록** |
| 케이스 마구리 | **X** | - | X | **미등록** |
| 가이드레일 | O | BD-가이드레일-{모델}-{재질}-{규격}, PT-가이드레일 | O (00015) | 매핑 완료 |
| 레일용 연기차단재 | O | BD-가이드레일용 연기차단재, EST-SMOKE-레일용 | X | **SAM만 등록** |
| 하장바 | O | 00035, 00036 (5130 동일코드) | O (00035, 00036) | 매핑 완료 |
| L바 | **X** | - | X | **미등록** |
| 보강평철 | O | BD-보강평철-50, PT-보강평철 | X | **SAM만 등록** |
| 무게평철12T | **X** | - | O (00021 평철12T) | **SAM 미등록, 5130에는 유사품 존재** |
| 환봉 | O | 90201~90205 (5130 동일코드) | O (90201~90205) | 매핑 완료 |

### 4.2 calculatePartItems (부자재) - 5종

| BOM 아이템명 | SAM 등록 | SAM 코드 | 5130 등록 | 매핑 상태 |
|-------------|----------|----------|-----------|----------|
| 감기샤프트 {인치}인치 | O | EST-SHAFT-{인치}-{길이} (18종) | X (5130 미등록) | **SAM만 등록** |
| 각파이프 | O | EST-PIPE-{두께}-{길이} (3종) | O (H0001~H0020) | 매핑 완료 |
| 모터 받침용 앵글 | △ | EST-ANGLE-BRACKET-{타입} (4종) | X | **EST코드로 등록됨** |
| 앵글 {타입} | O | EST-ANGLE-MAIN-{타입} (4종) | O (H0003, H0004) | 매핑 완료 |
| 조인트바 | O | 800361, EST-RAW-슬랫-조인트바 | O (800361) | 매핑 완료 |

> **참고**: "모터 받침용 앵글"은 BOM에서 정확히 이 이름으로 검색하면 미등록이지만, EST-ANGLE-BRACKET-{타입} 4종이 이미 등록되어 있어 매핑 가능.

### 4.3 calculateDynamicItems (동적항목) - 7종

| BOM 아이템명 | BOM item_code | SAM 등록 | SAM 코드 | 5130 등록 | 매핑 상태 |
|-------------|------------|----------|----------|-----------|----------|
| 검사비 | KD-INSPECTION | **X** | - | X | **미등록** |
| 주자재(스크린) | KD-SCREEN | △ | EST-RAW-스크린-{타입} 3종 | O (S0001 등) | **EST코드로 등록됨** |
| 주자재(슬랫) | KD-SLAT | △ | EST-RAW-슬랫-{타입} 2종 | O (S0004, S0005) | **EST코드로 등록됨** |
| 모터 {용량} | KD-MOTOR-{용량} | O | EST-MOTOR-{전압}-{용량} (19종) | O (70001~70017 등) | 매핑 완료 |
| 제어기 {타입} | KD-CTRL-{타입} | O | EST-CTRL-{타입} (17종) | O (70026, 70027 등) | 매핑 완료 |
| 뒷박스 | KD-CTRL-BACKBOX | O | EST-CTRL-뒷박스, 80140 | O (80140) | 매핑 완료 |

---

## 5. 미매핑 아이템 상세

### 5.1 완전 미등록 (SAM + 5130 모두 없음)

| 아이템 | 생성 메서드 | SAM 유사 코드 | 해결 방안 |
|--------|----------|-------------|----------|
| **케이스 마구리** | calculateSteelItems | BD-마구리-{규격} 10종 | BOM에서 BD-마구리-{규격} 매핑 필요 |
| **L바** | calculateSteelItems | BD-L-BAR-{모델}-{규격} 5종 | BOM에서 BD-L-BAR-{모델}-{규격} 매핑 필요 |
| **검사비** | calculateDynamicItems | (없음) | items master에 EST-INSPECTION 코드로 신규 등록 필요 |

### 5.2 SAM 미등록이나 유사품 존재

| 아이템 | 5130 유사품 | SAM 유사품 | 해결 방안 |
|--------|-----------|-----------|----------|
| **무게평철12T** | 00021 (평철12T, 2000mm, 13,500원) | SAM ID:14147 (00021, 평철12T) | 5130 코드 00021로 이미 SAM에 존재. BOM에서 매핑만 추가 |

### 5.3 KD-* → EST-* 코드 변환 필요

BOM에서 사용하는 KD-* 코드는 SAM items master에 미등록. EST-* 코드로 변환 매핑 필요.

| BOM item_code | SAM 대응 코드 | 변환 규칙 |
|--------------|-------------|----------|
| KD-INSPECTION | (미등록) | 신규 등록 필요 |
| KD-SCREEN | EST-RAW-스크린-{타입} | 타입(실리카/화이바/와이어)에 따라 분기 |
| KD-SLAT | EST-RAW-슬랫-{타입} | 타입(방범/방화)에 따라 분기 |
| KD-MOTOR-{용량} | EST-MOTOR-{전압}-{용량} | 전압(220V/380V) + 용량으로 분기 |
| KD-CTRL-{타입} | EST-CTRL-{타입} | 타입명 일치 |
| KD-CTRL-BACKBOX | EST-CTRL-뒷박스 | 직접 매핑 |

---

## 6. 5130 price_* 단가 참조 테이블

BOM 산출 로직에서 단가를 가져오는 5130 테이블:

| 테이블 | 구조 | 용도 |
|--------|------|------|
| price_angle | JSON 배열 (itemList 컬럼) | 앵글 규격별 단가 |
| price_bend | JSON 배열 | 절곡 가공 단가 |
| price_motor | JSON 배열 | 모터 용량/전압별 단가 |
| price_pipe | JSON 배열 | 파이프 규격별 단가 |
| price_pole | JSON 배열 | 환봉 규격별 단가 |
| price_raw_materials | JSON 배열 | 원자재(스크린, 슬랫) 단가 |
| price_screenplate | JSON 배열 | 스크린 판재 단가 |
| price_shaft | JSON 배열 | 샤프트 인치/길이별 단가 |
| price_smokeban | JSON 배열 | 연기차단재 단가 |
| price_etc | JSON 배열 | 기타 항목 단가 |

> 이 테이블들은 SAM의 `chandj` DB 연결을 통해 직접 참조하며, BOM 산출 시 실시간으로 단가를 조회함.

---

## 7. 관련 파일

| 파일 | 용도 |
|------|------|
| `api/app/Services/Quote/FormulaHandlers/KyungdongFormulaHandler.php` | BOM 산출 메인 로직 |
| `api/app/Services/Quote/FormulaEvaluatorService.php` | 수식 평가 서비스 |
| `api/app/Services/Quote/QuoteCalculationService.php` | 자동산출 실행 |
| `api/app/Models/Items/Item.php` | Items 모델 |
| `docs/features/quotes/README.md` | 견적 시스템 문서 |
| `docs/dev_plans/bom-item-mapping-plan.md` | 후속 작업 계획 |