Files
sam-react-prod/claudedocs/[PLAN-2025-02-10] frontend-improvement-roadmap.md
유병철 cbb38d48b9 refactor(WEB): 전체 actions.ts에 공통 API 유틸 적용
- buildApiUrl / executePaginatedAction 패턴으로 전환 (40+ actions 파일)
- 직접 URLSearchParams 조립 → buildApiUrl 유틸 사용
- 수동 페이지네이션 메타 변환 → executePaginatedAction 자동 처리
- HandoverReportDocumentModal, OrderDocumentModal 개선
- 급여관리 SalaryManagement 코드 개선
- CLAUDE.md Server Action 공통 유틸 규칙 정리

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 20:59:59 +09:00

3.3 KiB

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건) 보류 결정
D-3 @deprecated 함수 정리 (13파일) 즉시 삭제분 완료
D-4 Molecules 레이어 활성화 보류 결정
D-5 모달 컴포넌트 통합 완료
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