# 견적관리 분석 결과 > 분석 일시: 2024-12-18 > 분석 대상: design/mes기획서_리액트 (디자인팀 기획 사이트) ## 분석 목적 디자인팀에서 제작한 기획 사이트의 견적관리 기능을 분석하여 API 개발에 필요한 스펙을 추출합니다. --- ## UI 스크린샷 ### 1. 견적 목록 페이지 ![견적 목록](screenshots/01-quote-list.png) **주요 요소:** - 상단 요약 카드 (4개): - 이번 달 견적 금액: 447M - 진행중 견적 금액: 96.9M - 이번 주 신규 견적: 15건 - 이번 달 수주 전환율: 41.7% - 탭 필터: 전체, 최초작성, 수정중, 최종확정, 수주전환 - 검색: 견적번호, 거래처, 현장명 - 테이블 컬럼: 체크박스, 번호, 견적번호, 접수일, 상태, 제품명, 수량, 금액, 발주처, 현장명, 담당자, 비고 --- ### 2. 견적 상세 페이지 ![견적 상세](screenshots/02-quote-detail.png) **주요 섹션:** - **기본 정보**: - 견적번호, 등록일, 작성자 - 발주처, 현장명 - 담당자, 연락처 - 납기일, 상태 - 비고 - **자동 견적 산출 정보**: - 층수, 부호 - 제품카테고리, 제품명 - 가로(mm), 세로(mm) - 설치유형, 모터전원, 제어기 - 수량, 금액(자동계산) **헤더 버튼:** - 견적서 - 산출내역서 - 발주서 - 목록 - 수정 - 수주전환 --- ### 3. 견적서 문서 모달 ![견적서 모달](screenshots/03-quote-document-modal.png) **문서 구성:** - 문서 제목: QUOTATION - 수신처(Buyer) 정보: 회사명, 주소, 전화, 팩스, 담당자 - 공급자(Supplier) 정보: 회사명, 사업자번호, 주소, 전화, 팩스, 대표자 - 품목 테이블: 번호, 품목명, 규격, 단위, 수량, 단가, 금액, 비고 - 합계 정보: 합계금액, 부가세, 총액 - 특기사항 **출력 옵션:** - PDF 다운로드 - 이메일 발송 - FAX 발송 - 카카오톡 - 프린트 --- ### 4. 견적 등록 폼 ![견적 등록](screenshots/04-quote-create-form.png) **입력 섹션:** **기본 정보:** | 필드명 | 타입 | 필수 | 비고 | |--------|------|------|------| | 등록일 | date | | 기본: 오늘 | | 작성자 | text | | 로그인 사용자 | | 발주처 | select/search | ✅ | 거래처 선택 | | 현장명 | text | ✅ | | | 담당자 | text | | | | 연락처 | text | | | | 납기일 | date | | | | 비고 | textarea | | | **자동 견적 산출:** | 필드명 | 타입 | 필수 | 비고 | |--------|------|------|------| | 층수 | text | | B1, 1F 등 | | 부호 | text | | 도면 부호 | | 제품카테고리 | select | | 스크린, 슬랫 등 | | 제품명 | select | | 카테고리에 따라 | | 가로(mm) | number | ✅ | 개구폭 | | 세로(mm) | number | ✅ | 개구높이 | | 설치유형 | select | | 백면형, 양면형, 편면형 | | 모터전원 | select | | 220V, 380V | | 제어기 | select | | 유선, 무선 | | 수량 | number | | 기본: 1 | --- ## 데이터 스키마 ### Quote (견적) ``` quotes ├── id (PK) ├── tenant_id (FK) ├── quote_no (UNIQUE) - 자동 채번 ├── quote_date - 견적일 ├── customer_id (FK) - 거래처 ├── customer_name - 거래처명 (스냅샷) ├── site_name - 현장명 ├── manager - 담당자 ├── contact - 연락처 ├── due_date - 납기일 ├── status - 상태 ├── total_amount - 총액 ├── vat_amount - 부가세 ├── grand_total - 합계(VAT포함) ├── note - 비고 ├── special_note - 특기사항 ├── created_by ├── created_at ├── updated_at └── deleted_at ``` ### QuoteItem (견적 품목) ``` quote_items ├── id (PK) ├── quote_id (FK) ├── seq - 순번 ├── floor - 층 ├── location - 부호/위치 ├── product_category - 제품카테고리 ├── product_code - 품목코드 ├── product_name - 품목명 ├── open_width - 개구폭(mm) ├── open_height - 개구높이(mm) ├── prod_width - 제작폭(mm) - 자동계산 ├── prod_height - 제작높이(mm) - 자동계산 ├── install_type - 설치유형 ├── motor_voltage - 모터전원 ├── controller_type - 제어기 타입 ├── qty - 수량 ├── unit_price - 단가 ├── amount - 금액 ├── spec - 규격 (JSON) ├── created_at └── updated_at ``` --- ## 상태 흐름 ``` 최초작성 → 수정중 → 최종확정 → 수주전환 ↑__________| ``` | 상태 | 설명 | 다음 가능 상태 | |------|------|----------------| | 최초작성 | 신규 등록 | 수정중, 최종확정 | | 수정중 | 수정 진행 중 | 최초작성, 최종확정 | | 최종확정 | 확정 완료 | 수주전환 | | 수주전환 | 수주로 전환됨 | - (최종) | --- ## 자동 계산 규칙 ```javascript // 제작 사이즈 자동 계산 prod_width = open_width + 140 prod_height = MAX(open_height + 400, 2950) // 샤프트 자동 선정 shaft = open_width > 6000 ? 5인치 : 4인치 // 모터용량 자동 선정 capacity = open_width > 6000 ? 300kg : 160kg // 금액 계산 amount = qty * unit_price total_amount = SUM(items.amount) vat_amount = total_amount * 0.1 grand_total = total_amount + vat_amount ``` --- ## API 스펙 ### 견적 CRUD ``` GET /api/quotes - 견적 목록 GET /api/quotes/{id} - 견적 상세 POST /api/quotes - 견적 등록 PUT /api/quotes/{id} - 견적 수정 DELETE /api/quotes/{id} - 견적 삭제 DELETE /api/quotes - 견적 일괄 삭제 ``` ### 견적 상태 변경 ``` POST /api/quotes/{id}/confirm - 최종확정 POST /api/quotes/{id}/revise - 수정중으로 변경 POST /api/quotes/{id}/to-order - 수주전환 ``` ### 문서 출력 ``` GET /api/quotes/{id}/documents/quote - 견적서 GET /api/quotes/{id}/documents/calculation - 산출내역서 GET /api/quotes/{id}/documents/order-form - 발주서 ``` ### 목록 조회 Query Parameters | 파라미터 | 타입 | 설명 | |----------|------|------| | status | string | 상태 필터 (최초작성, 수정중, 최종확정, 수주전환) | | search | string | 검색어 (견적번호, 거래처, 현장명) | | from_date | date | 시작일 | | to_date | date | 종료일 | | page | number | 페이지 번호 | | per_page | number | 페이지당 개수 | --- ## 채번 규칙 ``` 견적번호: QT-YYMMDD-## 예시: QT-241218-01, QT-241218-02 ``` --- ## 통계 계산 | 항목 | 계산식 | |------|--------| | 이번 달 견적 금액 | SUM(grand_total) WHERE quote_date in current_month | | 진행중 견적 금액 | SUM(grand_total) WHERE status IN ('최초작성', '수정중') | | 이번 주 신규 견적 | COUNT(*) WHERE created_at in current_week | | 이번 달 수주 전환율 | (수주전환 건수 / 전체 건수) * 100 |