# SAM 견적 시스템 분석 문서

## 1. 개요

SAM(Smart Automation Management) 견적 시스템은 제조업체의 견적 산출 프로세스를 자동화하는 시스템입니다. 본 문서는 이미지 분석과 소스 코드 분석을 통해 시스템 구조와 기능을 정리합니다.

---

## 2. 견적 산출 플로우 (Flow)

### 2.1 전체 프로세스 (견적산출_Flow.pdf 기반)

```
┌─────────────────────────────────────────────────────────────────────────────┐
│ ROW 1: 기본 정보 입력                                                         │
├─────────────────────────────────────────────────────────────────────────────┤
│ 견적시작 → 기본정보 → 분류선택 → 모델선택 → 날짜자동 → 발주처선택 → 현장명 → 비고 │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│ ROW 2: 오픈사이즈 입력                                                        │
├─────────────────────────────────────────────────────────────────────────────┤
│ 일련번호 → 층수 → 부호 → 모델명 → 본체타입자동 → 가이드레일자동 → 오픈사이즈입력   │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│ ROW 3: 제작사이즈 산출                                                        │
├─────────────────────────────────────────────────────────────────────────────┤
│ 제작사이즈자동 → 수량입력 → 제어기설정 → 전원선택 → 유무선 → 용량자동 → 저장      │
└─────────────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────────────┐
│ ROW 4: 견적 마무리                                                           │
├─────────────────────────────────────────────────────────────────────────────┤
│ 견적하기 → 견적번호자동 → 품목추가/삭제/수정 → 세부산출 → 단가적용 → 저장/발주전환  │
└─────────────────────────────────────────────────────────────────────────────┘
```

### 2.2 자동 산출 항목

| 항목 | 설명 | 산출 방식 |
|------|------|----------|
| 제작폭(W1) | 실제 제작 폭 | W0 + 여유값 (수식 기반) |
| 제작높이(H1) | 실제 제작 높이 | H0 + 여유값 (수식 기반) |
| 면적(M) | 제품 면적 | W1 × H1 / 1,000,000 m² |
| 중량(K) | 제품 무게 | 면적 × 단위중량 |
| 용량 | 모터 용량 | 면적/중량 기반 범위 계산 |
| 브라켓 | 고정부품 | 가이드레일 유형별 자동 선택 |

---

## 3. 화면별 기능 분석

### 3.1 견적관리 목록 (QuoteManagement3List)

**경로**: `design/src/components/QuoteManagement3List.tsx`

**UI 구성**:
- 상단 통계 카드: 이번 달 견적금액, 진행중 견적금액, 이번 주 신규 견적, 수주 전환율
- 검색 필터: 견적번호, 발주처, 담당자, 제품명, 현장코드, 현장명 검색
- 상태 탭: 전체, 최초작성, 수정중, 최종확정, 수주전환

**테이블 컬럼**:
| 컬럼 | 설명 |
|------|------|
| 번호 | 순번 |
| 견적번호 | KD-PR-YYMMDD-NN 형식 |
| 접수일 | 견적 접수 일자 |
| 상태 | 최초작성/수정중/최종확정/수주전환 |
| 제품명 | 제품 코드 및 모델명 |
| 수량 | 견적 수량 |
| 금액 | 견적 금액 (만원) |
| 발주처 | 고객사명 |
| 현장명 | 설치 현장 (프로젝트코드 포함) |
| 담당자 | 영업 담당자 |
| 비고 | 메모 |
| 작업 | 보기/수정/삭제 |

**기능**:
- 체크박스 선택 후 일괄 삭제
- 개별 삭제 (확인 다이얼로그)
- 견적 등록 버튼
- 상태별 필터링

### 3.2 견적 등록 (QuoteManagement3Write)

**경로**: `design/src/components/QuoteManagement3Write.tsx`

**폼 구조 (3컬럼 레이아웃)**:

