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

|
||||
|
||||
**주요 요소:**
|
||||
- 상단 요약 카드: 전체 거래처, 활성 거래처, 신규(이번달), 미수금 보유
|
||||
- 탭 필터: 전체, 1등급, 2등급, 3등급, 4등급, 미분류
|
||||
- 검색: 거래처코드, 거래처명, 대표자, 연락처
|
||||
- 테이블 컬럼: 체크박스, 번호, 코드, 거래처명, 사업자등록번호, 대표자, 연락처, 신용등급, 결제조건, 등록일, 상태
|
||||
|
||||
---
|
||||
|
||||
### 2. 거래처 상세 페이지
|
||||

|
||||
|
||||
**주요 섹션:**
|
||||
- **기본 정보**: 거래처코드, 거래처명, 대표자, 사업자등록번호, 업태, 종목, 신용등급, 결제조건, 상태
|
||||
- **연락처 정보**: 전화번호, 팩스, 이메일, 주소
|
||||
- **거래 현황**: 총 거래금액, 미수금, 최근 거래일
|
||||
- **담당자 정보**: 담당자명, 직급, 연락처, 이메일
|
||||
- **비고**: 특이사항
|
||||
|
||||
**헤더 버튼:**
|
||||
- 목록
|
||||
- 수정
|
||||
- 삭제
|
||||
|
||||
---
|
||||
|
||||
### 3. 거래처 등록 폼
|
||||

