# Phase 3: mng 견적 기능 구현

> **목표:** 5130 수식을 mng에 적용, 품목 단가 연동 완료
> **구현일:** 2025-12-19
> **상태:** ✅ 완료

---

## 체크리스트

- [x] getItemPrice() 연동 구현
- [x] Price 모델 생성 (mng)
- [x] Seeder 확인 및 실행 방법 문서화
- [x] 구현 문서 작성
- [ ] Seeder 실행 (수동 필요)

---

## 산출물

| 파일 | 설명 | 상태 |
|------|------|------|
| [README.md](./README.md) | 구현 요약 | ✅ |
| [implementation.md](./implementation.md) | 구현 상세 | ✅ |
| [table-mapping.md](./table-mapping.md) | 테이블 매핑 | ✅ |

---

## 구현 요약

### 1. Price 모델 생성

**파일:** `mng/app/Models/Price.php`

- prices 테이블 연동 모델
- `getCurrentPrice()`: 현재 유효 단가 조회
- `getSalesPriceByItemCode()`: 품목 코드로 판매단가 조회

### 2. getItemPrice() 연동

**파일:** `mng/app/Services/Quote/FormulaEvaluatorService.php:324-335`

```php
private function getItemPrice(string $itemCode): float
{
    $tenantId = session('selected_tenant_id');

    if (!$tenantId) {
        $this->errors[] = "테넌트 ID가 설정되지 않았습니다.";
        return 0;
    }

    return \App\Models\Price::getSalesPriceByItemCode($tenantId, $itemCode);
}
```

### 3. Seeder 실행 방법

```bash
# api 프로젝트에서 실행
cd /Users/hskwon/Works/@KD_SAM/SAM/api

# 카테고리 먼저
php artisan db:seed --class=QuoteFormulaCategorySeeder

# 수식 데이터
php artisan db:seed --class=QuoteFormulaSeeder

# 확인
php artisan tinker --execute="echo DB::table('quote_formula_categories')->count();"
php artisan tinker --execute="echo DB::table('quote_formulas')->count();"
```

---

## 5130 vs 현재 Seeder 비교

### 5130 분석 항목 (19개)

1. 검사비
2. 주자재 (스크린/슬랫)
3. 조인트바
4. 모터
5. 연동제어기
6. 케이스
7. 케이스용 연기차단재
8. 케이스 마구리
9. 모터 받침용 앵글
10. 가이드레일
11. 레일용 연기차단재
12. 하장바
13. L바
14. 보강평철
15. 감기샤프트
16. 무게평철
17. 환봉
18. 각파이프
19. 앵글

### 현재 Seeder 포함 항목

- ✅ 오픈사이즈 (W0, H0)
- ✅ 제작사이즈 (W1, H1)
- ✅ 면적 (M)
- ✅ 중량 (K)
- ✅ 가이드레일
- ✅ 케이스
- ✅ 모터
- ✅ 제어기
- ✅ 마구리
- ✅ 검사비

### 추가 필요 항목 (Phase 4 또는 추후)

- 조인트바, 연기차단재, 하장바, L바 등 세부 항목

---

## 다음 단계

1. **Seeder 실행** - 관리자가 직접 실행
2. **Phase 4: API 개발** - 견적 계산 REST API 구현
3. **5130 세부 수식 추가** - 추후 작업

---

## 참조

- [Phase 1: 5130 분석](../phase-1-5130-analysis/README.md)
- [Phase 2: mng 분석](../phase-2-mng-analysis/README.md)
- [MASTER_PLAN.md](../MASTER_PLAN.md)
