# SAM ERP 프론트엔드 개선 로드맵

> 작성일: 2025-02-10
> 분석 기준: src/ 전체 (500+ 파일, ~163K줄)

---

## Phase A: 즉시 개선 — ✅ 완료

| # | 항목 | 상태 | 비고 |
|---|------|------|------|
| A-1 | `<img>` → `next/image` 전환 | ✅ **전환 불필요 결정** | 폐쇄형 ERP, 전량 외부 동적 이미지, blob URL 비호환 (`_index.md` 참조) |
| A-2 | DataTable 렌더링 최적화 | ⏳ 대기 | TableRow memo + useCallback |

---

## Phase B: 단기 개선 — ✅ 완료

| # | 항목 | 상태 | 비고 |
|---|------|------|------|
| B-1 | `next/dynamic` 코드 스플리팅 | ✅ **완료** | 대시보드 4개 + xlsx 동적 로드, ~850KB 절감 (`_index.md` 참조) |
| B-2 | API 병렬 호출 (`Promise.all`) | ✅ **완료** | |
| B-3 | `store/` vs `stores/` 통합 | ✅ **완료** | |

---

## Phase C: 중기 개선 — ✅ 완료

| # | 항목 | 상태 | 비고 |
|---|------|------|------|
| C-1 | 테이블 가상화 (react-window) | ✅ **보류 결정** | 페이지네이션 사용 중, YAGNI (`_index.md` 참조) |
| C-2 | SWR / React Query | ✅ **보류 결정** | Zustand 캐싱 충족 (`_index.md` 참조) |
| C-3 | Action 팩토리 패턴 확대 | ✅ **규칙 확정** | 신규 CRUD만 팩토리 사용 (`_index.md` 참조) |
| C-4 | V1/V2 컴포넌트 정리 | ✅ **완료** | V2 최종본 확정, V1 삭제, 접미사 제거 |

---

## Phase D: 장기 개선 (필요 시)

| # | 항목 | 상태 |
|---|------|------|
| D-1 | God 컴포넌트 분리 (5개, 1200~2700줄) | ⏳ 대기 |
| D-2 | `as` 타입 캐스트 점진적 제거 (926건) | ✅ **보류 결정** | 실제 ~200건만 actionable, 신규 코드에서 제네릭 활용 (2026-02-11) |
| D-3 | `@deprecated` 함수 정리 (13파일) | ✅ **즉시 삭제분 완료** | uploadFile/deleteFile/getSiteNames/deprecated props 삭제 (2026-02-11) |
| D-4 | Molecules 레이어 활성화 | ✅ **보류 결정** | 사용률 ~0%, organisms/templates로 충분 (2026-02-11) |
| D-5 | 모달 컴포넌트 통합 | ✅ **완료** | InspectionPreviewModal → DocumentViewer 전환 (2026-02-11) |
| D-6 | 기타 (TODO 102건, strictMode 등) | ⏳ 대기 |

---

## 이전 리팩토링 완료 항목 (참고)

| 항목 | 상태 | 날짜 |
|------|------|------|
| Phase 1: 공통 훅 추출 (executeServerAction 등) | ✅ 완료 | 이전 세션 |
| 중복 코드 공통화 (buildApiUrl 전체 43개 actions.ts 마이그레이션) | ✅ 완료 | 2026-02-12 |
| executePaginatedAction 전체 마이그레이션 (14개 actions.ts, ~220줄 감소) | ✅ 완료 | 2026-02-12 |
| Phase 3: 공용 유틸 추출 (PaginatedApiResponse 등) | ✅ 완료 | 이전 세션 |
| Phase 4: SearchableSelectionModal 공통화 | ✅ 완료 | 이전 세션 |
| Phase 5: any 21건 + memo 3개 정리 | ✅ 완료 | 이전 세션 |
| console.log 524건 → 22건 정리 | ✅ 완료 | 2025-02-10 |
| TODO 주석 정리 (login route) | ✅ 완료 | 2025-02-10 |
| SSR 가드 추가 (ThemeContext, ApiErrorContext, useDetailPageState) | ✅ 완료 | 2025-02-10 |
| 커스텀 훅 불필요 'use client' 15개 제거 | ✅ 완료 | 2025-02-10 |
| formatDate 이름 충돌 해소 → formatCalendarDate | ✅ 완료 | 2025-02-10 |

---

## 우선순위 요약

```
Phase A~C: ✅ 전체 완료/결정 완료 (A-2 DataTable 최적화만 대기)
Phase D:   남은 작업 → A-2, D-1, D-6
```
