MES 분석 문서 구조 정리: v1/v2 분리
- v1-analysis: 5130 레거시 기반 견적 분석 추가 - v2-analysis: 기존 MES 분석 문서들 이동 - customer, master-data, order, price - production, production-userflow, quote, site
This commit is contained in:
268
projects/mes/v2-analysis/price-analysis/README.md
Normal file
268
projects/mes/v2-analysis/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) |
|
||||
Reference in New Issue
Block a user