docs(simulator): Phase 7 제품 유형별 테스트 결과 문서화

- 철재 제품(FG-STL-001) 테스트 결과 추가
  - W1=2110, K=150.34 (M×25 공식) 검증 완료
  - 총액: 3,158,111원
- 절곡 제품(FG-BND-001) 테스트 결과 추가
  - CategoryGroup에 "절곡" 카테고리 추가
  - 총액: 727,893원
- 스크린 제품(FG-SCR-001) 재검증 완료
  - 총액: 1,711,225원
- 제품 유형별 검증 결과 요약 섹션 추가

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-30 14:46:26 +09:00
parent b206875a8c
commit 7d639bb584

View File

@@ -1,6 +1,6 @@
# 견적 시뮬레이터 완전 동기화 계획
> **작성일**: 2025-12-23 (업데이트: 2025-12-29)
> **작성일**: 2025-12-23 (업데이트: 2025-12-30)
> **목표**: design.sam.kr 시뮬레이터와 mng 시뮬레이터가 **동일한 결과**를 출력하도록 완전 동기화
---
@@ -919,4 +919,139 @@ private function getItemPrice(string $itemCode): float
---
## 11. Phase 7: 철재 제품 테스트 케이스 (2025-12-30)
### 11.1 작업 개요
| 항목 | 내용 |
|------|------|
| 작업일 | 2025-12-30 |
| 목적 | 철재 제품(FG-STL-*) 마진값/중량 계산 동기화 및 CategoryGroup 적용 |
| 테스트 완제품 | FG-STL-001 (철재 방화문) |
| 입력값 | W0=2000, H0=2500 |
### 11.2 수정 사항
#### 11.2.1 마진값 동적 적용 (SCREEN/STEEL 분기)
**파일**: `mng/app/Services/Quote/FormulaEvaluatorService.php`
| 제품 카테고리 | 마진 W | 마진 H | K 계산식 |
|-------------|-------|-------|---------|
| SCREEN (스크린) | W0+140 | H0+350 | M×2 + W0/1000×14.17 |
| STEEL (철재) | W0+110 | H0+350 | M×25 |
**변경 내용**:
```php
// 제품 카테고리에 따른 마진값 결정
if (strtoupper($productCategory) === 'STEEL') {
$marginW = 110; // 철재 마진
$K = $M * 25; // 철재 중량
} else {
$marginW = 140; // 스크린 기본 마진
$K = $M * 2 + ($W0 / 1000) * 14.17; // 스크린 중량
}
```
#### 11.2.2 CategoryGroup 데이터 생성 (tenant 287)
**문제**: CategoryGroup 데이터가 tenant_id=1에만 존재, tenant_id=287 미등록
**해결**: tenant 287용 CategoryGroup 3종 생성
| 코드 | 이름 | 승수변수 | 포함 카테고리 |
|------|------|---------|-------------|
| area_based | 면적기반 | M | 원단, 패널, 도장, 표면처리, 유리, 도어, 프레임, 창틀 |
| weight_based | 중량기반 | K | 강판, 알루미늄, 스테인리스, 철재 |
| quantity_based | 수량기반 | (없음) | 볼트, 경첩, 도어락, 도어클로저, 실링재, 문턱, 킥플레이트 등 |
### 11.3 테스트 결과
#### 11.3.1 변수 계산 검증
| 변수 | 계산값 | 예상값 | 상태 |
|------|-------|-------|------|
| W1 | 2110 | 2110 (W0+110) | ✅ |
| H1 | 2850 | 2850 (H0+350) | ✅ |
| M | 6.0135 ㎡ | 6.0135 | ✅ |
| K | 150.34 kg | 150.34 (M×25) | ✅ |
| PC | STEEL | STEEL | ✅ |
#### 11.3.2 CategoryGroup 적용 검증
| 품목 | 카테고리 | CategoryGroup | 기준단가 | 승수 | 최종단가 |
|------|---------|--------------|---------|------|---------|
| 철재 도어 | 도어 | area_based | 320,000 | M×6.01 | 1,924,320원 |
| 철재 프레임 | 프레임 | area_based | 58,000 | M×6.01 | 348,783원 |
| 철재 패널 | 패널 | area_based | 68,000 | M×6.01 | 408,918원 |
| 경첩 세트 | 경첩 | quantity_based | 42,000 | - | 42,000원 |
| 도어락 | 도어락 | quantity_based | 95,000 | - | 95,000원 |
| 도어클로저 | 도어클로저 | quantity_based | 115,000 | - | 115,000원 |
| 실링재 | 실링재 | quantity_based | 9,500 | - | 9,500원 |
| 문턱 | 문턱 | quantity_based | 58,000 | - | 58,000원 |
| 킥플레이트 | 킥플레이트 | quantity_based | 45,000 | - | 45,000원 |
| 볼트 세트 | 볼트 | quantity_based | 18,000 | - | 18,000원 |
**최종 합계**: 3,158,111원 ✅
### 11.4 수정된 파일
| 파일 | 수정 내용 |
|------|----------|
| `FormulaEvaluatorService.php` | 마진값/K계산 동적 분기, `getItemDetails()`에 item_category 추가 |
| `category_groups` (DB) | tenant 287용 3개 그룹 생성 |
### 11.5 성공 기준 달성
| 기준 | 달성 | 비고 |
|------|------|------|
| 철재 마진 적용 | ✅ | W+110 정상 적용 |
| 철재 중량 계산 | ✅ | M×25 정상 적용 |
| CategoryGroup 매칭 | ✅ | area_based, quantity_based 정상 |
| 면적기반 단가 계산 | ✅ | base_price × M 정상 |
| 수량기반 단가 계산 | ✅ | base_price 그대로 적용 |
### 11.6 절곡 제품 테스트 (FG-BND-001)
#### 테스트 결과
| 변수 | 계산값 | 상태 |
|------|-------|------|
| W1 | 2110 (W0+110) | ✅ 철재 마진 적용 |
| M | 6.0135 ㎡ | ✅ |
| K | 150.34 kg (M×25) | ✅ 철재 중량 |
| PC | STEEL | ✅ |
#### CategoryGroup 수정
**문제**: "절곡" 카테고리가 CategoryGroup 미등록 → 단가 0원
**해결**: `area_based`에 "절곡" 카테고리 추가
```json
// area_based categories (수정 후)
["원단","패널","도장","표면처리","스크린원단","유리","도어","프레임","창틀","절곡"]
```
#### 수정 후 단가 계산
| 품목 | CategoryGroup | 기준단가 | 승수 | 최종단가 |
|------|--------------|---------|------|---------|
| 절곡 | area_based | 28,000 | M×6.01 | 168,378원 |
| 프레임 | area_based | 58,000 | M×6.01 | 348,783원 |
| 도장 | area_based | 32,000 | M×6.01 | 192,432원 |
| 볼트 | quantity_based | 18,000 | - | 18,000원 |
**최종 합계**: 727,893원 ✅
### 11.7 전체 제품 유형 검증 완료
| 제품 유형 | 코드 | 마진 | K 계산 | 합계 |
|----------|------|------|--------|------|
| 스크린 | FG-SCR-001 | W+140 ✅ | M×2+W0/1000×14.17 ✅ | 1,711,225원 |
| 철재 | FG-STL-001 | W+110 ✅ | M×25 ✅ | 3,158,111원 |
| 절곡 | FG-BND-001 | W+110 ✅ | M×25 ✅ | 727,893원 |
---
*이 문서는 design.sam.kr 완전 분석을 바탕으로 mng 시뮬레이터 완전 동기화 계획을 상세히 기술합니다.*