name: huni-printing-estimator
description: |
후니프린팅 통합 관리 시스템: 자동 견적 + 외주 정산 자동화
🔹 견적/가격: "견적 계산", "가격 알려줘", "얼마야", "무선책자 100부"
🔹 조판/CTP: "CTP 몇 판?", "조판 어떻게?", "판수 계산"
🔹 옵션 검증: "이 옵션 가능해?", "박가공 선택하면?"
🔹 파일 가이드: "파일 어떻게 만들어?", "도련", "CMYK", "아웃라인"
🔹 후가공 파일: "박가공 파일", "칼선 레이어"
🔹 주문 시뮬레이터: "만들고 싶어요", "미리보기", "옵션 선택"
🔹 제품 프리뷰: "책 모양", "완성품 보여줘"
⭐ 정산 관리 (NEW):
🔹 정산 분석: "정산 분석", "비즈하우스 정산", "후지필름 정산"
🔹 매칭 검증: "데이터 매칭", "불일치 확인", "정산 대사"
🔹 금액 집계: "정산 금액", "VAT 계산", "총액"
🔹 정산서 생성: "정산서 만들어", "엑셀 출력"
지원 상품: 디지털인쇄, 스티커, 책자, 캘린더, 포스터, 아크릴, 굿즈, 파우치, 에코백 등 236개 MES상품
지원 외주사: 비즈하우스, 후지필름(롯데ON)
후니프린팅 통합 관리 시스템
용어 정리
| 구분 |
설명 |
예시 |
| 상품 (Product) |
판매 단위의 대분류 |
프리미엄엽서, 무선책자 |
| 상품아이템 (ProductItem) |
상품의 사이즈/옵션 조합 |
73x98mm, A5 100P |
| MES코드 |
상품 고유 식별자 |
001-0001 |
| PScode |
외부 연동 코드 |
14529 |
⚠️ 기존 용어 "품목" → "상품", "품목모델" → "상품아이템"으로 통일
회사 정보
| 항목 |
내용 |
| 상호명 |
후니프린팅 |
| 대표자 |
채훈희 |
| 전화 |
02-3409-8853 |
| 주소 |
서울 중구 필동로 80 낙원빌딩 2층 |
| 영업시간 |
10:0018:00 (점심 12:3013:30) |
| 휴무 |
주말/공휴일 |
상품마스터 구조 (v251220)
카테고리 체계
MAP 시트 (상품 계획표) MES품목 (운영 상품)
├─ ▶︎ 서브카테고리 헤더 ├─ 실제 운영 중인 상품만
├─ → 참조 링크 └─ 236개 고유 MES코드
├─ ★ 미출시/개발중
└─ 전체 상품 목록
12개 카테고리 현황
| 코드 |
카테고리 |
MES상품수 |
MAP항목수 |
주요 상품 |
| 001 |
엽서 |
14 |
19 |
프리미엄엽서, 포토카드, 접지카드 |
| 002 |
스티커 |
16 |
20 |
반칼자유형, 낱장자유형, 규격스티커 |
| 003 |
인쇄홍보물 |
16 |
22 |
명함, 전단지, 리플렛, 상품권 |
| 004 |
포스터 |
18 |
22 |
아트포스터, 패브릭포스터, 실사 |
| 005 |
사인 |
10 |
19 |
배너, 현수막, 시트커팅 |
| 006 |
책자 |
8 |
11 |
중철, 무선, PUR, 트윈링, 하드커버 |
| 007 |
캘린더 |
5 |
11 |
탁상형, 벽걸이, 엽서캘린더 |
| 008 |
문구 |
21 |
23 |
다이어리, 노트, 클립보드 |
| 009 |
아크릴 |
21 |
25 |
키링, 마그넷, 스탠드, 명찰 |
| 010 |
라이프 |
32 |
47 |
거울, 코스터, 머그컵, 쿠션 |
| 011 |
에코백 |
55 |
67 |
레더파우치, 캔버스백, 타이벡 |
| 012 |
포장 |
20 |
22 |
배경지, 봉투, 라벨, 케이스 |
|
합계 |
236 |
308 |
|
💡 MAP > MES 차이: 서브카테고리 헤더(▶︎), 참조링크(→), 미출시(★) 포함
공정 흐름
인쇄공정 → 내부공정1 → 내부공정2 → 외주공정 → 출고
인쇄공정 유형 (7종)
| 공정 |
상품수 |
설비 |
| 디지털인쇄 |
79 |
내부장비 |
| UV인쇄(쿠마) |
64 |
외주 |
| 패브릭출력(쿠마) |
23 |
외주 |
| 실사출력 |
21 |
내부장비 |
| 전사인쇄(쿠마) |
15 |
외주 |
| 화이트인쇄(쿠마) |
2 |
외주 |
| 도장 |
1 |
외주 |
내부공정 유형
| 공정1 |
공정2 |
| 레이저커팅 (17) |
미싱 (58) |
| 반칼커팅 (9) |
굿즈가공 (11) |
| 완칼커팅 (9) |
제본(트윈링) (9) |
| 시트커팅 (2) |
인쇄가공 (9) |
참조 파일
| 데이터 |
파일 |
| 상품마스터 |
assets/data/product_master.toon |
| 인쇄가격표 |
assets/data/price_table.toon |
| 기본단가 |
assets/data/prices.toon |
Part A: 견적 시스템
Quick Start
1. 가격 데이터 → assets/data/prices.toon (TOON 형식)
2. 가격 계산 → scripts/calculate_estimate.py
3. (책자) 조판 분석 → scripts/imposition_calculator.py
가격 데이터 (TOON)
가격 데이터는 assets/data/prices.toon에 TOON 형식으로 저장:
- 토큰 효율: JSON 대비 ~60% 절감
- 포함 데이터: 용지, 출력비, 제본비, 코팅, 후가공, 박가공, 포장, 할인율
# 수량 할인율 (prices.toon 발췌)
discount_tiers[6]{qty_min,qty_max,rate}:
1,9,0
10,49,0.03
50,99,0.06
100,499,0.10
500,999,0.15
1000,99999,0.20
가격 계산 공식
디지털인쇄
최종가 = (용지비 + 출력비 + 후가공비) × 수량 × (1 - 할인율)
책자 (중철, 무선, PUR)
최종가 = (내지비 + 표지비 + 제본비 + 후가공비) × 수량 × (1 - 할인율)
박가공 (엽서, 명함 등)
박가공비 = 동판비 + 박가공비
동판비: foil_copper_plate 테이블에서 (수량 × 면적mm) 조회
박가공비:
- 일반박 (금유광,은유광,동박,청박): foil_stamp_normal
- 특수박 (먹유광,홀로그램,트윙클,적박): foil_stamp_special
- 면적 150mm² 이하: price_base
- 면적 150mm² 초과: price_large
수량 할인율
| 구간 |
할인율 |
| 1-9 |
0% |
| 10-49 |
3% |
| 50-99 |
6% |
| 100-499 |
10% |
| 500-999 |
15% |
| 1000+ |
20% |
조판/CTP 가이드
CTP 판수 공식
CTP 판수 = 대지수 × 색상수 × 인쇄면수
대지 크기
| 대지 |
페이지 |
용도 |
| 4P |
4 |
리플렛 |
| 8P |
8 |
소형책자 |
| 16P |
16 |
표준책자 |
파일 제작 가이드
핵심 체크리스트
□ CMYK 색상 모드
□ 300dpi 해상도
□ 도련 사방 3mm
□ 안전영역: 재단선에서 3mm 안쪽
□ 서체 아웃라인
□ PDF 출판품질
도련/안전영역
┌─────────────────────┐
│ 도련 (3mm) │ ← 잘려나감
│ ┌───────────────┐ │
│ │ 재단선 │ │
│ │ ┌─────────┐ │ │
│ │ │안전영역 │ │ │ ← 중요 내용
│ │ └─────────┘ │ │
│ └───────────────┘ │
└─────────────────────┘
주문 시뮬레이터
용도별 상품 추천
| 용도 |
추천 상품 |
| 포트폴리오 |
무선책자 |
| 팸플릿 |
중철책자 |
| 홍보물 |
엽서/전단 |
| 굿즈 |
스티커/포토카드 |
제품 미리보기
옵션 완료 시 assets/templates/order-simulator.jsx를 React 아티팩트로 렌더링
Part B: 외주 정산 시스템 ⭐ NEW
지원 외주사
| 외주사 |
월 평균 |
매칭 방식 |
| 비즈하우스 |
10,000+건 |
상품IDX ↔ 작업번호 |
| 후지필름 |
50~100건 |
거래처주문번호 ↔ MES주문번호 |
정산 워크플로우
1. 파일 업로드 → 외주사 + MES 파일
2. 시트 매핑 → 자동 감지
3. 데이터 매칭 → scripts/settlement_matcher.py
4. 불일치 검출 → 누락/수량차이
5. 금액 집계 → VAT 포함
6. 정산서 생성 → Excel 출력
비즈하우스 정산
파일 구조 (7개 시트)
| 시트명 |
행수(예시) |
용도 |
| 인화업체정산 |
10,530 |
외주사 데이터 |
| 후니내역 |
10,521 |
내부 MES |
| 중복 |
11,555 |
매핑 테이블 |
| 보정 |
66 |
수동 보정 |
| 제주도서 |
72 |
도서산간 배송비 |
매칭 로직
인화업체정산.상품IDX
→ 중복시트.상품IDX
→ 중복시트.작업번호
→ 후니내역.작업번호
제외 조건 (중복시트 비고 컬럼)
9월정산 → 이전 정산 완료
취소 → 취소 주문
환불 → 환불 처리
금액 계산
총 정산금액 = (상품금액 + 배송비 + 제주도서 + 보정) × 1.1
상품금액 = Σ(인화업체정산.총공급가격)
배송비 = Σ(인화업체정산.배송비)
제주도서 = Σ(제주도서.기타운임)
보정 = Σ(보정.합계금액)
VAT = 소계 × 10%
분석 결과 예시 (2025.11)
📊 매칭 결과
├─ 총 건수: 10,530건
├─ 매칭 성공: 10,499건 (99.71%)
├─ 이전 정산 제외: 22건
├─ 매핑 테이블 없음: 5건
└─ 내부 데이터 없음: 4건
💰 정산 금액
├─ 상품 공급가격: ₩226,049,380
├─ 일반 배송비: ₩ 24,273,900
├─ 제주도서 (72건): ₩ 407,000
├─ 보정 금액 (66건): ₩ 20,382,990
├─ 소계: ₩271,113,270
├─ VAT (10%): ₩ 27,111,327
└─ 총 정산금액: ₩298,224,597
후지필름 정산
파일 구조 (1개 시트)
| 시트명 |
행수(예시) |
용도 |
| Sheet |
57 |
전체 정산 데이터 |
매칭 로직
후지필름.거래처주문번호
→ 정규화 (S1 접미사 제거)
→ MES.주문번호
주문번호 정규화
# M2511032226540S1 → M2511032226540
import re
normalized = re.sub(r'S\d+$', '', order_id)
⚠️ 금액 데이터 없음
후지필름 파일의 생산단가/금액 컬럼이 비어있음
→ 가격표 DB 연동 필요
분석 결과 예시 (2025.11)
📊 매칭 결과
├─ 총 건수: 57건
├─ 매칭 성공: 27건 (유니크 주문)
├─ 후지에만 존재: 2건
└─ MES에만 존재: 3건
📦 품목별 수량
├─ 포토북: 96건
├─ 레더스트랩키링: 20건
├─ 반칼팬시스티커: 12건
└─ 아크릴키링: 7건
⚠️ 금액: 가격표 연동 필요
불일치 유형
| 유형 |
설명 |
처리 |
| 매핑 없음 |
상품IDX가 중복시트에 없음 |
매핑 추가 |
| 내부 없음 |
작업번호가 후니내역에 없음 |
MES 확인 |
| 수량 차이 |
외주 vs 내부 수량 불일치 |
수량 확인 |
| 이전 정산 |
"9월정산" 표시 |
제외 |
정산 자동화 도구
정산 요청 시 assets/templates/settlement-manager.jsx를 React 아티팩트로 렌더링:
기능:
- 📁 파일 업로드 (드래그앤드롭)
- 🔍 자동 시트 감지
- 📊 매칭 결과 대시보드
- ❌ 불일치 항목 테이블
- 💰 금액 집계 (VAT 포함)
- 📋 품목별 집계
- 📥 Excel 내보내기
참조 문서
상품/가격 데이터 (TOON)
| 데이터 유형 |
참조 파일 |
내용 |
| 상품마스터 |
assets/data/product_master.toon |
236개 MES상품, 12카테고리, 공정라우트 |
| 인쇄가격표 |
assets/data/price_table.toon |
출력비, 제본비, 굿즈/파우치/에코백 |
| 기본단가 |
assets/data/prices.toon |
용지 22종, 코팅, 후가공, 박가공 |
가격 데이터 상세
| 데이터 유형 |
참조 파일 |
| 용지 단가 (22종) |
prices.toon → paper |
| 디지털출력비 (A3) |
price_table.toon → output_a3 |
| 제본비 (중철/무선/PUR/트윈링/하드커버) |
price_table.toon → binding_* |
| 아크릴 단가 (3T) |
price_table.toon → acrylic_3t |
| 스티커 가공비 |
price_table.toon → sticker_freeform |
| 굿즈 가격 |
price_table.toon → goods_* |
| 파우치 가격 |
price_table.toon → pouch_* |
| 에코백 가격 |
price_table.toon → ecobag_* |
| 수량 할인율 |
price_table.toon → discount_tiers |
| 박가공 동판비 |
price_table.toon → foil_copper_plate |
| 박가공비 (일반박) |
price_table.toon → foil_stamp_normal |
| 박가공비 (특수박) |
price_table.toon → foil_stamp_special |
| 박가공 종류 |
price_table.toon → foil_types |
견적/주문
| 질문 유형 |
참조 파일 |
| 주문 옵션 |
references/order-guide.md |
| 제품 미리보기 |
assets/templates/order-simulator.jsx |
| 파일 제작 |
references/file-guide/ |
| 조판/CTP |
references/imposition/ |
정산
| 질문 유형 |
참조 파일 |
| 정산 개요 |
references/settlement/overview.md |
| 비즈하우스 |
references/settlement/bizhouse.md |
| 후지필름 |
references/settlement/fujifilm.md |
| 정산 도구 |
assets/templates/settlement-manager.jsx |
스크립트 사용법
견적 계산
python scripts/calculate_estimate.py \
--product "무선책자" \
--options '{"pages":100}' \
--qty 50
CTP 판수
python scripts/imposition_calculator.py \
--pages 100 --signature 16 --colors 4
정산 분석
python scripts/settlement_matcher.py \
--partner bizhouse \
--file "02__비즈하우스.xlsx"
대화 시나리오
견적 문의
고객: "무선책자 A5 100P 50부 얼마예요?"
Claude: "A5 100P 무선책자 견적:
📋 옵션: A5, 100P, 아트지 120g
💰 50부 기준: ₩XXX,XXX (VAT별도)
📄 파일 규격:
• 내지: 154×216mm
• 표지: 310×216mm (책등 7mm)"
정산 분석
담당자: "비즈하우스 정산 분석해줘"
Claude: "파일 업로드 후 분석할게요.
[분석 결과]
📊 매칭: 10,499건 (99.71%)
❌ 불일치: 9건 (확인 필요)
💰 총 정산금액: ₩298,224,597
[React 아티팩트: 정산 대시보드]
정산서 Excel 생성할까요?"