# 5130 → SAM 마이그레이션 진행 상황

> 마지막 업데이트: 2025-12-21
> 현재 Phase: **Phase 5 완료**

---

## 전체 진행률

| Phase | 상태 | 진행률 |
|-------|------|--------|
| Phase 1: 소스 분석 (5130) | ✅ 완료 | 100% |
| Phase 2: 타겟 분석 (SAM) | ✅ 완료 | 100% |
| Phase 3: 매핑 설계 | ✅ 완료 | 100% |
| Phase 4: 마이그레이션 개발 | ✅ 완료 | 100% |
| Phase 5: 실행 및 검증 | ✅ 완료 | 100% |

---

## 핵심 설정

| 항목 | 값 |
|------|-----|
| **tenant_id** | 287 (경동기업) |
| **제외** | 주일기업 (별도 테넌트로 추후 진행) |

---

## Phase 1: 소스 분석 (5130) ✅ 완료

### 핵심 발견 사항

| 테이블 | 레코드 | 역할 |
|--------|--------|------|
| models | 18 | 완제품 (KSS01, KSE01) |
| parts | 36 | 부품 |
| parts_sub | 117 | 원자재 |
| BDmodels | 59 | 부품 (savejson에 BOM 포함) |

**산출물:** `phase-1-source-analysis/5130-item-schema.md`

---

## Phase 2: 타겟 분석 (SAM) ✅ 완료

### 핵심 발견 사항

- `items` 통합 테이블 (item_type으로 구분)
- `item_id_mappings` 레거시 ID 추적용
- `entity_relationships` 관계 정의

**산출물:** `phase-2-target-analysis/sam-item-schema.md`

---

## Phase 3: 매핑 설계 ✅ 완료

### 체크리스트
- [x] 상세 필드 매핑 테이블 작성
- [x] 타입 변환 규칙 정의
- [x] tenant_id 할당 전략 (287 - 경동기업)
- [x] 코드 생성 규칙 정의
- [x] 관계 매핑 설계

### 테이블 매핑 요약

| 5130 | → | SAM items | item_type |
|------|---|-----------|-----------|
| models (18) | → | items | FG (완제품) |
| parts (36) | → | items | PT (부품) |
| parts_sub (117) | → | items | RM (원자재) |
| BDmodels (59) | → | items | PT (부품) |
| BDmodels.savejson (195) | → | items | RM (원자재) |

### 관계 매핑

| 5130 관계 | → | SAM |
|-----------|---|-----|
| parts.model_id → models | → | entity_relationships |
| parts_sub.part_id → parts | → | entity_relationships |
| BDmodels → savejson items | → | entity_relationships |

**산출물:** `phase-3-mapping/field-mapping.md`

---

## Phase 4: 마이그레이션 개발 ✅ 완료

### 체크리스트
- [x] 마이그레이션 스크립트 설계
- [x] 마이그레이션 순서 확정
- [x] Laravel Command 작성 (`php artisan migrate:5130-items`)
- [x] 검증 쿼리 작성
- [x] 롤백 스크립트 작성

### 마이그레이션 순서 (실행 완료)

1. ✅ models → items (FG)
2. ✅ parts → items (PT)
3. ✅ parts_sub → items (RM)
4. ✅ BDmodels → items (PT)
5. ✅ BDmodels.savejson → items (RM) + entity_relationships
6. ✅ models↔parts 관계 → entity_relationships
7. ✅ parts↔parts_sub 관계 → entity_relationships
8. ✅ item_id_mappings 기록

**산출물:** `api/app/Console/Commands/Migrate5130Items.php`

---

## Phase 5: 실행 및 검증 ✅ 완료

### 체크리스트
- [x] 테스트 환경 마이그레이션
- [x] 데이터 정합성 검증
- [x] 오류 수정 및 재시도
- [x] 최종 마이그레이션
- [x] 완료 리포트 작성

### 최종 마이그레이션 결과

#### items 테이블 (tenant_id=287)

| item_type | 건수 | 설명 |
|-----------|------|------|
| CS | 5 | 기존 데이터 |
| FG | 20 | 완제품 (models 18 + 기존 2) |
| PT | 100 | 부품 (parts 36 + BDmodels 59 + 기존 5) |
| RM | 314 | 원자재 (parts_sub 117 + BDmodels_bom 195 + 기존 2) |
| SM | 2 | 기존 데이터 |
| **Total** | **441** | |

#### 5130 출처 items 상세

| source_table | 건수 |
|--------------|------|
| models | 18 |
| parts | 36 |
| parts_sub | 117 |
| BDmodels | 59 |
| BDmodels_bom | 195 |
| **Total** | **425** |

#### item_id_mappings

| source_table | 건수 |
|--------------|------|
| models | 18 |
| parts | 36 |
| parts_sub | 117 |
| BDmodels | 59 |
| materials | 354 (기존) |
| products | 6 (기존) |
| **Total** | **590** |

#### entity_relationships (tenant_id=287)

| 관계 유형 | 건수 |
|-----------|------|
| models ↔ parts | 36 |
| parts ↔ parts_sub | 117 |
| BDmodels ↔ BDmodels_bom | 195 |
| 기타 | 91 |
| **Total** | **439** |

---

## 명령어 레퍼런스

```bash
# 전체 마이그레이션 (dry-run)
php artisan migrate:5130-items --dry-run

# 전체 마이그레이션 (실제 실행)
php artisan migrate:5130-items --tenant_id=287

# 특정 단계만 실행
php artisan migrate:5130-items --step=models
php artisan migrate:5130-items --step=parts
php artisan migrate:5130-items --step=parts_sub
php artisan migrate:5130-items --step=bdmodels
php artisan migrate:5130-items --step=relations

# 롤백
php artisan migrate:5130-items --rollback
```

---

## 작업 로그

| 날짜 | 작업 내용 | 결과 |
|------|----------|------|
| 2025-12-21 | 마스터 플랜 문서 작성 | ✅ 완료 |
| 2025-12-21 | Phase 1: 5130 DB 스키마 분석 | ✅ 완료 |
| 2025-12-21 | Phase 2: SAM DB 스키마 분석 | ✅ 완료 |
| 2025-12-21 | Phase 3: 필드 매핑 설계 (tenant_id=287) | ✅ 완료 |
| 2025-12-21 | Phase 4: Migrate5130Items Command 개발 | ✅ 완료 |
| 2025-12-21 | Phase 5: 마이그레이션 실행 및 검증 | ✅ 완료 |

---

## 다음 단계 (선택적)

1. **주일기업 마이그레이션**: 별도 테넌트로 동일 프로세스 적용
2. **데이터 검증 UI**: SAM MNG에서 마이그레이션된 품목 조회/수정 기능
3. **BOM 관계 활용**: 마이그레이션된 entity_relationships를 활용한 BOM 조회 API