```
┌────────────────┬────────────────┬────────────────┐
│ 등록일         │ 작성자         │ 발주처 선택 *  │
├────────────────┼────────────────┼────────────────┤
│ 현장명         │ 발주 담당자    │ 연락처         │
├────────────────┴────────────────┴────────────────┤
│ 납기일                                           │
├─────────────────────────────────────────────────┤
│ 비고 (특이사항을 입력하세요)                      │
└─────────────────────────────────────────────────┘
```

**자동 견적 산출 섹션**:

| 필드 | 설명 | 필수 |
|------|------|------|
| 층수 | 예: 1층, B1, 지하1층 | - |
| 부호 | 예: A, B, C | - |
| 제품 카테고리 (PC) | 카테고리 선택 | * |
| 제품명 | 제품 선택 | * |
| 오픈사이즈 (W0) | 가로 사이즈 (mm) | * |
| 오픈사이즈 (H0) | 세로 사이즈 (mm) | * |
| 가이드레일 설치 유형 (GT) | 설치 유형 선택 | * |
| 모터 전원 (MP) | 전원 선택 | * |
| 연동제어기 (CT) | 제어기 선택 | * |
| 수량 (QTY) | 수량 입력 | * |
| 마구리 날개치수 (WS) | 기본값: 50 | - |
| 검사비 (INSP) | 기본값: 50000 | - |

**다중 견적 산출**: 견적 1, 견적 2, ... 탭으로 여러 품목 동시 등록

### 3.3 견적 상세 (QuoteManagement3Detail)

**기본 정보 표시**:
- 견적번호, 작성자, 발주처
- 담당자, 연락처, 현장명
- 현장코드, 상태, 접수일
- 납기일, 비고

**자동 견적 산출 정보**:
- 제품 카테고리, 선택된 제품, 수량
- 오픈사이즈 (가로/세로), 부호, 층수

**부품구성표(BOM) 계산 결과**:

| 순번 | 품목코드 | 품목명 | 규격 | 수량 | 단위 | 단가 | 금액 |
|------|---------|--------|------|------|------|------|------|
| 1 | SF-SCR-F01 | 스크린 원단 | 5000×5000 | 27.499 | M2 | 962,465 | 26,466,825,035원 |
| 2 | SF-SCR-F02 | 가이드레일 (좌) | 5000×5000 | 5.35 | M | 42,000 | 224,700원 |
| ... | ... | ... | ... | ... | ... | ... | ... |

**합계 표시**:
- 소계
- 할인율 (%)
- 적용 금액

### 3.4 견적서 출력 (QuoteDocument)

**출력 형식**:
- PDF / 이메일 / 팩스 / 카카오톡 / 인쇄

**견적서 구성**:
```
┌─────────────────────────────────────────────┐
│                  견 적 서                    │
│     문서번호: KD-PR-20251202-01              │
│     작성일자: 2025년 12월 02일               │
├─────────────────────────────────────────────┤
│ [수요자]                                     │
│  업체명: 부산건설                            │
│  현장명: -          담당자: 김부산           │
│  제품명: 방화 스크린 셔터 (대형)  연락처: 010-5555-6666 │
├─────────────────────────────────────────────┤
│ [공급자]                                     │
│  상호: (주)엠진건설     사업자등록번호: 139-87-00353 │
│  대표자: 김 용 진       업태: 제조           │
│  종목: 방창, 셔터, 금속창호                  │
│  사업장주소: 경기도 안성시 공업용지 오성길 45-22 │
│  전화: 031-983-5130     팩스: 02-6911-6315  │
├─────────────────────────────────────────────┤
│              총 견적금액                     │
│           ₩ 4,105,400                       │
│           ※ 부가가치세 별도                  │
├─────────────────────────────────────────────┤
│              세 부 산 출 내 역               │
│ No. | 품목명 | 규격 | 수량 | 단위 | 단가 | 금액 │
├─────────────────────────────────────────────┤
│  1  | 스크린 원단 | - | 27.50 | M2 | 962,465 | 26,466,825,035 │
│  2  | 가이드레일 (좌) | - | 5.35 | M | 42,000 | 224,700 │
│ ... | ... | ... | ... | ... | ... | ... |
└─────────────────────────────────────────────┘
```

