docs: 품목 마이그레이션 완료 및 견적 로직 계획 추가

- kd-items-migration-plan.md: 정적 데이터 마이그레이션 완료 표시
  - Phase 4 검증 결과 추가 (items 651건, prices 651건)
  - 후속 작업으로 kd-quote-logic-plan.md 연결

- kd-quote-logic-plan.md: 신규 생성
  - 5130 견적 로직 분석 계획
  - 동적 BOM 계산 (모터/제어기/부자재)
  - Phase 0~5 작업 계획

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-28 23:01:40 +09:00
parent 12da22ad80
commit cc049ce5e0
2 changed files with 257 additions and 25 deletions

View File

@@ -69,11 +69,15 @@ docker exec sam-mysql-1 mysql -uroot -proot samdb -e "SELECT COUNT(*) FROM items
| 항목 | 내용 |
|------|------|
| **마지막 완료 작업** | Phase 4 검증 완료 ✅ |
| **다음 작업** | 개발서버 배포 (⚠️ 사용자 승인 필요) |
| **진행률** | 4/4 (100%) - 로컬 검증 완료 |
| **마지막 완료 작업** | **정적 데이터 마이그레이션 완료** |
| **다음 작업** | 동적 BOM/견적 로직 구현 → [kd-quote-logic-plan.md](./kd-quote-logic-plan.md) |
| **진행률** | 4/4 (100%) - 정적 데이터 완료 |
| **마지막 업데이트** | 2026-01-28 |
> ⚠️ **주의**: 이 문서는 **정적 품목/단가 데이터 이관**만 다룹니다.
> 동적 BOM 계산, 모터/제어기/부자재 자동 추가 등 **견적 로직**은 별도 문서 참조:
> → [kd-quote-logic-plan.md](./kd-quote-logic-plan.md)
### Phase 1~3 실행 결과 ✅
| 소스 | 타입 | 건수 |
@@ -104,34 +108,43 @@ docker exec sam-mysql-1 mysql -uroot -proot samdb -e "SELECT COUNT(*) FROM items
- RM-010~RM-011: 화이바원단, 와이어원단
- 중복 확인: KDunitprice 기존 품목과 명칭 비교로 중복 제외
### 다음 작업 상세
### Phase 4 검증 결과 ✅
**Phase 4: 검증 및 배포**
**로컬 검증 완료 (2026-01-28):**
- 건수 검증 (items 651건, prices 651건, BOM 18건)
- API 테스트 (/api/v1/items 목록 조회)
- 개발서버 배포 (⚠️ 사용자 승인 필요)
| 검증 항목 | 기대값 | 실제값 | 상태 |
|-----------|--------|--------|------|
| items 총 건수 | 651건 | 651건 | ✅ |
| prices 총 건수 | 651건 | 651건 | ✅ |
| BOM 연결 | 18건 | 18건 | ✅ |
| code 중복 | 0건 | 0건 | ✅ |
3. **실행 전 검증**:
```bash
# KDunitprice 데이터 확인 (⭐ 실제 컬럼명 사용)
docker exec sam-mysql-1 mysql -uroot -proot chandj -e "SELECT COUNT(*), item_div FROM KDunitprice WHERE is_deleted=0 GROUP BY item_div;"
docker exec sam-mysql-1 mysql -uroot -proot chandj -e "SELECT num, prodcode, item_name, item_div, spec, unit, unitprice FROM KDunitprice WHERE is_deleted=0 LIMIT 5;"
```
**item_type 분포:**
| item_type | 건수 |
|-----------|------|
| FG (완제품) | 470건 |
| PT (부품) | 88건 |
| SM (부자재) | 61건 |
| RM (원자재) | 28건 |
| CS (소모품) | 4건 |
4. **Seeder 실행**:
```bash
cd /Users/kent/Works/@KD_SAM/SAM/api
php artisan db:seed --class=Database\\Seeders\\Kyungdong\\KyungdongItemSeeder
```
### 후속 작업
5. **결과 확인**:
```bash
docker exec sam-mysql-1 mysql -uroot -proot samdb -e "SELECT item_type, COUNT(*) FROM items WHERE tenant_id=287 GROUP BY item_type;"
docker exec sam-mysql-1 mysql -uroot -proot samdb -e "SELECT COUNT(*) FROM prices WHERE tenant_id=287;"
```
**이 문서 범위 (정적 데이터):**
- ✅ 완료 - 개발서버 배포 대기 중
6. ⚠️ **실행 전 사용자 승인 필요**
**별도 문서 (동적 로직):**
- → [kd-quote-logic-plan.md](./kd-quote-logic-plan.md)
- 5130 견적 로직 분석
- 동적 BOM 계산 (모터/제어기/부자재)
- 파라미터 기반 절곡품 산출
### Seeder 재실행 방법
```bash
# Docker 컨테이너 내부에서 실행
docker exec sam-api-1 php artisan db:seed --class="Database\\Seeders\\Kyungdong\\KyungdongItemSeeder"
```
---

