# 수주 데이터 스키마 분석 > 분석 일시: 2024-12-18 > 소스: design/mes기획서_리액트/src/configs/orderMasterConfig.js ## 수주 유형 (entityTypes) | ID | 코드 | 이름 | 설명 | |----|------|------|------| | 1 | NORMAL | 일반수주 | 견적 기반 일반 수주 | | 2 | ADDITIONAL | 추가수주 | 기존 수주 추가분 | | 3 | DIRECT | 직접수주 | 견적 없이 직접 입력 | ## 제품 카테고리 (생산공정 분류) | ID | 코드 | 이름 | |----|------|------| | 1 | SCREEN | 스크린 | | 2 | FOLD | 절곡 | | 3 | SLAT | 슬랫 | | 4 | ASSY | 조립 | ## 섹션 구조 (masterSections) | ID | 키 | 이름 | 타입 | 설명 | |----|-----|------|------|------| | 1 | basicInfo | 기본정보 | general | 수주 기본 정보 | | 2 | deliveryInfo | 납품정보 | general | 납품 관련 정보 | | 3 | itemInfo | 품목정보 | **multiRow** | 수주 품목 목록 | | 4 | productionSpec | 제작사양 | **multiRow** | 제작 상세 사양 | | 5 | amountInfo | 금액정보 | general | 금액 합계 | | 6 | etcInfo | 기타정보 | general | 기타 정보 | --- ## 필드 상세 (masterFields) ### 기본정보 (basicInfo) | ID | 필드키 | 필드명 | 입력타입 | 필수 | 자동생성 | 설명 | |----|--------|--------|----------|------|----------|------| | 1 | orderNo | 수주번호 | text | ✅ | ✅ | 수주 식별 번호 | | 2 | orderDate | 수주일 | date | ✅ | - | 수주 등록일 | | 3 | quoteNo | 견적번호 | text | - | - | 연결된 견적번호 | | 4 | customerName | 거래처명 | text | ✅ | - | 거래처명 | | 5 | customerId | 거래처ID | text | - | - | 거래처 식별자 | | 6 | siteName | 현장명 | text | ✅ | - | 설치 현장명 | | 7 | manager | 담당자 | text | - | - | 거래처 담당자 | | 8 | contact | 연락처 | text | - | - | 담당자 연락처 | ### 납품정보 (deliveryInfo) | ID | 필드키 | 필드명 | 입력타입 | 필수 | 옵션 | |----|--------|--------|----------|------|------| | 10 | dueDate | 납기일 | date | ✅ | - | | 11 | deliveryMethod | 배송방법 | select | - | 직접배차, 상차, 택배, 화물, 직접배송 | | 12 | deliveryAddress | 납품주소 | text | - | - | | 13 | receiverName | 수령자명 | text | - | - | | 14 | receiverPhone | 수령자연락처 | text | - | - | ### 품목정보 (itemInfo) - 다중행 | ID | 필드키 | 필드명 | 입력타입 | 필수 | 옵션/검증 | |----|--------|--------|----------|------|----------| | 20 | productCode | 품목코드 | text | - | - | | 21 | productName | 품목명 | select | ✅ | 국민방화스크린셔터, 방화셔터, 방연셔터 | | 22 | category | 카테고리 | select | - | 스크린, 절곡, 슬랫, 조립 | | 23 | floor | 층 | text | - | - | | 24 | location | 위치 | text | - | - | | 25 | openWidth | 개구폭(mm) | number | ✅ | min:500, max:15000 | | 26 | openHeight | 개구높이(mm) | number | ✅ | min:500, max:10000 | | 27 | qty | 수량 | number | ✅ | min:1 | | 28 | unitPrice | 단가 | number | - | - | | 29 | amount | 금액 | number | - | **자동계산** | ### 제작사양 (productionSpec) - 다중행 | ID | 필드키 | 필드명 | 입력타입 | 자동계산 | 옵션 | |----|--------|--------|----------|----------|------| | 30 | prodWidth | 제작폭(mm) | number | ✅ | 개구폭+140 | | 31 | prodHeight | 제작높이(mm) | number | ✅ | MAX(개구높이+400, 2950) | | 32 | guideRailType | 가이드레일형태 | select | - | 백면형, 양면형, 편면형 | | 33 | guideRailSpec | 가이드레일규격 | select | - | 120-70, 150-80, 180-90 | | 34 | finish | 마감 | select | - | SUS마감, 분체도장, 용융아연 | | 35 | shaft | 샤프트 | number | ✅ | 폭>6000:5인치, 그외:4인치 | | 36 | capacity | 전동용량 | number | ✅ | 폭>6000:300kg, 그외:160kg | ### 금액정보 (amountInfo) | ID | 필드키 | 필드명 | 입력타입 | 자동계산 | |----|--------|--------|----------|----------| | 40 | totalAmount | 총금액 | number | ✅ (품목 금액 합계) | ### 기타정보 (etcInfo) | ID | 필드키 | 필드명 | 입력타입 | |----|--------|--------|----------| | 50 | note | 비고 | textarea | --- ## 자동계산 규칙 (calculations) | 필드 | 수식 | 설명 | |------|------|------| | prodWidth | `openWidth + 140` | 제작폭 = 개구폭 + 140 | | prodHeight | `MAX(openHeight + 400, 2950)` | 제작높이 = MAX(개구높이+400, 2950) | | shaft | `openWidth > 6000 ? 5 : 4` | 샤프트 인치 | | capacity | `openWidth > 6000 ? 300 : 160` | 전동용량 kg | | amount | `qty * unitPrice` | 금액 = 수량 × 단가 | | totalAmount | `SUM(items.amount)` | 총금액 = 품목 금액 합계 | --- ## 페이지 템플릿 ### 일반 수주 (order_normal) - 경로: `/판매관리/수주_등록` - 유형: NORMAL - 섹션: 기본정보 → 납품정보 → 품목정보 → 제작사양 → 금액정보 → 기타정보 ### 추가 수주 (order_additional) - 경로: `/판매관리/수주_추가` - 유형: ADDITIONAL - 섹션: 기본정보(간소화) → 추가 품목 → 기타정보 --- ## API 엔드포인트 추정 ### 수주 CRUD ``` GET /api/orders - 수주 목록 GET /api/orders/{id} - 수주 상세 POST /api/orders - 수주 등록 PUT /api/orders/{id} - 수주 수정 DELETE /api/orders/{id} - 수주 삭제 ``` ### 관련 API ``` GET /api/orders/{id}/items - 수주 품목 목록 POST /api/orders/{id}/items - 품목 추가 PUT /api/orders/{id}/items/{itemId} - 품목 수정 DELETE /api/orders/{id}/items/{itemId} - 품목 삭제 POST /api/orders/from-quote/{quoteId} - 견적에서 수주 전환 ``` --- ## 다음 분석 단계 1. QuoteDetailNew.jsx, QuoteDocumentDialogs.jsx - UI 구조 및 액션 2. App.jsx 수주 섹션 - 비즈니스 로직, 상태 관리