### 3.5 견적산출내역서

**추가 탭**: 산출내역서 / 소요자재 내역

**산출내역서 상세 정보**:
- 품목별 규격, 수량, 단위, 단가, 금액 상세 표시
- 부품구성표(BOM) 계산 결과와 동일

---

## 4. 기준정보 관리

### 4.1 견적수식관리 (FormulaManagement2)

**경로**: `design/src/components/FormulaManagement2.tsx`

**품목 수식 관리**:
- 제품 선택: 공통 / 특정 제품별 (예: 24채 수식)
- 카테고리 선택 (실행 순서): 기본정보, 제작사이즈, 면적, 모터용량산출, 감기사프트, 브라켓&받침용영역, 가이드레일, 가이드레일설치유형, 셔터박스, 하단마감재

**수식 테이블 컬럼**:

| 순서 | 이름 | 변수 | 타입 | 수식/범위 | 결과 타입 | 설명 | 작업 |
|------|------|------|------|----------|----------|------|------|
| 1 | 제품 카테고리 | PC | 계산식 | PC | 품목 | Product Category | 수정/삭제 |
| 2 | 오픈사이즈 가로 | W0 | 계산식 | W0 | 품목 | - | 수정/삭제 |
| 3 | 오픈사이즈 세로 | H0 | 계산식 | H0 | 품목 | - | 수정/삭제 |
| 4 | 가이드레일 유형 | GT | 계산식 | GT | 품목 | - | 수정/삭제 |
| 5 | 모터 전원 | MP | 계산식 | MP | 품목 | - | 수정/삭제 |
| 6 | 연동제어기 | CT | 계산식 | CT | 품목 | - | 수정/삭제 |
| 7 | 수량 | QTY | 계산식 | QTY | 품목 | - | 수정/삭제 |
| 8 | 마구리 날개치수 | WS | 계산식 | WS | 품목 | - | 수정/삭제 |
| 9 | 검사비 | INSP | 계산식 | INSP | 품목 | - | 수정/삭제 |
| 10 | 제품명 | - | 계산식 | - | 품목 | 제품 선택용 (변수 아님) | 수정/삭제 |

**수식 추가 다이얼로그**:

| 필드 | 설명 |
|------|------|
| 제품 | 공통 / 특정 제품 |
| 카테고리 | 수식 카테고리 |
| 이름 | 수식 이름 |
| 변수 | 변수명 (예: H1) |
| 타입 | 계산식 / 범위별 / 매핑 / 입력값 |
| 결과 출력 | 변수에 저장 / 품목/수량 출력 |
| 계산식 | 예: W0 + 140, SUM(W0, H0), ROUND(M * 2.5, 2) |
| 설명 | 수식에 대한 설명 |

**지원 함수**:
- `SUM()`, `ROUND()`, `IF()`, `MIN()`, `MAX()`
- 변수 검색 기능
- 함수 도움말 제공

### 4.2 단가 계산 분류 관리

**분류 추가**: 카테고리들을 묶는 분류를 생성하고 관리

**자동 견적 산출**:
- 단일 견적 / 다중 견적 (층/부호별) 선택
- 입력값 기반으로 단일 또는 다중 견적 자동 산출

### 4.3 단가 수식 관리

**섹션 구조**:
1. **단가 계산 분류 관리**: 분류명, 설명, 카테고리로 검색
2. **단가 수식 관리**: 분류 그룹 또는 개별 품목에 단가 계산 수식 연결

**단가 수식 연결**:
- 수식명, 품목명, 그룹명으로 검색
- 첫 단가 수식 연결 추가하기 버튼

### 4.4 번호기준관리 (LOTNumberManagement)

**경로**: `design/src/components/LOTNumberManagement.tsx`

