Files
sam-docs/projects/mes/price-analysis/README.md
hskwon 4d61f22eb3 feat(mes): 판매관리 기능 분석 문서 추가
- 거래처관리: 목록/상세/등록 UI 분석, API 스펙 정의
- 견적관리: 견적 프로세스 분석, 자동계산 규칙 정의
- 현장관리: 현장 상태 흐름 분석, 진행률 계산 규칙
- 단가관리: 품목유형별 단가 구조 분석, 마진율 계산

포함된 스크린샷: 15개 (거래처 3, 견적 4, 현장 3, 단가 1)
2025-12-18 15:55:52 +09:00

7.3 KiB
Raw Blame History

단가관리 분석 결과

분석 일시: 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 박스 박스 단위

자동 계산

마진율 계산

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

손실률 적용

// 실제 필요량 계산
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)