|
||||
|
||||
**입력 필드:**
|
||||
|
||||
| 섹션 | 필드명 | 타입 | 필수 |
|
||||
|------|--------|------|------|
|
||||
| 기본 정보 | 거래처명 | text | ✅ |
|
||||
| | 대표자 | text | ✅ |
|
||||
| | 사업자등록번호 | text | ✅ |
|
||||
| | 업태 | text | |
|
||||
| | 종목 | text | |
|
||||
| | 신용등급 | select | |
|
||||
| | 결제조건 | select | |
|
||||
| 연락처 정보 | 전화번호 | text | |
|
||||
| | 팩스 | text | |
|
||||
| | 이메일 | email | |
|
||||
| | 우편번호 | text | |
|
||||
| | 주소 | text | |
|
||||
| | 상세주소 | text | |
|
||||
| 담당자 정보 | 담당자명 | text | |
|
||||
| | 직급 | text | |
|
||||
| | 연락처 | text | |
|
||||
| | 이메일 | email | |
|
||||
| 기타 | 비고 | textarea | |
|
||||
|
||||
---
|
||||
|
||||
## 데이터 스키마
|
||||
|
||||
### Customer (거래처)
|
||||
```
|
||||
customers
|
||||
├── id (PK)
|
||||
├── tenant_id (FK)
|
||||
├── customer_code (UNIQUE) - 자동 채번
|
||||
├── name - 거래처명
|
||||
├── representative - 대표자
|
||||
├── business_number - 사업자등록번호
|
||||
├── business_type - 업태
|
||||
├── business_item - 종목
|
||||
├── credit_grade - 신용등급 (1~4등급)
|
||||
├── payment_terms - 결제조건
|
||||
├── phone
|
||||
├── fax
|
||||
├── email
|
||||
├── postal_code
|
||||
├── address
|
||||
├── address_detail
|
||||
├── contact_name - 담당자명
|
||||
├── contact_position - 담당자 직급
|
||||
├── contact_phone - 담당자 연락처
|
||||
├── contact_email - 담당자 이메일
|
||||
├── total_amount - 총 거래금액 (계산)
|
||||
├── outstanding_amount - 미수금 (계산)
|
||||
├── last_transaction_date - 최근 거래일
|
||||
├── status - 상태 (활성/비활성)
|
||||
├── note
|
||||
├── created_at
|
||||
├── updated_at
|
||||
└── deleted_at
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## API 스펙
|
||||
|
||||
### 거래처 CRUD
|
||||
|
||||
```
|
||||
GET /api/customers - 거래처 목록
|
||||
GET /api/customers/{id} - 거래처 상세
|
||||
POST /api/customers - 거래처 등록
|
||||
PUT /api/customers/{id} - 거래처 수정
|
||||
DELETE /api/customers/{id} - 거래처 삭제
|
||||
DELETE /api/customers - 거래처 일괄 삭제
|
||||
```
|
||||
|
||||
### 목록 조회 Query Parameters
|
||||
|
||||
| 파라미터 | 타입 | 설명 |
|
||||
|----------|------|------|
|
||||
| credit_grade | string | 신용등급 필터 |
|
||||
| status | string | 상태 필터 |
|
||||
| search | string | 검색어 |
|
||||
| page | number | 페이지 번호 |
|
||||
| per_page | number | 페이지당 개수 |
|
||||
|
||||
---
|
||||
|
||||
## 신용등급
|
||||
|
||||
| 등급 | 설명 | 결제조건 |
|
||||
|------|------|----------|
|
||||
| 1등급 | 최우수 | 후불/여신 가능 |
|
||||
| 2등급 | 우수 | 일부 여신 가능 |
|
||||
| 3등급 | 보통 | 선불 또는 COD |
|
||||
| 4등급 | 주의 | 선불 필수 |
|
||||
|
||||
---
|
||||
|
||||
## 결제조건 옵션
|
||||
|
||||
- 선불
|
||||
- 착불
|
||||
- 후불 30일
|
||||
- 후불 60일
|
||||
- 월말정산
|
||||
- 기타
|
||||
|
||||
---
|
||||
|
||||
## 채번 규칙
|
||||
|
||||
```
|
||||
거래처코드: C-{순번6자리}
|
||||
예시: C-000001, C-000002
|
||||
```
|
||||
BIN
projects/mes/customer-analysis/screenshots/01-customer-list.png
Normal file
|
After Width: | Height: | Size: 304 KiB |
|
After Width: | Height: | Size: 277 KiB |
|
After Width: | Height: | Size: 235 KiB |
268
projects/mes/price-analysis/README.md
Normal file
@@ -0,0 +1,268 @@
|
||||
# 단가관리 분석 결과
|
||||
|
||||
> 분석 일시: 2024-12-18
|
||||
> 분석 대상: design/mes기획서_리액트 (디자인팀 기획 사이트)
|
||||
|
||||
## 분석 목적
|
||||
|
||||
디자인팀에서 제작한 기획 사이트의 단가관리 기능을 분석하여 API 개발에 필요한 스펙을 추출합니다.
|
||||
|
||||
---
|
||||
|
||||
## UI 스크린샷
|
||||
|
||||
### 1. 단가 목록 페이지
|
||||

|
||||
|
||||
**주요 요소:**
|
||||
|
||||
**상단 요약 카드 (4개):**
|
||||
| 항목 | 값 | 설명 |
|
||||
|------|-----|------|
|
||||
| 전체 품목 | 70 | 등록된 총 품목 수 |
|
||||
| 활성 단가 | 70 | 활성 상태인 단가 수 |
|
||||
| 거래처그룹 | 4 | 거래처 그룹 수 |
|
||||
| 품목유형 | 5 | 품목 유형 수 |
|
||||
|
||||
**탭 필터 (품목유형별):**
|
||||
| 탭 | 건수 |
|
||||
|-----|------|
|
||||
| 전체 | 70 |
|
||||
| 제품 | 0 |
|
||||
| 부품 | 36 |
|
||||
| 부자재 | 0 |
|
||||
| 원자재 | 15 |
|
||||
| 소모품 | 0 |
|
||||
|
||||
**테이블 컬럼:**
|
||||
| 컬럼 | 설명 |
|
||||
|------|------|
|
||||
| 번호 | 순번 |
|
||||
| 품목유형 | 서비스, 원자재, 부품, 반제품 등 |
|
||||
| 품목코드 | 품목 식별 코드 |
|
||||
| 품목명 | 품목 이름 |
|
||||
| 규격 | 규격 정보 |
|
||||
| 단위 | EA, SET, KG, M 등 |
|
||||
| 매입단가 | 구매 단가 |
|
||||
| 가공비 | 가공 비용 |
|
||||
| LOSS(%) | 손실률 |
|
||||
| 판매단가 | 판매 가격 |
|
||||
| 마진율 | (판매단가-매입단가)/판매단가 * 100 |
|
||||
| 적용일 | 단가 적용 시작일 |
|
||||
| 상태 | 활성/비활성 |
|
||||
|
||||
---
|
||||
|
||||
## 데이터 분석 (캡처된 품목 기준)
|
||||
|
||||
### 품목유형별 분포
|
||||
|
||||
| 품목유형 | 건수 | 주요 품목 |
|
||||
|----------|------|-----------|
|
||||
| 서비스 | 1 | 검사비 |
|
||||
| 원자재 | 15 | 하부BASE, 상부덮개, 마구리, 평철, 엘바, 하장바, 각파이프, 조인트바, 환봉 |
|
||||
| 부품 | 36 | 받침용앵글, 브라켓, 감기샤프트, 연동제어기, 전동개폐기 |
|
||||
| 반제품 | 18 | 연기차단재, 하단마감재, 케이스, 가이드레일 |
|
||||
|
||||
### 대표 품목 예시
|
||||
|
||||
**원자재:**
|
||||
| 품목코드 | 품목명 | 규격 | 단위 | 매입단가 | 판매단가 | 마진율 |
|
||||
|----------|--------|------|------|----------|----------|--------|
|
||||
| 하부BASE-코너형 | 하부BASE(코너형) | - | SET | 30,000 | 45,000 | 50% |
|
||||
| 각파이프-30×30L6000 | 각파이프 30×30 L:6000 | 30×30 | EA | 15,000 | 22,500 | 50% |
|
||||
|
||||
**부품:**
|
||||
| 품목코드 | 품목명 | 규격 | 단위 | 매입단가 | 판매단가 | 마진율 |
|
||||
|----------|--------|------|------|----------|----------|--------|
|
||||
| 전동개폐기-220V300KG유선 | 전동개폐기 300KG 220V 유선 | 300 | EA | 350,000 | 480,000 | 37% |
|
||||
| 감기샤프트-76.3×2.8TL3000 | 감기샤프트 76.3×2.8T L:3000 | 76 | EA | 55,000 | 80,000 | 45% |
|
||||
|
||||
**반제품:**
|
||||
| 품목코드 | 품목명 | 규격 | 단위 | 매입단가 | 판매단가 | 마진율 |
|
||||
|----------|--------|------|------|----------|----------|--------|
|
||||
| RC30 | 가이드레일(벽면형) C형 3000 | 3000 | EA | 18,000 | 27,000 | 50% |
|
||||
| CB30 | 케이스(후면코너부) 3000 | 3000 | EA | 20,000 | 30,000 | 50% |
|
||||
|
||||
---
|
||||
|
||||
## 데이터 스키마
|
||||
|
||||
### Price (단가)
|
||||
```
|
||||
prices
|
||||
├── id (PK)
|
||||
├── tenant_id (FK)
|
||||
├── item_type - 품목유형 (제품, 부품, 부자재, 원자재, 소모품, 서비스, 반제품)
|
||||
├── item_code (UNIQUE) - 품목코드
|
||||
├── item_name - 품목명
|
||||
├── specification - 규격
|
||||
├── unit - 단위 (EA, SET, KG, M, ㎡ 등)
|
||||
├── purchase_price - 매입단가
|
||||
├── processing_cost - 가공비
|
||||
├── loss_rate - 손실률 (%)
|
||||
├── selling_price - 판매단가
|
||||
├── margin_rate - 마진율 (%) - 자동계산
|
||||
├── effective_date - 적용일
|
||||
├── status - 상태 (활성/비활성)
|
||||
├── customer_group_id - 거래처그룹 (특별단가용)
|
||||
├── note - 비고
|
||||
├── created_at
|
||||
├── updated_at
|
||||
└── deleted_at
|
||||
```
|
||||
|
||||
### PriceHistory (단가 변경이력)
|
||||
```
|
||||
price_histories
|
||||
├── id (PK)
|
||||
├── price_id (FK)
|
||||
├── previous_purchase_price
|
||||
├── previous_selling_price
|
||||
├── new_purchase_price
|
||||
├── new_selling_price
|
||||
├── changed_by
|
||||
├── changed_at
|
||||
└── reason - 변경사유
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 품목유형 (item_type)
|
||||
|
||||
| 유형 | 설명 | 예시 |
|
||||
|------|------|------|
|
||||
| 제품 | 완성품 | 방화스크린셔터, 방화슬랫셔터 |
|
||||
| 부품 | 조립 부품 | 전동개폐기, 감기샤프트, 브라켓 |
|
||||
| 반제품 | 중간 가공품 | 가이드레일, 케이스, 하단마감재 |
|
||||
| 원자재 | 원재료 | 철판, 파이프, 볼트 |
|
||||
| 부자재 | 보조재료 | 나사, 패킹, 접착제 |
|
||||
| 소모품 | 소모성 재료 | 장갑, 테이프, 라벨 |
|
||||
| 서비스 | 용역 | 검사비, 운송비, 설치비 |
|
||||
|
||||
---
|
||||
|
||||
## 단위 코드
|
||||
|
||||
| 단위 | 설명 | 사용 품목 |
|
||||
|------|------|-----------|
|
||||
| EA | 개 | 개별 품목 |
|
||||
| SET | 세트 | 세트 품목 |
|
||||
| KG | 킬로그램 | 중량 기준 |
|
||||
| M | 미터 | 길이 기준 |
|
||||
| ㎡ | 제곱미터 | 면적 기준 |
|
||||
| BOX | 박스 | 박스 단위 |
|
||||
|
||||
---
|
||||
|
||||
## 자동 계산
|
||||
|
||||
### 마진율 계산
|
||||
```javascript
|
||||
margin_rate = ((selling_price - purchase_price) / selling_price) * 100
|
||||
|
||||
// 가공비와 손실률 포함 시
|
||||
total_cost = purchase_price + processing_cost
|
||||
adjusted_cost = total_cost * (1 + loss_rate / 100)
|
||||
margin_rate = ((selling_price - adjusted_cost) / selling_price) * 100
|
||||
```
|
||||
|
||||
### 손실률 적용
|
||||
```javascript
|
||||
// 실제 필요량 계산
|
||||
required_qty = order_qty * (1 + loss_rate / 100)
|
||||
|
||||
// 예: 100개 주문, 손실률 5%
|
||||
// required_qty = 100 * 1.05 = 105개
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## API 스펙
|
||||
|
||||
### 단가 CRUD
|
||||
|
||||
```
|
||||
GET /api/prices - 단가 목록
|
||||
GET /api/prices/{id} - 단가 상세
|
||||
POST /api/prices - 단가 등록
|
||||
PUT /api/prices/{id} - 단가 수정
|
||||
DELETE /api/prices/{id} - 단가 삭제
|
||||
DELETE /api/prices - 단가 일괄 삭제
|
||||
```
|
||||
|
||||
### 단가 조회 (견적/수주용)
|
||||
|
||||
```
|
||||
GET /api/prices/lookup - 품목코드로 단가 조회
|
||||
```
|
||||
|
||||
**Query Parameters:**
|
||||
| 파라미터 | 타입 | 설명 |
|
||||
|----------|------|------|
|
||||
| item_code | string | 품목코드 |
|
||||
| customer_group_id | number | 거래처그룹 (특별단가 적용) |
|
||||
|
||||
### 단가 이력
|
||||
|
||||
```
|
||||
GET /api/prices/{id}/history - 단가 변경 이력
|
||||
```
|
||||
|
||||
### 목록 조회 Query Parameters
|
||||
|
||||
| 파라미터 | 타입 | 설명 |
|
||||
|----------|------|------|
|
||||
| item_type | string | 품목유형 필터 |
|
||||
| status | string | 상태 필터 |
|
||||
| search | string | 검색어 (품목코드, 품목명, 규격) |
|
||||
| page | number | 페이지 번호 |
|
||||
| per_page | number | 페이지당 개수 |
|
||||
|
||||
---
|
||||
|
||||
## 거래처그룹 단가
|
||||
|
||||
```
|
||||
customer_group_prices
|
||||
├── id (PK)
|
||||
├── price_id (FK)
|
||||
├── customer_group_id (FK)
|
||||
├── special_price - 특별단가
|
||||
├── discount_rate - 할인율 (%)
|
||||
├── effective_from - 적용 시작일
|
||||
├── effective_to - 적용 종료일
|
||||
├── status
|
||||
└── created_at
|
||||
```
|
||||
|
||||
**특별단가 적용 우선순위:**
|
||||
1. 거래처별 특별단가
|
||||
2. 거래처그룹 특별단가
|
||||
3. 기본 판매단가
|
||||
|
||||
---
|
||||
|
||||
## 품목코드 규칙
|
||||
|
||||
```
|
||||
{품목명약어}-{규격}
|
||||
|
||||
예시:
|
||||
- 전동개폐기-220V300KG유선
|
||||
- 감기샤프트-76.3×2.8TL3000
|
||||
- RC30 (가이드레일 C형 3000)
|
||||
- CB30 (케이스 후면코너부 3000)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 통계 정보
|
||||
|
||||
| 항목 | 계산식 |
|
||||
|------|--------|
|
||||
| 전체 품목 | COUNT(*) |
|
||||
| 활성 단가 | COUNT(*) WHERE status = '활성' |
|
||||
| 거래처그룹 | COUNT(DISTINCT customer_group_id) |
|
||||
| 품목유형 | COUNT(DISTINCT item_type) |
|
||||
| 평균 마진율 | AVG(margin_rate) |
|
||||
BIN
projects/mes/price-analysis/screenshots/01-price-list.png
Normal file
|
After Width: | Height: | Size: 448 KiB |
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 |
|
||||
BIN
projects/mes/quote-analysis/screenshots/01-quote-list.png
Normal file
|
After Width: | Height: | Size: 646 KiB |
BIN
projects/mes/quote-analysis/screenshots/02-quote-detail.png
Normal file
|
After Width: | Height: | Size: 285 KiB |
|
After Width: | Height: | Size: 330 KiB |
BIN
projects/mes/quote-analysis/screenshots/04-quote-create-form.png
Normal file
|
After Width: | Height: | Size: 276 KiB |
234
projects/mes/site-analysis/README.md
Normal file
@@ -0,0 +1,234 @@
|
||||
# 현장관리 분석 결과
|
||||
|
||||
> 분석 일시: 2024-12-18
|
||||
> 분석 대상: design/mes기획서_리액트 (디자인팀 기획 사이트)
|
||||
|
||||
## 분석 목적
|
||||
|
||||
디자인팀에서 제작한 기획 사이트의 현장관리 기능을 분석하여 API 개발에 필요한 스펙을 추출합니다.
|
||||
|
||||
---
|
||||
|
||||
## UI 스크린샷
|
||||
|
||||
### 1. 현장 목록 페이지
|
||||