**번호기준 규칙 목록**:

| 번호 | 번호기준 이름 | 적용 대상 | 접두사 | 날짜 형식 | 순번 자릿수 | 구분자 | 예시 | 상태 | 작업 |
|------|-------------|----------|--------|----------|------------|--------|------|------|------|
| 1 | 견적번호 | 견적 | KD-PR | YYMMDD | 2자리 | - | KD-PR-251128-01 | 활성 | 테스트/수정/삭제 |
| 2 | - | - | KD-SO | YYMMDD | 2자리 | - | KD-SO-251119-01 | 활성 | 테스트/수정/삭제 |
| 3 | - | - | KD-MO | YYMMDD | 2자리 | - | KD-MO-251119-01 | 활성 | 테스트/수정/삭제 |
| 4 | - | - | KD-OT | YYMMDD | 2자리 | - | KD-OT-251119-01 | 활성 | 테스트/수정/삭제 |
| 5 | - | - | KD-PO | YYMMDD | 2자리 | - | KD-PO-251119-01 | 활성 | 테스트/수정/삭제 |

**번호기준 규칙 수정 폼**:

| 필드 | 설명 |
|------|------|
| 번호기준 이름 | 견적번호 등 |
| 적용 대상 (복수 선택 가능) | 견적번호, 수주번호, 생산지시번호, 출하지시번호, 발주번호 |
| 접두사 | KD-PR |
| 구분자 | 하이픈 (-) |
| 날짜 사용 | 사용/사용안함 |
| 날짜 형식 | YYMMDD (251119) |
| 순번 자릿수 | 2자리 (01-99) |
| 상태 | 활성 (비활성 시 번호 생성에 사용되지 않음) |
| 설명 | 견적번호 생성 규칙 |

**생성 번호 미리보기**: `KD-PR-251128-01`

---

## 5. 소스 코드 구조 분석

### 5.1 핵심 컴포넌트

```
design/src/components/
├── QuoteManagement3List.tsx      # 견적 목록 (테이블, 검색, 상태탭)
├── QuoteManagement3Write.tsx     # 견적 등록/수정 (폼, 자동산출)
├── QuoteManagement3Detail.tsx    # 견적 상세 (읽기전용)
├── QuoteDocument.tsx             # 견적서 출력 (PDF, 이메일 등)
├── QuoteCalculationReport.tsx    # 견적산출내역서
├── FormulaManagement2.tsx        # 견적수식관리 (핵심)
├── LOTNumberManagement.tsx       # 번호기준관리
├── LOTRuleForm.tsx               # 번호규칙 폼
├── AutoCalculationPage.tsx       # 자동 산출 페이지
├── AutoCalculationWithTabs.tsx   # 탭 기반 자동 산출
├── AutoCalculationSimulator.tsx  # 자동 산출 시뮬레이터
└── BomCalculationResults.tsx     # BOM 계산 결과
```

### 5.2 데이터 타입 정의

```typescript
// 견적 데이터 인터페이스 (QuoteManagement3Write.tsx)
interface QuoteData {
  id: string;
  registrationDate: string;
  quoteNumber: string;
  type: string;
  productCode: string;
  quantity: number;
  amount: number;
  client: string;
  manager: string;
  contact: string;
  remarks: string;

  // 수정 이력 관리
  currentRevision?: number;
  isFinal?: boolean;
  revisions?: QuoteRevision[];
  status?: 'draft' | 'sent' | 'approved' | 'rejected' | 'converted' | 'finalized';

  // 자동 산출 필드
  openSizeWidth: string;
  openSizeHeight: string;
  selectedProducts: string[];
  bomCalculations?: BOMCalculationRow[];

  // 자동 산출 설정
  autoCalculationSettings?: {
    productId?: string;
    productCategory?: string;
    openSizeWidth?: number;
    openSizeHeight?: number;
    guideRailInstallType?: string;
    motorPower?: string;
    controller?: string;
    quantity?: number;
  };
}

// 수식 인터페이스 (FormulaManagement2.tsx)
interface Formula {
  id: string;
  product: string;        // 공통 또는 특정 제품
  category: string;       // 카테고리
  name: string;           // 수식 이름
  variable: string;       // 변수명
  formula: string;        // 수식
  type: "calculation" | "range" | "mapping" | "input";
  ranges?: RangeItem[];   // 범위별 규칙
  outputType?: "variable" | "item";  // 결과 출력 타입
  items?: FormulaItem[];  // 품목 목록
}

// BOM 계산 행
interface BOMCalculationRow {
  id: string;
  itemCode: string;
  itemName: string;
  baseQuantity: number;
  calculatedQuantity: number;
  unit: string;
  unitPrice: number;
  totalPrice: number;
  formula?: string;
  formulaCategory?: string;
}
```

