# 견적 시스템 개발 계획 > **작성일**: 2025-12-24 > **목표**: mng 수식 시뮬레이터를 완전한 견적 시스템으로 확장 후 React API 개발 --- ## 1. 개발 단계 ### Stage 1: mng 견적 시스템 완성 (현재) **목표**: 스크린샷과 동일한 견적 시스템을 mng Plain Blade로 구현 ### Stage 2: API 개발 **목표**: React 프론트엔드에서 호출할 견적 산출 REST API 개발 --- ## 2. 현재 상태 vs 목표 상태 ### 2.1 입력 폼 비교 | 필드 | 현재 시뮬레이터 | 목표 (스크린샷) | 상태 | |------|----------------|----------------|------| | 층수 | ❌ | 예: 1층, B1, 지하1층 | 추가 필요 | | 부호 | ❌ | 예: A, B, C | 추가 필요 | | 제품 카테고리 (PC) | ✅ | 스크린, 철재 등 | 완료 | | 제품명 | ✅ | 방화 스크린 셔터 등 | 완료 | | 오픈사이즈 W0 | ✅ | 가로 | 완료 | | 오픈사이즈 H0 | ✅ | 세로 | 완료 | | 가이드레일 설치유형 (GT) | ✅ | 벽면형, 측면형 | 완료 | | 모터 전원 (MP) | ✅ | 220V, 380V | 완료 | | 연동제어기 (CT) | ✅ | 단독, 연동 | 완료 | | 수량 (QTY) | ✅ | 1, 2, 3... | 완료 | | 마구리 날개치수 (WS) | ❌ | 50 등 | 추가 필요 | | 검사비 (INSP) | ❌ | 50000 등 | 추가 필요 | ### 2.2 출력 결과 비교 | 섹션 | 현재 시뮬레이터 | 목표 (스크린샷) | 상태 | |------|----------------|----------------|------| | 입력 정보 요약 | ❌ | 제품명, 카테고리, 오픈사이즈, 설치유형 등 요약 | 추가 필요 | | 기본 산출 공식 | ❌ | 제작폭(W1), 제작높이(H1), 면적(M), 중량(K) 표시 | 추가 필요 | | BOM 목록 테이블 | ⚠️ 공정별 그룹화 | 순번, 품목코드, 품목명, 품목유형, 규격, 기준수량, 산출수량, 단위, 단가, 금액, 작업 | 구조 변경 필요 | | 품목 추가/삭제 | ❌ | + 품목 추가 버튼, 휴지통 삭제 버튼 | 추가 필요 | | 할인율 | ❌ | 할인율(%) 입력 | 추가 필요 | | 금액 요약 | ⚠️ 합계만 | 합계, 공급가, 최종 금액 | 확장 필요 | --- ## 3. Stage 1: mng 견적 시스템 상세 계획 ### Phase 1: UI 확장 (1일) **파일**: `resources/views/quote-formulas/simulator.blade.php` #### 1.1 입력 폼 확장 ``` 추가 필드: - 층수 (floor): text input, placeholder "예: 1층, B1, 지하1층" - 부호 (code): text input, placeholder "예: A, B, C" - 마구리 날개치수 (WS): number input, default 50 - 검사비 (INSP): number input, default 50000 ``` #### 1.2 견적 항목 다중 입력 ``` - 견적 1, 견적 2, ... 탭 형태 - "+ 견적 추가" 버튼 - 복사, 삭제 버튼 ``` #### 1.3 결과 출력 섹션 ``` 1. 입력 정보 요약 카드 - 제품명, 제품 카테고리, 오픈사이즈, 가이드레일 설치, 모터 전원, 연동제어기, 수량 2. 기본 산출 공식 카드 - 제작폭 (W1): 값 + 계산식 - 제작높이 (H1): 값 + 계산식 - 면적 (M): 값 + 단위 - 중량 (K): 값 + 단위 3. 부품구성표(BOM) 목록 테이블 - 컬럼: 순번, 품목코드, 품목명, 품목유형, 규격, 기준수량, 산출수량, 단위, 단가, 금액, 작업 - "+ 품목 추가" 버튼 - 행별 삭제 버튼 4. 금액 요약 - 할인율(%) 입력 - 합계, 공급가, 최종 금액 ``` ### Phase 2: 백엔드 로직 확장 (1일) **파일**: `app/Services/Quote/FormulaEvaluatorService.php` #### 2.1 executeAll() 반환 구조 확장 ```php return [ 'input_summary' => [ 'product_name' => '방화 스크린 셔터 (소형)', 'product_category' => '스크린', 'open_size' => 'W2000 × H2500', 'guide_rail_type' => '벽면형', 'motor_power' => '220V', 'controller' => '단독', 'quantity' => 1, ], 'calculation_formula' => [ 'W1' => ['value' => 2140, 'formula' => 'W0 + 140'], 'H1' => ['value' => 2850, 'formula' => 'H0 + 350'], 'M' => ['value' => 6.10, 'unit' => '㎡'], 'K' => ['value' => 0.00, 'unit' => 'kg'], ], 'bom_items' => [ [ 'seq' => 1, 'item_code' => 'SF-SCR-F01', 'item_name' => '스크린 원단', 'item_type' => 'SF', 'spec' => '-', 'base_quantity' => 1.10, 'calculated_quantity' => 6.099, 'unit' => 'M2', 'unit_price' => 213465, 'total_price' => 1301923.035, 'editable' => true, ], // ... more items ], 'summary' => [ 'subtotal' => 2806523.035, 'discount_rate' => 0, 'discount_amount' => 0, 'supply_price' => 2806523.035, 'total_amount' => 2806523.035, ], ]; ``` ### Phase 3: 검사비 품목 추가 (0.5일) **파일**: `database/seeders/DesignItemSeeder.php` ```php // 서비스 품목 추가 $serviceItems = [ ['code' => 'SVC-INSP', 'name' => '검사비', 'unit' => '식', 'price' => 50000, 'type' => 'CS'], ['code' => 'SVC-INSTALL', 'name' => '설치비', 'unit' => '식', 'price' => 100000, 'type' => 'CS'], ['code' => 'SVC-DELIVERY', 'name' => '운송비', 'unit' => '식', 'price' => 80000, 'type' => 'CS'], ]; ``` ### Phase 4: 테스트 및 검증 (0.5일) - Playwright로 전체 플로우 테스트 - Design 시스템 결과와 비교 검증 --- ## 4. Stage 2: API 개발 상세 계획 ### Phase 1: API 엔드포인트 설계 (0.5일) #### 4.1 견적 산출 API ``` POST /api/v1/quotes/calculate Request: { "items": [ { "floor": "1층", "code": "A", "product_category": "screen", "product_id": "screen_standard", "open_width": 2000, "open_height": 2500, "guide_rail_type": "wall", "motor_power": "220V", "controller": "single", "quantity": 1, "wing_size": 50, "inspection_fee": 50000 } ], "discount_rate": 0 } Response: { "success": true, "data": { "quotes": [ { "quote_id": "quote-1", "input_summary": { ... }, "calculation_formula": { ... }, "bom_items": [ ... ], "summary": { ... } } ], "total_summary": { "total_items": 1, "total_amount": 2806523.035 } } } ``` #### 4.2 제품 목록 API ``` GET /api/v1/quotes/products?category=screen Response: { "success": true, "data": [ { "id": "screen_standard", "name": "스크린 셔터 (표준형)", "category": "screen" } ] } ``` #### 4.3 옵션 목록 API ``` GET /api/v1/quotes/options Response: { "success": true, "data": { "product_categories": [...], "guide_rail_types": [...], "motor_powers": [...], "controllers": [...] } } ``` ### Phase 2: API 컨트롤러 구현 (1일) **파일**: `api/app/Http/Controllers/Api/V1/QuoteCalculationController.php` ### Phase 3: API 테스트 (0.5일) - Postman/Swagger 테스트 - React 연동 테스트 --- ## 5. 일정 요약 | Stage | Phase | 작업 내용 | 예상 일정 | |-------|-------|----------|----------| | **Stage 1** | Phase 1 | mng UI 확장 | 1일 | | | Phase 2 | 백엔드 로직 확장 | 1일 | | | Phase 3 | 검사비 품목 추가 | 0.5일 | | | Phase 4 | 테스트 및 검증 | 0.5일 | | | **소계** | | **3일** | | **Stage 2** | Phase 1 | API 설계 | 0.5일 | | | Phase 2 | API 구현 | 1일 | | | Phase 3 | API 테스트 | 0.5일 | | | **소계** | | **2일** | | **합계** | | | **5일** | --- ## 6. 파일 구조 ### Stage 1 (mng) ``` /SAM/mng/ ├── app/Services/Quote/ │ └── FormulaEvaluatorService.php # 로직 확장 ├── database/seeders/ │ └── DesignItemSeeder.php # 서비스 품목 추가 └── resources/views/quote-formulas/ └── simulator.blade.php # UI 확장 ``` ### Stage 2 (api) ``` /SAM/api/ ├── app/Http/Controllers/Api/V1/ │ └── QuoteCalculationController.php # 신규 ├── app/Services/Quote/ │ └── QuoteCalculationService.php # 신규 (또는 mng 서비스 공유) └── routes/ └── api.php # 라우트 추가 ``` --- ## 7. 성공 기준 ### Stage 1 1. ✅ 스크린샷과 동일한 입력 폼 (층수, 부호, WS, INSP 포함) 2. ✅ 입력 정보 요약 섹션 표시 3. ✅ 기본 산출 공식 섹션 표시 4. ✅ BOM 테이블 (순번~금액 컬럼) 5. ✅ 품목 추가/삭제 기능 6. ✅ 할인율 + 최종 금액 계산 ### Stage 2 1. ✅ POST /api/v1/quotes/calculate 정상 작동 2. ✅ GET /api/v1/quotes/products 정상 작동 3. ✅ GET /api/v1/quotes/options 정상 작동 4. ✅ Swagger 문서화 완료 5. ✅ React에서 API 호출 테스트 완료 --- ## 8. 참고 문서 - `docs/plans/simulator-calculation-logic-mapping.md` - 계산 로직 상세 - `react/src/components/quotes/QuoteRegistration.tsx` - React UI 참조 - `design/src/components/AutoCalculationSimulator.tsx` - Design 시뮬레이터 참조 --- *이 문서는 mng 견적 시스템 완성 및 API 개발 계획을 정의합니다.*