feat(mes): 판매관리 기능 분석 문서 추가
- 거래처관리: 목록/상세/등록 UI 분석, API 스펙 정의 - 견적관리: 견적 프로세스 분석, 자동계산 규칙 정의 - 현장관리: 현장 상태 흐름 분석, 진행률 계산 규칙 - 단가관리: 품목유형별 단가 구조 분석, 마진율 계산 포함된 스크린샷: 15개 (거래처 3, 견적 4, 현장 3, 단가 1)
This commit is contained in:
260
projects/mes/quote-analysis/README.md
Normal file
260
projects/mes/quote-analysis/README.md
Normal file
@@ -0,0 +1,260 @@
|
||||
# 견적관리 분석 결과
|
||||
|
||||
> 분석 일시: 2024-12-18
|
||||
> 분석 대상: design/mes기획서_리액트 (디자인팀 기획 사이트)
|
||||
|
||||
## 분석 목적
|
||||
|
||||
디자인팀에서 제작한 기획 사이트의 견적관리 기능을 분석하여 API 개발에 필요한 스펙을 추출합니다.
|
||||
|
||||
---
|
||||
|
||||
## UI 스크린샷
|
||||
|
||||
### 1. 견적 목록 페이지
|
||||

|
||||
|
||||
**주요 요소:**
|
||||
- 상단 요약 카드 (4개):
|
||||
- 이번 달 견적 금액: 447M
|
||||
- 진행중 견적 금액: 96.9M
|
||||
- 이번 주 신규 견적: 15건
|
||||
- 이번 달 수주 전환율: 41.7%
|
||||
- 탭 필터: 전체, 최초작성, 수정중, 최종확정, 수주전환
|
||||
- 검색: 견적번호, 거래처, 현장명
|
||||
- 테이블 컬럼: 체크박스, 번호, 견적번호, 접수일, 상태, 제품명, 수량, 금액, 발주처, 현장명, 담당자, 비고
|
||||
|
||||
---
|
||||
|
||||
### 2. 견적 상세 페이지
|
||||

|
||||
|
||||
**주요 섹션:**
|
||||
- **기본 정보**:
|
||||
- 견적번호, 등록일, 작성자
|
||||
- 발주처, 현장명
|
||||
- 담당자, 연락처
|
||||
- 납기일, 상태
|
||||
- 비고
|
||||
- **자동 견적 산출 정보**:
|
||||
- 층수, 부호
|
||||
- 제품카테고리, 제품명
|
||||
- 가로(mm), 세로(mm)
|
||||
- 설치유형, 모터전원, 제어기
|
||||
- 수량, 금액(자동계산)
|
||||
|
||||
**헤더 버튼:**
|
||||
- 견적서
|
||||
- 산출내역서
|
||||
- 발주서
|
||||
- 목록
|
||||
- 수정
|
||||
- 수주전환
|
||||
|
||||
---
|
||||
|
||||
### 3. 견적서 문서 모달
|
||||

|
||||
|
||||
**문서 구성:**
|
||||
- 문서 제목: QUOTATION
|
||||
- 수신처(Buyer) 정보: 회사명, 주소, 전화, 팩스, 담당자
|
||||
- 공급자(Supplier) 정보: 회사명, 사업자번호, 주소, 전화, 팩스, 대표자
|
||||
- 품목 테이블: 번호, 품목명, 규격, 단위, 수량, 단가, 금액, 비고
|
||||
- 합계 정보: 합계금액, 부가세, 총액
|
||||
- 특기사항
|
||||
|
||||
**출력 옵션:**
|
||||
- PDF 다운로드
|
||||
- 이메일 발송
|
||||
- FAX 발송
|
||||
- 카카오톡
|
||||
- 프린트
|
||||
|
||||
---
|
||||
|
||||
### 4. 견적 등록 폼
|
||||

|
||||
|
||||
**입력 섹션:**
|
||||
|
||||
**기본 정보:**
|
||||
| 필드명 | 타입 | 필수 | 비고 |
|
||||
|--------|------|------|------|
|
||||
| 등록일 | 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 |
|
||||
Reference in New Issue
Block a user