### 5.3 주요 유틸리티

```typescript
// 수식 평가 (formulaEvaluator.ts)
validateFormula(formula: string): boolean
evaluateFormula(formula: string, variables: Record<string, number>): number
extractVariables(formula: string): string[]

// 샘플 데이터 (sampleQuoteData_Complete.ts)
generateCompleteSampleQuoteData(): QuoteData[]

// BOM 추가 (addProductBoms.ts)
addProductBoms(products: Product[]): ProductWithBom[]
```

---

## 6. 데이터 흐름

### 6.1 견적 생성 흐름

```
1. 기본 정보 입력
   └─> 발주처, 현장명, 담당자, 연락처, 납기일

2. 자동 견적 산출 설정
   └─> 제품 선택, 오픈사이즈 입력, 가이드레일/모터/제어기 선택

3. 수식 기반 자동 산출
   └─> FormulaManagement2의 수식 순차 실행
   └─> 제작사이즈(W1, H1), 면적(M), 중량(K) 등 계산

4. BOM 계산
   └─> 품목별 수량 계산 (수식 적용)
   └─> 단가 조회 및 금액 계산

5. 견적서 생성
   └─> 번호기준관리 규칙으로 견적번호 자동 생성
   └─> 상태: 최초작성

6. 수정/확정
   └─> 수정 시 리비전 증가 (최초작성 → 1차수정 → 2차수정)
   └─> 최종확정 시 수정 불가
   └─> 수주전환 시 수주 데이터 생성
```

### 6.2 수식 실행 순서

```
카테고리 순서대로 실행:
1. 기본정보 (PC, W0, H0, GT, MP, CT, QTY, WS, INSP)
2. 제작사이즈 (W1 = W0 + 140, H1 = H0 + 350)
3. 면적 (M = W1 * H1 / 1000000)
4. 모터용량산출 (용량 = 범위별 계산)
5. 감기사프트
6. 브라켓&받침용영역
7. 가이드레일
8. 가이드레일설치유형
9. 셔터박스
10. 하단마감재
```

---

## 7. API 연동 가이드 (향후 개발용)

### 7.1 필요한 API 엔드포인트

```
# 견적 관리
GET    /api/v1/quotes                    # 견적 목록
POST   /api/v1/quotes                    # 견적 생성
GET    /api/v1/quotes/{id}               # 견적 상세
PUT    /api/v1/quotes/{id}               # 견적 수정
DELETE /api/v1/quotes/{id}               # 견적 삭제
POST   /api/v1/quotes/{id}/finalize      # 최종 확정
POST   /api/v1/quotes/{id}/convert       # 수주 전환

# 자동 산출
POST   /api/v1/quotes/calculate          # 자동 산출 실행
GET    /api/v1/quotes/{id}/bom           # BOM 결과 조회

# 수식 관리
GET    /api/v1/formulas                  # 수식 목록
POST   /api/v1/formulas                  # 수식 생성
PUT    /api/v1/formulas/{id}             # 수식 수정
DELETE /api/v1/formulas/{id}             # 수식 삭제

# 번호 기준 관리
GET    /api/v1/lot-rules                 # 번호규칙 목록
POST   /api/v1/lot-rules                 # 번호규칙 생성
POST   /api/v1/lot-rules/{id}/generate   # 번호 생성
```