|
||||
|
||||
**주요 요소:**
|
||||
- 테이블 컬럼: 번호, 현장코드, 현장명, 거래처, 주소, 등록일
|
||||
- 검색 기능
|
||||
- 현장 등록 버튼
|
||||
|
||||
---
|
||||
|
||||
### 2. 현장 상세 페이지
|
||||

|
||||
|
||||
**주요 섹션:**
|
||||
|
||||
**기본 정보:**
|
||||
| 필드 | 설명 |
|
||||
|------|------|
|
||||
| 현장코드 | 자동 생성 |
|
||||
| 현장명 | 현장 이름 |
|
||||
| 진행상태 | 수주확정, 생산중, 출하대기, 설치중, 설치완료 |
|
||||
| 거래처 | 연결된 거래처 |
|
||||
| 설치예정일 | 예정 날짜 |
|
||||
| 진행률 | 0~100% |
|
||||
| 현장주소 | 주소 |
|
||||
| 현장연락처 | 연락처 |
|
||||
| 설치담당자 | 담당자명 |
|
||||
| 담당자 연락처 | 담당자 연락처 |
|
||||
| 특이사항 | 메모 |
|
||||
|
||||
**수주내역:**
|
||||
- 연결된 수주 목록 표시
|
||||
- 수주번호, 품목, 수량, 금액 등
|
||||
|
||||
**출고내역:**
|
||||
- 출고된 품목 목록
|
||||
- 출고일, 수량, 상태 등
|
||||
|
||||
**변경이력:**
|
||||
- 상태 변경 이력
|
||||
- 변경일, 변경내용, 변경자
|
||||
|
||||
**헤더 버튼:**
|
||||
- 목록
|
||||
- 수정
|
||||
- 삭제
|
||||
|
||||
---
|
||||
|
||||
### 3. 현장 등록 폼
|
||||

