refactor: [docs] 팀별 폴더 구조 재편 (공유/개발/프론트/기획)
- 개발팀 전용 폴더 dev/ 생성 (standards, guides, quickstart, changes, deploys, data, history, dev_plans 이동) - 프론트엔드 전용 폴더 frontend/ 생성 (api/ → frontend/api-specs/) - 기획팀 폴더 requests/ 생성 - plans/ → dev/dev_plans/ 이름 변경 - README.md 신규 (사람용 안내), INDEX.md 재작성 (Claude Code용) - resources.md 신규 (노션 링크용, assets/brochure 이관 예정) - CURRENT_WORKS.md 삭제, TODO.md → dev/ 이동 - 전체 참조 경로 업데이트 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
212
dev/data/analysis/bom-item-mapping-analysis.md
Normal file
@@ -0,0 +1,212 @@
|
||||
# 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` | 후속 작업 계획 |
|
||||
1262
dev/data/analysis/item-db-analysis.md
Normal file
BIN
dev/data/견적/견적관리 목록/개별삭제.png
Normal file
|
After Width: | Height: | Size: 134 KiB |
BIN
dev/data/견적/견적관리 목록/견적관리_목록.png
Normal file
|
After Width: | Height: | Size: 180 KiB |
BIN
dev/data/견적/견적관리 목록/견적관리_목록_상태별 탭 처리.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
dev/data/견적/견적관리 목록/견적관리_목록_테이블 수정모드-1.png
Normal file
|
After Width: | Height: | Size: 178 KiB |
BIN
dev/data/견적/견적관리 목록/견적관리_목록_테이블 수정모드.png
Normal file
|
After Width: | Height: | Size: 182 KiB |
BIN
dev/data/견적/견적관리 목록/일괄삭제.png
Normal file
|
After Width: | Height: | Size: 134 KiB |
BIN
dev/data/견적/견적관리 목록/해상도보다 테이블이 더 넓을 시 하단 스크롤바 적용.png
Normal file
|
After Width: | Height: | Size: 138 KiB |
BIN
dev/data/견적/견적관리_수정 (3컬럼).png
Normal file
|
After Width: | Height: | Size: 304 KiB |
BIN
dev/data/견적/견적관리목록/거래처 선택.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
dev/data/견적/견적관리목록/견적등록 (3컬럼).png
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
dev/data/견적/견적관리목록/다중 견적 산출 시.png
Normal file
|
After Width: | Height: | Size: 142 KiB |
BIN
dev/data/견적/견적관리목록/자동 산출 결과 리스트.png
Normal file
|
After Width: | Height: | Size: 228 KiB |
BIN
dev/data/견적/견적관리목록/자동 산출 결과 리스트_삭제.png
Normal file
|
After Width: | Height: | Size: 182 KiB |
BIN
dev/data/견적/견적관리목록/필수 항목 벨리데이션 체크.png
Normal file
|
After Width: | Height: | Size: 145 KiB |
BIN
dev/data/견적/견적관리목록/현장명 선택.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
dev/data/견적/견적산출_Flow.pdf
Normal file
BIN
dev/data/견적/견적상세/MES Solution Website Structure 251127.png
Normal file
|
After Width: | Height: | Size: 303 KiB |
BIN
dev/data/견적/견적상세/MES Solution Website Structure 251148.png
Normal file
|
After Width: | Height: | Size: 326 KiB |
BIN
dev/data/견적/견적상세/견적관리_상세 (3컬럼)-1.png
Normal file
|
After Width: | Height: | Size: 283 KiB |
BIN
dev/data/견적/견적상세/견적관리_상세 (3컬럼).png
Normal file
|
After Width: | Height: | Size: 190 KiB |
BIN
dev/data/견적/견적상세/견적산출내역서-1.png
Normal file
|
After Width: | Height: | Size: 394 KiB |
BIN
dev/data/견적/견적상세/견적산출내역서.png
Normal file
|
After Width: | Height: | Size: 226 KiB |
BIN
dev/data/견적/견적상세/견적서.png
Normal file
|
After Width: | Height: | Size: 231 KiB |
BIN
dev/data/견적/견적수식관리/MES Solution Website Structure 251129.png
Normal file
|
After Width: | Height: | Size: 197 KiB |
BIN
dev/data/견적/견적수식관리/결과 출력 방식.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
dev/data/견적/견적수식관리/계산식_변수.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
dev/data/견적/견적수식관리/계산식_품목-1.png
Normal file
|
After Width: | Height: | Size: 86 KiB |
BIN
dev/data/견적/견적수식관리/계산식_품목-2.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
dev/data/견적/견적수식관리/계산식_품목-3.png
Normal file
|
After Width: | Height: | Size: 85 KiB |
BIN
dev/data/견적/견적수식관리/계산식_품목-4.png
Normal file
|
After Width: | Height: | Size: 75 KiB |
BIN
dev/data/견적/견적수식관리/계산식_품목.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
dev/data/견적/견적수식관리/기준정보_견적수식관리_품목수식관리 섹션.png
Normal file
|
After Width: | Height: | Size: 157 KiB |
BIN
dev/data/견적/견적수식관리/기준정보_견적수식관리_품목수식관리 섹션_카테고리 수정.png
Normal file
|
After Width: | Height: | Size: 170 KiB |
BIN
dev/data/견적/견적수식관리/수식 수정-1.png
Normal file
|
After Width: | Height: | Size: 221 KiB |
BIN
dev/data/견적/견적수식관리/수식 수정-2.png
Normal file
|
After Width: | Height: | Size: 243 KiB |
BIN
dev/data/견적/견적수식관리/수식 수정.png
Normal file
|
After Width: | Height: | Size: 190 KiB |
BIN
dev/data/견적/견적수식관리/수식 카테고리 목록.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
dev/data/견적/견적수식관리/수식추가.png
Normal file
|
After Width: | Height: | Size: 183 KiB |
BIN
dev/data/견적/견적수식관리/입력값.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
dev/data/견적/견적수식관리/카테고리 추가.png
Normal file
|
After Width: | Height: | Size: 164 KiB |
673
dev/data/견적/견적시스템_분석문서.md
Normal file
@@ -0,0 +1,673 @@
|
||||
# SAM 견적 시스템 분석 문서
|
||||
|
||||
## 1. 개요
|
||||
|
||||
SAM(Smart Automation Management) 견적 시스템은 제조업체의 견적 산출 프로세스를 자동화하는 시스템입니다. 본 문서는 이미지 분석과 소스 코드 분석을 통해 시스템 구조와 기능을 정리합니다.
|
||||
|
||||
---
|
||||
|
||||
## 2. 견적 산출 플로우 (Flow)
|
||||
|
||||
### 2.1 전체 프로세스 (견적산출_Flow.pdf 기반)
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ ROW 1: 기본 정보 입력 │
|
||||
├─────────────────────────────────────────────────────────────────────────────┤
|
||||
│ 견적시작 → 기본정보 → 분류선택 → 모델선택 → 날짜자동 → 발주처선택 → 현장명 → 비고 │
|
||||
└─────────────────────────────────────────────────────────────────────────────┘
|
||||
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ ROW 2: 오픈사이즈 입력 │
|
||||
├─────────────────────────────────────────────────────────────────────────────┤
|
||||
│ 일련번호 → 층수 → 부호 → 모델명 → 본체타입자동 → 가이드레일자동 → 오픈사이즈입력 │
|
||||
└─────────────────────────────────────────────────────────────────────────────┘
|
||||
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ ROW 3: 제작사이즈 산출 │
|
||||
├─────────────────────────────────────────────────────────────────────────────┤
|
||||
│ 제작사이즈자동 → 수량입력 → 제어기설정 → 전원선택 → 유무선 → 용량자동 → 저장 │
|
||||
└─────────────────────────────────────────────────────────────────────────────┘
|
||||
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ ROW 4: 견적 마무리 │
|
||||
├─────────────────────────────────────────────────────────────────────────────┤
|
||||
│ 견적하기 → 견적번호자동 → 품목추가/삭제/수정 → 세부산출 → 단가적용 → 저장/발주전환 │
|
||||
└─────────────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 2.2 자동 산출 항목
|
||||
|
||||
| 항목 | 설명 | 산출 방식 |
|
||||
|------|------|----------|
|
||||
| 제작폭(W1) | 실제 제작 폭 | W0 + 여유값 (수식 기반) |
|
||||
| 제작높이(H1) | 실제 제작 높이 | H0 + 여유값 (수식 기반) |
|
||||
| 면적(M) | 제품 면적 | W1 × H1 / 1,000,000 m² |
|
||||
| 중량(K) | 제품 무게 | 면적 × 단위중량 |
|
||||
| 용량 | 모터 용량 | 면적/중량 기반 범위 계산 |
|
||||
| 브라켓 | 고정부품 | 가이드레일 유형별 자동 선택 |
|
||||
|
||||
---
|
||||
|
||||
## 3. 화면별 기능 분석
|
||||
|
||||
### 3.1 견적관리 목록 (QuoteManagement3List)
|
||||
|
||||
**경로**: `design/src/components/QuoteManagement3List.tsx`
|
||||
|
||||
**UI 구성**:
|
||||
- 상단 통계 카드: 이번 달 견적금액, 진행중 견적금액, 이번 주 신규 견적, 수주 전환율
|
||||
- 검색 필터: 견적번호, 발주처, 담당자, 제품명, 현장코드, 현장명 검색
|
||||
- 상태 탭: 전체, 최초작성, 수정중, 최종확정, 수주전환
|
||||
|
||||
**테이블 컬럼**:
|
||||
| 컬럼 | 설명 |
|
||||
|------|------|
|
||||
| 번호 | 순번 |
|
||||
| 견적번호 | KD-PR-YYMMDD-NN 형식 |
|
||||
| 접수일 | 견적 접수 일자 |
|
||||
| 상태 | 최초작성/수정중/최종확정/수주전환 |
|
||||
| 제품명 | 제품 코드 및 모델명 |
|
||||
| 수량 | 견적 수량 |
|
||||
| 금액 | 견적 금액 (만원) |
|
||||
| 발주처 | 고객사명 |
|
||||
| 현장명 | 설치 현장 (프로젝트코드 포함) |
|
||||
| 담당자 | 영업 담당자 |
|
||||
| 비고 | 메모 |
|
||||
| 작업 | 보기/수정/삭제 |
|
||||
|
||||
**기능**:
|
||||
- 체크박스 선택 후 일괄 삭제
|
||||
- 개별 삭제 (확인 다이얼로그)
|
||||
- 견적 등록 버튼
|
||||
- 상태별 필터링
|
||||
|
||||
### 3.2 견적 등록 (QuoteManagement3Write)
|
||||
|
||||
**경로**: `design/src/components/QuoteManagement3Write.tsx`
|
||||
|
||||
**폼 구조 (3컬럼 레이아웃)**:
|
||||
|
||||
```
|
||||
┌────────────────┬────────────────┬────────────────┐
|
||||
│ 등록일 │ 작성자 │ 발주처 선택 * │
|
||||
├────────────────┼────────────────┼────────────────┤
|
||||
│ 현장명 │ 발주 담당자 │ 연락처 │
|
||||
├────────────────┴────────────────┴────────────────┤
|
||||
│ 납기일 │
|
||||
├─────────────────────────────────────────────────┤
|
||||
│ 비고 (특이사항을 입력하세요) │
|
||||
└─────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**자동 견적 산출 섹션**:
|
||||
|
||||
| 필드 | 설명 | 필수 |
|
||||
|------|------|------|
|
||||
| 층수 | 예: 1층, B1, 지하1층 | - |
|
||||
| 부호 | 예: A, B, C | - |
|
||||
| 제품 카테고리 (PC) | 카테고리 선택 | * |
|
||||
| 제품명 | 제품 선택 | * |
|
||||
| 오픈사이즈 (W0) | 가로 사이즈 (mm) | * |
|
||||
| 오픈사이즈 (H0) | 세로 사이즈 (mm) | * |
|
||||
| 가이드레일 설치 유형 (GT) | 설치 유형 선택 | * |
|
||||
| 모터 전원 (MP) | 전원 선택 | * |
|
||||
| 연동제어기 (CT) | 제어기 선택 | * |
|
||||
| 수량 (QTY) | 수량 입력 | * |
|
||||
| 마구리 날개치수 (WS) | 기본값: 50 | - |
|
||||
| 검사비 (INSP) | 기본값: 50000 | - |
|
||||
|
||||
**다중 견적 산출**: 견적 1, 견적 2, ... 탭으로 여러 품목 동시 등록
|
||||
|
||||
### 3.3 견적 상세 (QuoteManagement3Detail)
|
||||
|
||||
**기본 정보 표시**:
|
||||
- 견적번호, 작성자, 발주처
|
||||
- 담당자, 연락처, 현장명
|
||||
- 현장코드, 상태, 접수일
|
||||
- 납기일, 비고
|
||||
|
||||
**자동 견적 산출 정보**:
|
||||
- 제품 카테고리, 선택된 제품, 수량
|
||||
- 오픈사이즈 (가로/세로), 부호, 층수
|
||||
|
||||
**부품구성표(BOM) 계산 결과**:
|
||||
|
||||
| 순번 | 품목코드 | 품목명 | 규격 | 수량 | 단위 | 단가 | 금액 |
|
||||
|------|---------|--------|------|------|------|------|------|
|
||||
| 1 | SF-SCR-F01 | 스크린 원단 | 5000×5000 | 27.499 | M2 | 962,465 | 26,466,825,035원 |
|
||||
| 2 | SF-SCR-F02 | 가이드레일 (좌) | 5000×5000 | 5.35 | M | 42,000 | 224,700원 |
|
||||
| ... | ... | ... | ... | ... | ... | ... | ... |
|
||||
|
||||
**합계 표시**:
|
||||
- 소계
|
||||
- 할인율 (%)
|
||||
- 적용 금액
|
||||
|
||||
### 3.4 견적서 출력 (QuoteDocument)
|
||||
|
||||
**출력 형식**:
|
||||
- PDF / 이메일 / 팩스 / 카카오톡 / 인쇄
|
||||
|
||||
**견적서 구성**:
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ 견 적 서 │
|
||||
│ 문서번호: KD-PR-20251202-01 │
|
||||
│ 작성일자: 2025년 12월 02일 │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ [수요자] │
|
||||
│ 업체명: 부산건설 │
|
||||
│ 현장명: - 담당자: 김부산 │
|
||||
│ 제품명: 방화 스크린 셔터 (대형) 연락처: 010-5555-6666 │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ [공급자] │
|
||||
│ 상호: (주)엠진건설 사업자등록번호: 139-87-00353 │
|
||||
│ 대표자: 김 용 진 업태: 제조 │
|
||||
│ 종목: 방창, 셔터, 금속창호 │
|
||||
│ 사업장주소: 경기도 안성시 공업용지 오성길 45-22 │
|
||||
│ 전화: 031-983-5130 팩스: 02-6911-6315 │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ 총 견적금액 │
|
||||
│ ₩ 4,105,400 │
|
||||
│ ※ 부가가치세 별도 │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ 세 부 산 출 내 역 │
|
||||
│ No. | 품목명 | 규격 | 수량 | 단위 | 단가 | 금액 │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ 1 | 스크린 원단 | - | 27.50 | M2 | 962,465 | 26,466,825,035 │
|
||||
│ 2 | 가이드레일 (좌) | - | 5.35 | M | 42,000 | 224,700 │
|
||||
│ ... | ... | ... | ... | ... | ... | ... |
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 3.5 견적산출내역서
|
||||
|
||||
**추가 탭**: 산출내역서 / 소요자재 내역
|
||||
|
||||
**산출내역서 상세 정보**:
|
||||
- 품목별 규격, 수량, 단위, 단가, 금액 상세 표시
|
||||
- 부품구성표(BOM) 계산 결과와 동일
|
||||
|
||||
---
|
||||
|
||||
## 4. 기준정보 관리
|
||||
|
||||
### 4.1 견적수식관리 (FormulaManagement2)
|
||||
|
||||
**경로**: `design/src/components/FormulaManagement2.tsx`
|
||||
|
||||
**품목 수식 관리**:
|
||||
- 제품 선택: 공통 / 특정 제품별 (예: 24채 수식)
|
||||
- 카테고리 선택 (실행 순서): 기본정보, 제작사이즈, 면적, 모터용량산출, 감기사프트, 브라켓&받침용영역, 가이드레일, 가이드레일설치유형, 셔터박스, 하단마감재
|
||||
|
||||
**수식 테이블 컬럼**:
|
||||
|
||||
| 순서 | 이름 | 변수 | 타입 | 수식/범위 | 결과 타입 | 설명 | 작업 |
|
||||
|------|------|------|------|----------|----------|------|------|
|
||||
| 1 | 제품 카테고리 | PC | 계산식 | PC | 품목 | Product Category | 수정/삭제 |
|
||||
| 2 | 오픈사이즈 가로 | W0 | 계산식 | W0 | 품목 | - | 수정/삭제 |
|
||||
| 3 | 오픈사이즈 세로 | H0 | 계산식 | H0 | 품목 | - | 수정/삭제 |
|
||||
| 4 | 가이드레일 유형 | GT | 계산식 | GT | 품목 | - | 수정/삭제 |
|
||||
| 5 | 모터 전원 | MP | 계산식 | MP | 품목 | - | 수정/삭제 |
|
||||
| 6 | 연동제어기 | CT | 계산식 | CT | 품목 | - | 수정/삭제 |
|
||||
| 7 | 수량 | QTY | 계산식 | QTY | 품목 | - | 수정/삭제 |
|
||||
| 8 | 마구리 날개치수 | WS | 계산식 | WS | 품목 | - | 수정/삭제 |
|
||||
| 9 | 검사비 | INSP | 계산식 | INSP | 품목 | - | 수정/삭제 |
|
||||
| 10 | 제품명 | - | 계산식 | - | 품목 | 제품 선택용 (변수 아님) | 수정/삭제 |
|
||||
|
||||
**수식 추가 다이얼로그**:
|
||||
|
||||
| 필드 | 설명 |
|
||||
|------|------|
|
||||
| 제품 | 공통 / 특정 제품 |
|
||||
| 카테고리 | 수식 카테고리 |
|
||||
| 이름 | 수식 이름 |
|
||||
| 변수 | 변수명 (예: H1) |
|
||||
| 타입 | 계산식 / 범위별 / 매핑 / 입력값 |
|
||||
| 결과 출력 | 변수에 저장 / 품목/수량 출력 |
|
||||
| 계산식 | 예: W0 + 140, SUM(W0, H0), ROUND(M * 2.5, 2) |
|
||||
| 설명 | 수식에 대한 설명 |
|
||||
|
||||
**지원 함수**:
|
||||
- `SUM()`, `ROUND()`, `IF()`, `MIN()`, `MAX()`
|
||||
- 변수 검색 기능
|
||||
- 함수 도움말 제공
|
||||
|
||||
### 4.2 단가 계산 분류 관리
|
||||
|
||||
**분류 추가**: 카테고리들을 묶는 분류를 생성하고 관리
|
||||
|
||||
**자동 견적 산출**:
|
||||
- 단일 견적 / 다중 견적 (층/부호별) 선택
|
||||
- 입력값 기반으로 단일 또는 다중 견적 자동 산출
|
||||
|
||||
### 4.3 단가 수식 관리
|
||||
|
||||
**섹션 구조**:
|
||||
1. **단가 계산 분류 관리**: 분류명, 설명, 카테고리로 검색
|
||||
2. **단가 수식 관리**: 분류 그룹 또는 개별 품목에 단가 계산 수식 연결
|
||||
|
||||
**단가 수식 연결**:
|
||||
- 수식명, 품목명, 그룹명으로 검색
|
||||
- 첫 단가 수식 연결 추가하기 버튼
|
||||
|
||||
### 4.4 번호기준관리 (LOTNumberManagement)
|
||||
|
||||
**경로**: `design/src/components/LOTNumberManagement.tsx`
|
||||
|
||||
**번호기준 규칙 목록**:
|
||||
|
||||
| 번호 | 번호기준 이름 | 적용 대상 | 접두사 | 날짜 형식 | 순번 자릿수 | 구분자 | 예시 | 상태 | 작업 |
|
||||
|------|-------------|----------|--------|----------|------------|--------|------|------|------|
|
||||
| 1 | 견적번호 | 견적 | KD-PR | YYMMDD | 2자리 | - | KD-PR-251128-01 | 활성 | 테스트/수정/삭제 |
|
||||
| 2 | - | - | KD-SO | YYMMDD | 2자리 | - | KD-SO-251119-01 | 활성 | 테스트/수정/삭제 |
|
||||
| 3 | - | - | KD-MO | YYMMDD | 2자리 | - | KD-MO-251119-01 | 활성 | 테스트/수정/삭제 |
|
||||
| 4 | - | - | KD-OT | YYMMDD | 2자리 | - | KD-OT-251119-01 | 활성 | 테스트/수정/삭제 |
|
||||
| 5 | - | - | KD-PO | YYMMDD | 2자리 | - | KD-PO-251119-01 | 활성 | 테스트/수정/삭제 |
|
||||
|
||||
**번호기준 규칙 수정 폼**:
|
||||
|
||||
| 필드 | 설명 |
|
||||
|------|------|
|
||||
| 번호기준 이름 | 견적번호 등 |
|
||||
| 적용 대상 (복수 선택 가능) | 견적번호, 수주번호, 생산지시번호, 출하지시번호, 발주번호 |
|
||||
| 접두사 | KD-PR |
|
||||
| 구분자 | 하이픈 (-) |
|
||||
| 날짜 사용 | 사용/사용안함 |
|
||||
| 날짜 형식 | YYMMDD (251119) |
|
||||
| 순번 자릿수 | 2자리 (01-99) |
|
||||
| 상태 | 활성 (비활성 시 번호 생성에 사용되지 않음) |
|
||||
| 설명 | 견적번호 생성 규칙 |
|
||||
|
||||
**생성 번호 미리보기**: `KD-PR-251128-01`
|
||||
|
||||
---
|
||||
|
||||
## 5. 소스 코드 구조 분석
|
||||
|
||||
### 5.1 핵심 컴포넌트
|
||||
|
||||
```
|
||||
design/src/components/
|
||||
├── QuoteManagement3List.tsx # 견적 목록 (테이블, 검색, 상태탭)
|
||||
├── QuoteManagement3Write.tsx # 견적 등록/수정 (폼, 자동산출)
|
||||
├── QuoteManagement3Detail.tsx # 견적 상세 (읽기전용)
|
||||
├── QuoteDocument.tsx # 견적서 출력 (PDF, 이메일 등)
|
||||
├── QuoteCalculationReport.tsx # 견적산출내역서
|
||||
├── FormulaManagement2.tsx # 견적수식관리 (핵심)
|
||||
├── LOTNumberManagement.tsx # 번호기준관리
|
||||
├── LOTRuleForm.tsx # 번호규칙 폼
|
||||
├── AutoCalculationPage.tsx # 자동 산출 페이지
|
||||
├── AutoCalculationWithTabs.tsx # 탭 기반 자동 산출
|
||||
├── AutoCalculationSimulator.tsx # 자동 산출 시뮬레이터
|
||||
└── BomCalculationResults.tsx # BOM 계산 결과
|
||||
```
|
||||
|
||||
### 5.2 데이터 타입 정의
|
||||
|
||||
```typescript
|
||||
// 견적 데이터 인터페이스 (QuoteManagement3Write.tsx)
|
||||
interface QuoteData {
|
||||
id: string;
|
||||
registrationDate: string;
|
||||
quoteNumber: string;
|
||||
type: string;
|
||||
productCode: string;
|
||||
quantity: number;
|
||||
amount: number;
|
||||
client: string;
|
||||
manager: string;
|
||||
contact: string;
|
||||
remarks: string;
|
||||
|
||||
// 수정 이력 관리
|
||||
currentRevision?: number;
|
||||
isFinal?: boolean;
|
||||
revisions?: QuoteRevision[];
|
||||
status?: 'draft' | 'sent' | 'approved' | 'rejected' | 'converted' | 'finalized';
|
||||
|
||||
// 자동 산출 필드
|
||||
openSizeWidth: string;
|
||||
openSizeHeight: string;
|
||||
selectedProducts: string[];
|
||||
bomCalculations?: BOMCalculationRow[];
|
||||
|
||||
// 자동 산출 설정
|
||||
autoCalculationSettings?: {
|
||||
productId?: string;
|
||||
productCategory?: string;
|
||||
openSizeWidth?: number;
|
||||
openSizeHeight?: number;
|
||||
guideRailInstallType?: string;
|
||||
motorPower?: string;
|
||||
controller?: string;
|
||||
quantity?: number;
|
||||
};
|
||||
}
|
||||
|
||||
// 수식 인터페이스 (FormulaManagement2.tsx)
|
||||
interface Formula {
|
||||
id: string;
|
||||
product: string; // 공통 또는 특정 제품
|
||||
category: string; // 카테고리
|
||||
name: string; // 수식 이름
|
||||
variable: string; // 변수명
|
||||
formula: string; // 수식
|
||||
type: "calculation" | "range" | "mapping" | "input";
|
||||
ranges?: RangeItem[]; // 범위별 규칙
|
||||
outputType?: "variable" | "item"; // 결과 출력 타입
|
||||
items?: FormulaItem[]; // 품목 목록
|
||||
}
|
||||
|
||||
// BOM 계산 행
|
||||
interface BOMCalculationRow {
|
||||
id: string;
|
||||
itemCode: string;
|
||||
itemName: string;
|
||||
baseQuantity: number;
|
||||
calculatedQuantity: number;
|
||||
unit: string;
|
||||
unitPrice: number;
|
||||
totalPrice: number;
|
||||
formula?: string;
|
||||
formulaCategory?: string;
|
||||
}
|
||||
```
|
||||
|
||||
### 5.3 주요 유틸리티
|
||||
|
||||
```typescript
|
||||
// 수식 평가 (formulaEvaluator.ts)
|
||||
validateFormula(formula: string): boolean
|
||||
evaluateFormula(formula: string, variables: Record<string, number>): number
|
||||
extractVariables(formula: string): string[]
|
||||
|
||||
// 샘플 데이터 (sampleQuoteData_Complete.ts)
|
||||
generateCompleteSampleQuoteData(): QuoteData[]
|
||||
|
||||
// BOM 추가 (addProductBoms.ts)
|
||||
addProductBoms(products: Product[]): ProductWithBom[]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 데이터 흐름
|
||||
|
||||
### 6.1 견적 생성 흐름
|
||||
|
||||
```
|
||||
1. 기본 정보 입력
|
||||
└─> 발주처, 현장명, 담당자, 연락처, 납기일
|
||||
|
||||
2. 자동 견적 산출 설정
|
||||
└─> 제품 선택, 오픈사이즈 입력, 가이드레일/모터/제어기 선택
|
||||
|
||||
3. 수식 기반 자동 산출
|
||||
└─> FormulaManagement2의 수식 순차 실행
|
||||
└─> 제작사이즈(W1, H1), 면적(M), 중량(K) 등 계산
|
||||
|
||||
4. BOM 계산
|
||||
└─> 품목별 수량 계산 (수식 적용)
|
||||
└─> 단가 조회 및 금액 계산
|
||||
|
||||
5. 견적서 생성
|
||||
└─> 번호기준관리 규칙으로 견적번호 자동 생성
|
||||
└─> 상태: 최초작성
|
||||
|
||||
6. 수정/확정
|
||||
└─> 수정 시 리비전 증가 (최초작성 → 1차수정 → 2차수정)
|
||||
└─> 최종확정 시 수정 불가
|
||||
└─> 수주전환 시 수주 데이터 생성
|
||||
```
|
||||
|
||||
### 6.2 수식 실행 순서
|
||||
|
||||
```
|
||||
카테고리 순서대로 실행:
|
||||
1. 기본정보 (PC, W0, H0, GT, MP, CT, QTY, WS, INSP)
|
||||
2. 제작사이즈 (W1 = W0 + 140, H1 = H0 + 350)
|
||||
3. 면적 (M = W1 * H1 / 1000000)
|
||||
4. 모터용량산출 (용량 = 범위별 계산)
|
||||
5. 감기사프트
|
||||
6. 브라켓&받침용영역
|
||||
7. 가이드레일
|
||||
8. 가이드레일설치유형
|
||||
9. 셔터박스
|
||||
10. 하단마감재
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. API 연동 가이드 (향후 개발용)
|
||||
|
||||
### 7.1 필요한 API 엔드포인트
|
||||
|
||||
```
|
||||
# 견적 관리
|
||||
GET /api/v1/quotes # 견적 목록
|
||||
POST /api/v1/quotes # 견적 생성
|
||||
GET /api/v1/quotes/{id} # 견적 상세
|
||||
PUT /api/v1/quotes/{id} # 견적 수정
|
||||
DELETE /api/v1/quotes/{id} # 견적 삭제
|
||||
POST /api/v1/quotes/{id}/finalize # 최종 확정
|
||||
POST /api/v1/quotes/{id}/convert # 수주 전환
|
||||
|
||||
# 자동 산출
|
||||
POST /api/v1/quotes/calculate # 자동 산출 실행
|
||||
GET /api/v1/quotes/{id}/bom # BOM 결과 조회
|
||||
|
||||
# 수식 관리
|
||||
GET /api/v1/formulas # 수식 목록
|
||||
POST /api/v1/formulas # 수식 생성
|
||||
PUT /api/v1/formulas/{id} # 수식 수정
|
||||
DELETE /api/v1/formulas/{id} # 수식 삭제
|
||||
|
||||
# 번호 기준 관리
|
||||
GET /api/v1/lot-rules # 번호규칙 목록
|
||||
POST /api/v1/lot-rules # 번호규칙 생성
|
||||
POST /api/v1/lot-rules/{id}/generate # 번호 생성
|
||||
```
|
||||
|
||||
### 7.2 데이터베이스 스키마 (예상)
|
||||
|
||||
```sql
|
||||
-- 견적 테이블
|
||||
CREATE TABLE quotes (
|
||||
id BIGINT PRIMARY KEY,
|
||||
tenant_id BIGINT NOT NULL,
|
||||
quote_number VARCHAR(50) UNIQUE,
|
||||
status ENUM('draft', 'sent', 'approved', 'rejected', 'converted', 'finalized'),
|
||||
client_id BIGINT,
|
||||
site_id BIGINT,
|
||||
manager VARCHAR(100),
|
||||
contact VARCHAR(50),
|
||||
receipt_date DATE,
|
||||
completion_date DATE,
|
||||
total_amount DECIMAL(15,2),
|
||||
discount_rate DECIMAL(5,2),
|
||||
final_amount DECIMAL(15,2),
|
||||
current_revision INT DEFAULT 0,
|
||||
is_final BOOLEAN DEFAULT FALSE,
|
||||
remarks TEXT,
|
||||
created_by BIGINT,
|
||||
updated_by BIGINT,
|
||||
created_at TIMESTAMP,
|
||||
updated_at TIMESTAMP,
|
||||
deleted_at TIMESTAMP
|
||||
);
|
||||
|
||||
-- 견적 품목 테이블
|
||||
CREATE TABLE quote_items (
|
||||
id BIGINT PRIMARY KEY,
|
||||
quote_id BIGINT NOT NULL,
|
||||
item_code VARCHAR(50),
|
||||
item_name VARCHAR(200),
|
||||
specification VARCHAR(100),
|
||||
quantity DECIMAL(10,4),
|
||||
unit VARCHAR(20),
|
||||
unit_price DECIMAL(15,2),
|
||||
total_price DECIMAL(15,2),
|
||||
formula VARCHAR(500),
|
||||
formula_category VARCHAR(100),
|
||||
sort_order INT,
|
||||
created_at TIMESTAMP,
|
||||
updated_at TIMESTAMP
|
||||
);
|
||||
|
||||
-- 견적 자동산출 설정
|
||||
CREATE TABLE quote_calculation_settings (
|
||||
id BIGINT PRIMARY KEY,
|
||||
quote_id BIGINT NOT NULL,
|
||||
product_id BIGINT,
|
||||
product_category VARCHAR(50),
|
||||
open_size_width INT,
|
||||
open_size_height INT,
|
||||
guide_rail_type VARCHAR(50),
|
||||
motor_power VARCHAR(50),
|
||||
controller VARCHAR(50),
|
||||
quantity INT,
|
||||
edge_wing_size INT,
|
||||
inspection_fee DECIMAL(10,2),
|
||||
created_at TIMESTAMP,
|
||||
updated_at TIMESTAMP
|
||||
);
|
||||
|
||||
-- 수식 테이블
|
||||
CREATE TABLE formulas (
|
||||
id BIGINT PRIMARY KEY,
|
||||
tenant_id BIGINT NOT NULL,
|
||||
product_id BIGINT, -- NULL = 공통
|
||||
category VARCHAR(100),
|
||||
name VARCHAR(200),
|
||||
variable VARCHAR(50),
|
||||
formula TEXT,
|
||||
type ENUM('calculation', 'range', 'mapping', 'input'),
|
||||
output_type ENUM('variable', 'item'),
|
||||
description TEXT,
|
||||
sort_order INT,
|
||||
is_active BOOLEAN DEFAULT TRUE,
|
||||
created_at TIMESTAMP,
|
||||
updated_at TIMESTAMP,
|
||||
deleted_at TIMESTAMP
|
||||
);
|
||||
|
||||
-- 번호 기준 규칙
|
||||
CREATE TABLE lot_number_rules (
|
||||
id BIGINT PRIMARY KEY,
|
||||
tenant_id BIGINT NOT NULL,
|
||||
rule_name VARCHAR(100),
|
||||
apply_to JSON, -- ['quote', 'salesOrder', 'production', 'shipping', 'purchase']
|
||||
prefix VARCHAR(20),
|
||||
separator VARCHAR(5),
|
||||
use_date BOOLEAN DEFAULT TRUE,
|
||||
date_format VARCHAR(20),
|
||||
sequence_digits INT,
|
||||
is_active BOOLEAN DEFAULT TRUE,
|
||||
description TEXT,
|
||||
created_at TIMESTAMP,
|
||||
updated_at TIMESTAMP
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. 참고 자료
|
||||
|
||||
### 8.1 이미지 분석 폴더 구조
|
||||
|
||||
```
|
||||
docs/data/견적/
|
||||
├── 견적산출_Flow.pdf # 전체 플로우 다이어그램
|
||||
├── 견적관리 목록/ # 목록 화면
|
||||
│ ├── 견적관리_목록.png
|
||||
│ ├── 견적관리_목록_테이블 수정모드.png
|
||||
│ ├── 견적관리_목록_상태별 탭 처리.png
|
||||
│ ├── 일괄삭제.png
|
||||
│ └── 개별삭제.png
|
||||
├── 견적관리목록/ # 등록 화면
|
||||
│ ├── 견적등록 (3컬럼).png
|
||||
│ ├── 거래처 선택.png
|
||||
│ ├── 현장명 선택.png
|
||||
│ ├── 자동 산출 결과 리스트.png
|
||||
│ ├── 다중 견적 산출 시.png
|
||||
│ └── 필수 항목 벨리데이션 체크.png
|
||||
├── 견적상세/ # 상세 화면
|
||||
│ ├── 견적관리_상세 (3컬럼).png
|
||||
│ ├── 견적서.png
|
||||
│ └── 견적산출내역서.png
|
||||
├── 기준정보_견적수식관리/ # 수식 관리
|
||||
│ ├── 기준정보_견적수식관리_품목수식관리 섹션.png
|
||||
│ ├── 수식추가.png
|
||||
│ ├── 수식 수정.png
|
||||
│ ├── 카테고리 추가.png
|
||||
│ ├── 계산식_품목.png
|
||||
│ ├── 계산식_변수.png
|
||||
│ └── 입력값.png
|
||||
├── 단가분류관리/ # 단가 분류
|
||||
│ └── 기준정보_견적수식관리_단가계산분류관리섹션.png
|
||||
├── 단가수식관리/ # 단가 수식
|
||||
│ └── AppContent.png
|
||||
└── 번호기준관리/ # 번호 규칙
|
||||
├── 기준정보_번호기준관리_목록.png
|
||||
└── 기준정보_번호기준관리_상세.png
|
||||
```
|
||||
|
||||
### 8.2 관련 문서
|
||||
|
||||
- `design/src/QUOTE_AUTO_CALCULATION_GUIDE.md` - 자동 산출 가이드
|
||||
- `design/src/FORMULA_MANAGEMENT_GUIDE.md` - 수식 관리 가이드
|
||||
- `design/src/ERP_QUOTATION_GUIDE.md` - ERP 견적 가이드
|
||||
|
||||
---
|
||||
|
||||
## 9. 개발 체크리스트
|
||||
|
||||
### 9.1 API 개발 체크리스트
|
||||
|
||||
- [ ] 견적 CRUD API 구현
|
||||
- [x] 자동 산출 API 구현 ✅ (2026-01-02)
|
||||
- `POST /api/v1/quotes/calculate/bom` - 단건 BOM 산출
|
||||
- `POST /api/v1/quotes/calculate/bom/bulk` - 다건 BOM 산출
|
||||
- [x] BOM 계산 API 구현 ✅ (2026-01-02)
|
||||
- React camelCase ↔ API 약어 필드 매핑 지원
|
||||
- 성공/실패 요약 제공
|
||||
- [ ] 수식 관리 API 구현
|
||||
- [ ] 번호 기준 관리 API 구현
|
||||
- [ ] 견적서 PDF 생성 API 구현
|
||||
- [ ] 수주 전환 API 구현
|
||||
|
||||
### 9.2 프론트엔드 연동 체크리스트
|
||||
|
||||
- [x] API 클라이언트 설정 ✅ (2026-01-02)
|
||||
- `src/lib/api/quote.ts` - QuoteApiClient 클래스
|
||||
- [ ] DataContext API 연동
|
||||
- [ ] 견적 목록 API 연동
|
||||
- [x] 견적 등록/수정 API 연동 ✅ (2026-01-02)
|
||||
- `QuoteRegistration.tsx` - 자동산출 기능 구현
|
||||
- FormField type="custom" 렌더링 수정
|
||||
- API 요청 구조 및 응답 파싱 완료
|
||||
- [x] 자동 산출 API 연동 ✅ (2026-01-02)
|
||||
- 다건 BOM 산출 API 연동
|
||||
- 총 견적금액 표시 기능
|
||||
- [ ] 수식 관리 API 연동
|
||||
- [ ] 번호 기준 API 연동
|
||||
|
||||
### 9.3 React-API 필드 매핑 (참조)
|
||||
|
||||
| React 필드 | API 변수 | 설명 |
|
||||
|-----------|---------|------|
|
||||
| openWidth | W0 | 개구부 폭 (mm) |
|
||||
| openHeight | H0 | 개구부 높이 (mm) |
|
||||
| quantity | QTY | 수량 |
|
||||
| guideRailType | GT | 가이드레일 타입 (wall/floor) |
|
||||
| motorPower | MP | 모터 출력 (single/three) |
|
||||
| controller | CT | 제어반 (basic/smart) |
|
||||
| wingSize | WS | 마구리 날개치수 |
|
||||
| inspectionFee | INSP | 검사비 |
|
||||
|
||||
---
|
||||
|
||||
*문서 작성일: 2025-12-04*
|
||||
*최종 수정일: 2026-01-02*
|
||||
*버전: 1.1*
|
||||
|
After Width: | Height: | Size: 197 KiB |
BIN
dev/data/견적/기준정보_견적수식관리/결과 출력 방식.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
dev/data/견적/기준정보_견적수식관리/계산식_변수.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
dev/data/견적/기준정보_견적수식관리/계산식_품목-1.png
Normal file
|
After Width: | Height: | Size: 86 KiB |
BIN
dev/data/견적/기준정보_견적수식관리/계산식_품목-2.png
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
dev/data/견적/기준정보_견적수식관리/계산식_품목-3.png
Normal file
|
After Width: | Height: | Size: 85 KiB |
BIN
dev/data/견적/기준정보_견적수식관리/계산식_품목-4.png
Normal file
|
After Width: | Height: | Size: 75 KiB |
BIN
dev/data/견적/기준정보_견적수식관리/계산식_품목.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
dev/data/견적/기준정보_견적수식관리/기준정보_견적수식관리_품목수식관리 섹션.png
Normal file
|
After Width: | Height: | Size: 157 KiB |
BIN
dev/data/견적/기준정보_견적수식관리/기준정보_견적수식관리_품목수식관리 섹션_카테고리 수정.png
Normal file
|
After Width: | Height: | Size: 170 KiB |
BIN
dev/data/견적/기준정보_견적수식관리/수식 수정-1.png
Normal file
|
After Width: | Height: | Size: 221 KiB |
BIN
dev/data/견적/기준정보_견적수식관리/수식 수정-2.png
Normal file
|
After Width: | Height: | Size: 243 KiB |
BIN
dev/data/견적/기준정보_견적수식관리/수식 수정.png
Normal file
|
After Width: | Height: | Size: 190 KiB |
BIN
dev/data/견적/기준정보_견적수식관리/수식 카테고리 목록.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
dev/data/견적/기준정보_견적수식관리/수식추가.png
Normal file
|
After Width: | Height: | Size: 183 KiB |
BIN
dev/data/견적/기준정보_견적수식관리/입력값.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
dev/data/견적/기준정보_견적수식관리/카테고리 추가.png
Normal file
|
After Width: | Height: | Size: 164 KiB |
BIN
dev/data/견적/단가분류관리/MES Solution Website Structure 251131.png
Normal file
|
After Width: | Height: | Size: 145 KiB |
BIN
dev/data/견적/단가분류관리/MES Solution Website Structure 251132.png
Normal file
|
After Width: | Height: | Size: 150 KiB |
BIN
dev/data/견적/단가분류관리/MES Solution Website Structure 251133.png
Normal file
|
After Width: | Height: | Size: 125 KiB |
BIN
dev/data/견적/단가분류관리/기준정보_견적수식관리_단가계산분류관리섹션.png
Normal file
|
After Width: | Height: | Size: 127 KiB |
BIN
dev/data/견적/단가수식관리/AppContent.png
Normal file
|
After Width: | Height: | Size: 134 KiB |
BIN
dev/data/견적/단가수식관리/MES Solution Website Structure 251137.png
Normal file
|
After Width: | Height: | Size: 170 KiB |
BIN
dev/data/견적/단가수식관리/MES Solution Website Structure 251138.png
Normal file
|
After Width: | Height: | Size: 152 KiB |
BIN
dev/data/견적/단가수식관리/MES Solution Website Structure 251139.png
Normal file
|
After Width: | Height: | Size: 142 KiB |
BIN
dev/data/견적/단가수식관리/MES Solution Website Structure 251140.png
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
dev/data/견적/단가수식관리/Primitive.div.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
dev/data/견적/번호기준관리/MES Solution Website Structure 251128.png
Normal file
|
After Width: | Height: | Size: 118 KiB |
BIN
dev/data/견적/번호기준관리/기준정보_번호기준관리_목록.png
Normal file
|
After Width: | Height: | Size: 107 KiB |
BIN
dev/data/견적/번호기준관리/기준정보_번호기준관리_상세.png
Normal file
|
After Width: | Height: | Size: 118 KiB |