### 7.2 데이터베이스 스키마 (예상)

```sql
-- 견적 테이블
CREATE TABLE quotes (
  id BIGINT PRIMARY KEY,
  tenant_id BIGINT NOT NULL,
  quote_number VARCHAR(50) UNIQUE,
  status ENUM('draft', 'sent', 'approved', 'rejected', 'converted', 'finalized'),
  client_id BIGINT,
  site_id BIGINT,
  manager VARCHAR(100),
  contact VARCHAR(50),
  receipt_date DATE,
  completion_date DATE,
  total_amount DECIMAL(15,2),
  discount_rate DECIMAL(5,2),
  final_amount DECIMAL(15,2),
  current_revision INT DEFAULT 0,
  is_final BOOLEAN DEFAULT FALSE,
  remarks TEXT,
  created_by BIGINT,
  updated_by BIGINT,
  created_at TIMESTAMP,
  updated_at TIMESTAMP,
  deleted_at TIMESTAMP
);

-- 견적 품목 테이블
CREATE TABLE quote_items (
  id BIGINT PRIMARY KEY,
  quote_id BIGINT NOT NULL,
  item_code VARCHAR(50),
  item_name VARCHAR(200),
  specification VARCHAR(100),
  quantity DECIMAL(10,4),
  unit VARCHAR(20),
  unit_price DECIMAL(15,2),
  total_price DECIMAL(15,2),
  formula VARCHAR(500),
  formula_category VARCHAR(100),
  sort_order INT,
  created_at TIMESTAMP,
  updated_at TIMESTAMP
);

-- 견적 자동산출 설정
CREATE TABLE quote_calculation_settings (
  id BIGINT PRIMARY KEY,
  quote_id BIGINT NOT NULL,
  product_id BIGINT,
  product_category VARCHAR(50),
  open_size_width INT,
  open_size_height INT,
  guide_rail_type VARCHAR(50),
  motor_power VARCHAR(50),
  controller VARCHAR(50),
  quantity INT,
  edge_wing_size INT,
  inspection_fee DECIMAL(10,2),
  created_at TIMESTAMP,
  updated_at TIMESTAMP
);

-- 수식 테이블
CREATE TABLE formulas (
  id BIGINT PRIMARY KEY,
  tenant_id BIGINT NOT NULL,
  product_id BIGINT, -- NULL = 공통
  category VARCHAR(100),
  name VARCHAR(200),
  variable VARCHAR(50),
  formula TEXT,
  type ENUM('calculation', 'range', 'mapping', 'input'),
  output_type ENUM('variable', 'item'),
  description TEXT,
  sort_order INT,
  is_active BOOLEAN DEFAULT TRUE,
  created_at TIMESTAMP,
  updated_at TIMESTAMP,
  deleted_at TIMESTAMP
);

-- 번호 기준 규칙
CREATE TABLE lot_number_rules (
  id BIGINT PRIMARY KEY,
  tenant_id BIGINT NOT NULL,
  rule_name VARCHAR(100),
  apply_to JSON, -- ['quote', 'salesOrder', 'production', 'shipping', 'purchase']
  prefix VARCHAR(20),
  separator VARCHAR(5),
  use_date BOOLEAN DEFAULT TRUE,
  date_format VARCHAR(20),
  sequence_digits INT,
  is_active BOOLEAN DEFAULT TRUE,
  description TEXT,
  created_at TIMESTAMP,
  updated_at TIMESTAMP
);
```

---

## 8. 참고 자료

### 8.1 이미지 분석 폴더 구조