|
||||
|
||||
**입력 섹션:**
|
||||
|
||||
**현장 정보:**
|
||||
| 필드명 | 타입 | 필수 | 비고 |
|
||||
|--------|------|------|------|
|
||||
| 현장명 | text | ✅ | |
|
||||
| 거래처 | select/search | ✅ | 거래처 선택 |
|
||||
| 현장주소 | text | | 우편번호 검색 |
|
||||
| 현장연락처 | text | | |
|
||||
| 진행상태 | select | | 기본: 수주확정 |
|
||||
|
||||
**설치 담당자:**
|
||||
| 필드명 | 타입 | 필수 | 비고 |
|
||||
|--------|------|------|------|
|
||||
| 담당자명 | text | | |
|
||||
| 연락처 | text | | |
|
||||
| 설치예정일 | date | | |
|
||||
| 설치완료일 | date | | |
|
||||
| 특이사항 | textarea | | |
|
||||
|
||||
---
|
||||
|
||||
## 데이터 스키마
|
||||
|
||||
### Site (현장)
|
||||
```
|
||||
sites
|
||||
├── id (PK)
|
||||
├── tenant_id (FK)
|
||||
├── site_code (UNIQUE) - 자동 채번
|
||||
├── name - 현장명
|
||||
├── customer_id (FK) - 거래처
|
||||
├── customer_name - 거래처명 (스냅샷)
|
||||
├── status - 진행상태
|
||||
├── progress_rate - 진행률 (0-100)
|
||||
├── address - 현장주소
|
||||
├── address_detail - 상세주소
|
||||
├── phone - 현장연락처
|
||||
├── installer_name - 설치담당자
|
||||
├── installer_phone - 담당자 연락처
|
||||
├── scheduled_date - 설치예정일
|
||||
├── completed_date - 설치완료일
|
||||
├── note - 특이사항
|
||||
├── created_at
|
||||
├── updated_at
|
||||
└── deleted_at
|
||||
```
|
||||
|
||||
### SiteHistory (현장 변경이력)
|
||||
```
|
||||
site_histories
|
||||
├── id (PK)
|
||||
├── site_id (FK)
|
||||
├── changed_field - 변경 필드
|
||||
├── old_value - 이전 값
|
||||
├── new_value - 변경 값
|
||||
├── changed_by - 변경자
|
||||
├── changed_at - 변경일시
|
||||
└── note - 비고
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 상태 흐름
|
||||
|
||||
```
|
||||
수주확정 → 생산중 → 출하대기 → 설치중 → 설치완료
|
||||
```
|
||||
|
||||
| 상태 | 설명 | 진행률 범위 |
|
||||
|------|------|-------------|
|
||||
| 수주확정 | 수주 완료, 생산 대기 | 0-10% |
|
||||
| 생산중 | 제품 생산 진행 | 10-50% |
|
||||
| 출하대기 | 생산 완료, 출하 대기 | 50-70% |
|
||||
| 설치중 | 현장 설치 진행 | 70-90% |
|
||||
| 설치완료 | 설치 완료 | 100% |
|
||||
|
||||
---
|
||||
|
||||
## API 스펙
|
||||
|
||||
### 현장 CRUD
|
||||
|
||||
```
|
||||
GET /api/sites - 현장 목록
|
||||
GET /api/sites/{id} - 현장 상세
|
||||
POST /api/sites - 현장 등록
|
||||
PUT /api/sites/{id} - 현장 수정
|
||||
DELETE /api/sites/{id} - 현장 삭제
|
||||
DELETE /api/sites - 현장 일괄 삭제
|
||||
```
|
||||
|
||||
### 현장 관련 조회
|
||||
|
||||
```
|
||||
GET /api/sites/{id}/orders - 현장별 수주 내역
|
||||
GET /api/sites/{id}/shipments - 현장별 출고 내역
|
||||
GET /api/sites/{id}/history - 현장 변경 이력
|
||||
```
|
||||
|
||||
### 현장 상태 변경
|
||||
|
||||
```
|
||||
POST /api/sites/{id}/status - 상태 변경
|
||||
```
|
||||
|
||||
**Request Body:**
|
||||
```json
|
||||
{
|
||||
"status": "생산중",
|
||||
"note": "생산 시작"
|
||||
}
|
||||
```
|
||||
|
||||
### 목록 조회 Query Parameters
|
||||
|
||||
| 파라미터 | 타입 | 설명 |
|
||||
|----------|------|------|
|
||||
| status | string | 진행상태 필터 |
|
||||
| customer_id | number | 거래처 필터 |
|
||||
| search | string | 검색어 (현장코드, 현장명) |
|
||||
| page | number | 페이지 번호 |
|
||||
| per_page | number | 페이지당 개수 |
|
||||
|
||||
---
|
||||
|
||||
## 채번 규칙
|
||||
|
||||
```
|
||||
현장코드: S-{연도2자리}{월2자리}-{순번3자리}
|
||||
예시: S-2412-001, S-2412-002
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 연관 관계
|
||||
|
||||
### 현장과 수주 연결
|
||||
|
||||
```
|
||||
sites 1:N orders (site_id)
|
||||
- 하나의 현장에 여러 수주가 연결될 수 있음
|
||||
- 수주 생성 시 현장 자동 생성 또는 기존 현장 선택
|
||||
```
|
||||
|
||||
### 현장과 거래처 연결
|
||||
|
||||
```
|
||||
customers 1:N sites (customer_id)
|
||||
- 하나의 거래처가 여러 현장을 가질 수 있음
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 진행률 자동 계산
|
||||
|
||||
```javascript
|
||||
// 수주 품목 기준 진행률 계산
|
||||
progress_rate = (완료_품목_수 / 전체_품목_수) * 100
|
||||
|
||||
// 또는 상태별 기본 진행률
|
||||
status_progress = {
|
||||
'수주확정': 10,
|
||||
'생산중': 30,
|
||||
'출하대기': 60,
|
||||
'설치중': 80,
|
||||
'설치완료': 100
|
||||
}
|
||||
```
|
||||
BIN
projects/mes/site-analysis/screenshots/01-site-list.png
Normal file
|
After Width: | Height: | Size: 236 KiB |
BIN
projects/mes/site-analysis/screenshots/02-site-detail.png
Normal file
|
After Width: | Height: | Size: 316 KiB |
BIN
projects/mes/site-analysis/screenshots/03-site-create.png
Normal file
|
After Width: | Height: | Size: 239 KiB |