View File

@@ -0,0 +1,219 @@
# 경동기업 견적 로직 분석 및 구현 계획
> **작성일**: 2026-01-28
> **목적**: 5130 레거시 견적 시스템 분석 → SAM 동적 BOM/견적 로직 구현
> **선행 작업**: [kd-items-migration-plan.md](./kd-items-migration-plan.md) (정적 품목/단가 완료)
> **상태**: 🔵 분석 대기
---
## 🚀 Quick Start
### 이 문서의 목적
정적 품목 데이터는 이관 완료 (items 651건, prices 651건). 이제 **동적으로 BOM을 계산하고 견적을 산출하는 로직**을 5130에서 분석하여 SAM에 구현.
### 환경 정보
| 항목 | 값 |
|------|-----|
| 레거시 소스 | `5130/` (프로젝트 루트) |
| 대상 테넌트 | 287 (경동기업) |
| 관련 SAM 페이지 | https://dev.sam.kr/sales/quote-management/new |
---
## 📍 현재 진행 상태
| 항목 | 내용 |
|------|------|
| **현재 단계** | Phase 0: 분석 대기 |
| **다음 작업** | 5130 견적 로직 파일 탐색 |
| **진행률** | 0/5 (0%) |
| **마지막 업데이트** | 2026-01-28 |
---
## 1. 배경 및 문제 정의
### 1.1 현재 상황
**SAM 견적 화면에서 FG-KSS01-벽면형-SUS 선택 시:**
- 현재: 3개 항목만 표시 (가이드레일, 하단마감재, L-BAR)
- 기대: 본체, 절곡품, 모터/제어기, 부자재 등 전체 BOM
### 1.2 레거시 DB 구조 (분석 완료)
```
models (모델 마스터)
└─ parts (대분류 부품: 가이드레일, 하단마감재)
└─ parts_sub (세부 절곡품: 1번마감제, 2번본체, 3번-C, 4번-D...)
```
**KSS01 벽면형 예시:**
| 대분류 (parts) | 세부품 (parts_sub) | 재질 | 수량 |
|---------------|-------------------|------|------|
| 가이드레일 | 1번(마감제) | SUS 1.2T | 1 |
| | 2번(본체) | EGI 1.55T | 2 |
| | 3번(벽면형-C) | EGI 1.55T | 1 |
| | 4번(벽면형-D) | EGI 1.55T | 1 |
| 하단마감재 | 1번(하장바) | SUS 1.5T | 1 |
### 1.3 동적 항목 (5130 분석 필요)
| 항목 | 설명 | 레거시 소스 |
|------|------|-------------|
| 모터 | W0, H0 기반 용량 자동 계산 | 5130 로직 분석 필요 |
| 제어기 | 모터 사양에 따라 연동 | 5130 로직 분석 필요 |
| 부자재 | 모델/규격별 자동 추가 | 5130 로직 분석 필요 |
| 절곡품 수량 | 파라미터 기반 동적 계산 | 5130 로직 분석 필요 |
---
## 2. 분석 대상
### 2.1 5130 디렉토리 구조 (예상)
```
5130/
├── estimate/ # 견적 관련 (우선 분석)
├── output/ # 출력/리포트
├── dbeditor/ # DB 관리
└── [기타 모듈]/
```
### 2.2 분석 우선순위
| 순위 | 대상 | 목적 |
|------|------|------|
| 1 | 견적 생성 로직 | BOM 자동 구성 방식 파악 |
| 2 | 모터 계산 로직 | W0/H0 → 모터 용량 공식 |
| 3 | 절곡품 계산 로직 | 파라미터 → 수량/단가 공식 |
| 4 | 부자재 추가 로직 | 모델별 자동 추가 규칙 |
| 5 | 가격 산출 로직 | 최종 견적 금액 계산 |
---
## 3. 작업 계획
### Phase 0: 5130 탐색 및 구조 파악
- [ ] 5130/ 디렉토리 구조 분석
- [ ] 견적 관련 파일 식별
- [ ] 주요 함수/클래스 목록화
### Phase 1: 견적 생성 로직 분석
- [ ] 모델 선택 → BOM 구성 흐름 파악
- [ ] 동적 항목 추가 조건 분석
- [ ] DB 조회 패턴 파악
### Phase 2: 계산 공식 추출
- [ ] 모터 용량 계산 공식
- [ ] 절곡품 수량/단가 계산 공식
- [ ] 부자재 자동 추가 규칙
### Phase 3: SAM 설계
- [ ] API 엔드포인트 설계
- [ ] Service 클래스 설계
- [ ] DB 스키마 변경 필요 여부
### Phase 4: SAM 구현
- [ ] BOM 동적 계산 Service
- [ ] 견적 API 수정
- [ ] 프론트엔드 연동
### Phase 5: 검증
- [ ] 레거시 vs SAM 결과 비교
- [ ] 사용자 테스트
- [ ] 배포
---
## 4. 레거시 분석 기록
### 4.1 분석된 테이블
| 테이블 | 용도 | 분석 상태 |
|--------|------|-----------|
| models | 모델 마스터 | ✅ 완료 |
| parts | 대분류 부품 | ✅ 완료 |
| parts_sub | 세부 절곡품 | ✅ 완료 |
| BDmodels | BOM + 단가 JSON | ✅ 완료 |
| price_motor | 모터 단가 | ✅ 완료 |
| price_shaft | 샤프트 계산 참조 | ✅ 완료 |
| price_pipe | 파이프 계산 참조 | ✅ 완료 |
| price_raw_materials | 원자재 단가 | ✅ 완료 |
### 4.2 분석 예정 (5130 코드)
| 파일/모듈 | 예상 내용 | 분석 상태 |
|-----------|----------|-----------|
| estimate/* | 견적 생성 로직 | ⏳ 대기 |
| (TBD) | 모터 계산 | ⏳ 대기 |
| (TBD) | 절곡품 계산 | ⏳ 대기 |
---
## 5. 기술적 고려사항
### 5.1 SAM 아키텍처 준수
```php
// Service-First 패턴
class QuoteBomService extends Service
{
public function calculateDynamicBom(int $modelId, array $parameters): array
{
// 1. 정적 BOM 조회 (items.bom)
// 2. 파라미터 기반 동적 항목 계산
// 3. 모터/제어기 자동 추가
// 4. 부자재 자동 추가
// 5. 단가 계산
}
}
```
### 5.2 API 설계 (예상)
```
POST /api/v1/quotes/calculate-bom
Request:
{
"model_id": 13147, // FG-KSS01-벽면형-SUS
"parameters": {
"W0": 3000, // 폭
"H0": 2000, // 높이
"installation_type": "벽면형",
"power_source": "220V"
}
}
Response:
{
"static_bom": [...], // 기존 items.bom
"dynamic_items": [...], // 모터, 제어기, 부자재
"calculated_values": {
"motor_capacity": "150K",
"total_area": 6.0,
"estimated_weight": 45.5
},
"pricing": {...}
}
```
---
## 6. 관련 문서
- [kd-items-migration-plan.md](./kd-items-migration-plan.md) - 정적 품목/단가 이관 (완료)
- [kd-orders-migration-plan.md](./kd-orders-migration-plan.md) - 입고/재고/주문 이관
- SAM API Rules - api/CLAUDE.md
---
## 7. 변경 이력
| 날짜 | 항목 | 변경 내용 |
|------|------|----------|
| 2026-01-28 | 문서 생성 | 초기 계획 수립, 레거시 DB 분석 결과 반영 |
---
*이 문서는 5130 분석 진행에 따라 지속 업데이트됩니다.*