```
docs/data/견적/
├── 견적산출_Flow.pdf              # 전체 플로우 다이어그램
├── 견적관리 목록/                  # 목록 화면
│   ├── 견적관리_목록.png
│   ├── 견적관리_목록_테이블 수정모드.png
│   ├── 견적관리_목록_상태별 탭 처리.png
│   ├── 일괄삭제.png
│   └── 개별삭제.png
├── 견적관리목록/                   # 등록 화면
│   ├── 견적등록 (3컬럼).png
│   ├── 거래처 선택.png
│   ├── 현장명 선택.png
│   ├── 자동 산출 결과 리스트.png
│   ├── 다중 견적 산출 시.png
│   └── 필수 항목 벨리데이션 체크.png
├── 견적상세/                       # 상세 화면
│   ├── 견적관리_상세 (3컬럼).png
│   ├── 견적서.png
│   └── 견적산출내역서.png
├── 기준정보_견적수식관리/          # 수식 관리
│   ├── 기준정보_견적수식관리_품목수식관리 섹션.png
│   ├── 수식추가.png
│   ├── 수식 수정.png
│   ├── 카테고리 추가.png
│   ├── 계산식_품목.png
│   ├── 계산식_변수.png
│   └── 입력값.png
├── 단가분류관리/                   # 단가 분류
│   └── 기준정보_견적수식관리_단가계산분류관리섹션.png
├── 단가수식관리/                   # 단가 수식
│   └── AppContent.png
└── 번호기준관리/                   # 번호 규칙
    ├── 기준정보_번호기준관리_목록.png
    └── 기준정보_번호기준관리_상세.png
```

### 8.2 관련 문서

- `design/src/QUOTE_AUTO_CALCULATION_GUIDE.md` - 자동 산출 가이드
- `design/src/FORMULA_MANAGEMENT_GUIDE.md` - 수식 관리 가이드
- `design/src/ERP_QUOTATION_GUIDE.md` - ERP 견적 가이드

---

## 9. 개발 체크리스트

### 9.1 API 개발 체크리스트

- [ ] 견적 CRUD API 구현
- [x] 자동 산출 API 구현 ✅ (2026-01-02)
  - `POST /api/v1/quotes/calculate/bom` - 단건 BOM 산출
  - `POST /api/v1/quotes/calculate/bom/bulk` - 다건 BOM 산출
- [x] BOM 계산 API 구현 ✅ (2026-01-02)
  - React camelCase ↔ API 약어 필드 매핑 지원
  - 성공/실패 요약 제공
- [ ] 수식 관리 API 구현
- [ ] 번호 기준 관리 API 구현
- [ ] 견적서 PDF 생성 API 구현
- [ ] 수주 전환 API 구현

### 9.2 프론트엔드 연동 체크리스트

- [x] API 클라이언트 설정 ✅ (2026-01-02)
  - `src/lib/api/quote.ts` - QuoteApiClient 클래스
- [ ] DataContext API 연동
- [ ] 견적 목록 API 연동
- [x] 견적 등록/수정 API 연동 ✅ (2026-01-02)
  - `QuoteRegistration.tsx` - 자동산출 기능 구현
  - FormField type="custom" 렌더링 수정
  - API 요청 구조 및 응답 파싱 완료
- [x] 자동 산출 API 연동 ✅ (2026-01-02)
  - 다건 BOM 산출 API 연동
  - 총 견적금액 표시 기능
- [ ] 수식 관리 API 연동
- [ ] 번호 기준 API 연동

### 9.3 React-API 필드 매핑 (참조)

| React 필드 | API 변수 | 설명 |
|-----------|---------|------|
| openWidth | W0 | 개구부 폭 (mm) |
| openHeight | H0 | 개구부 높이 (mm) |
| quantity | QTY | 수량 |
| guideRailType | GT | 가이드레일 타입 (wall/floor) |
| motorPower | MP | 모터 출력 (single/three) |
| controller | CT | 제어반 (basic/smart) |
| wingSize | WS | 마구리 날개치수 |
| inspectionFee | INSP | 검사비 |

---

*문서 작성일: 2025-12-04*
*최종 수정일: 2026-01-02*
*버전: 1.1*
