- BOM 항목 추가/수정/삭제 시 섹션탭 즉시 반영 - 섹션 복제 시 UI 즉시 업데이트 (null vs undefined 이슈 해결) - 항목 수정 기능 추가 (useTemplateManagement) - 실시간 동기화 문서 추가 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
7.7 KiB
7.7 KiB
미사용 파일 분석 보고서
📊 요약
총 미사용 파일: 51개
- Context 파일: 8개 (전혀 사용 안함)
- Active 컴포넌트: 1개 (BOMManager.tsx)
- 부분 사용: 1개 (DeveloperModeContext.tsx)
- 이미 정리됨: 42개 (components/_unused/)
🔴 완전 미사용 파일 (삭제 권장)
Context 파일 (8개)
모두 RootProvider.tsx에만 포함되어 있고, 실제 페이지/컴포넌트에서는 전혀 사용되지 않음
| 파일명 | 경로 | 사용처 | 상태 |
|---|---|---|---|
| FacilitiesContext.tsx | src/contexts/ | RootProvider만 | ❌ 미사용 |
| AccountingContext.tsx | src/contexts/ | RootProvider만 | ❌ 미사용 |
| HRContext.tsx | src/contexts/ | RootProvider만 | ❌ 미사용 |
| ShippingContext.tsx | src/contexts/ | RootProvider만 | ❌ 미사용 |
| InventoryContext.tsx | src/contexts/ | RootProvider만 | ❌ 미사용 |
| ProductionContext.tsx | src/contexts/ | RootProvider만 | ❌ 미사용 |
| PricingContext.tsx | src/contexts/ | RootProvider만 | ❌ 미사용 |
| SalesContext.tsx | src/contexts/ | RootProvider만 | ❌ 미사용 |
영향 분석:
- 이 8개 Context는 React SPA에서 있었던 것으로 추정
- Next.js 마이그레이션 후 관련 페이지가 구현되지 않음
RootProvider.tsx에서만 import되고 실제 사용은 없음- 안전하게 제거 가능 (빌드/런타임 영향 없음)
컴포넌트 (1개)
| 파일명 | 경로 | 라인수 | 사용처 | 상태 |
|---|---|---|---|---|
| BOMManager.tsx | src/components/items/ | 485 | 없음 | ❌ 미사용 |
영향 분석:
- BOMManagementSection.tsx가 대신 사용됨 (ItemMasterDataManagement에서 사용)
- 485줄의 구형 컴포넌트
_unused/디렉토리로 이동 권장
🟡 부분 사용 파일 (검토 필요)
DeveloperModeContext.tsx
현재 상태:
- ✅ Provider는
(protected)/layout.tsx에 연결됨 - ✅
PageLayout.tsx에서 import하고 사용 - ❌ 하지만 실제로
devMetadataprop을 전달하는 곳은 없음
사용 분석:
// PageLayout.tsx - devMetadata를 받지만...
export function PageLayout({ devMetadata, ... }) {
const { setCurrentMetadata } = useDeveloperMode();
useEffect(() => {
if (devMetadata) { // 실제로 devMetadata를 전달하는 곳이 없음
setCurrentMetadata(devMetadata);
}
}, []);
}
// ItemMasterDataManagement.tsx - 유일하게 PageLayout을 사용
<PageLayout> {/* devMetadata 전달 안함 */}
...
</PageLayout>
권장 사항:
- Option 1 (삭제): 개발자 모드 기능을 사용하지 않는다면 제거
- Option 2 (활용): 개발자 모드 기능이 필요하면 devMetadata 전달 구현
- Option 3 (보류): 향후 사용 계획이 있으면 유지
✅ 정상 사용 파일
Context (3개)
| 파일명 | 사용처 |
|---|---|
| AuthContext.tsx | LoginPage, SignupPage, useAuth hook 사용 중 |
| ItemMasterContext.tsx | ItemMasterDataManagement 등에서 사용 중 |
| ThemeContext.tsx | DashboardLayout, ThemeSelect에서 사용 중 |
컴포넌트
| 파일명 | 사용처 |
|---|---|
| FileUpload.tsx | ItemForm.tsx에서 import 및 사용 |
| DrawingCanvas.tsx | ItemForm.tsx에서 사용 (<DrawingCanvas 확인) |
| ThemeSelect.tsx | LoginPage, SignupPage에서 사용 |
| LanguageSelect.tsx | LoginPage, SignupPage에서 사용 |
| PageLayout.tsx | ItemMasterDataManagement에서 사용 |
| ItemMasterDataManagement.tsx | master-data/item-master-data-management/page.tsx에서 사용 |
📁 이미 정리된 파일
components/_unused/ 디렉토리에 42개 구형 컴포넌트가 이미 정리되어 있음:
Root 컴포넌트 (3개)
- LanguageSwitcher.tsx
- WelcomeMessage.tsx
- NavigationMenu.tsx
Business 컴포넌트 (39개)
- ApprovalManagement.tsx
- AccountingManagement.tsx
- BOMManagement.tsx
- Board.tsx
- CodeManagement.tsx
- ContactModal.tsx
- DemoRequestPage.tsx
- DrawingCanvas.tsx
- EquipmentManagement.tsx
- HRManagement.tsx
- ItemManagement.tsx
- LandingPage.tsx
- LoginPage.tsx
- LotManagement.tsx
- MasterData.tsx
- MaterialManagement.tsx
- MenuCustomization.tsx
- MenuCustomizationGuide.tsx
- OrderManagement.tsx
- PricingManagement.tsx
- ProductManagement.tsx
- ProductionManagement.tsx
- ProductionManagerDashboard.tsx
- QualityManagement.tsx
- QuoteCreation.tsx
- QuoteSimulation.tsx
- ReceivingWrite.tsx
- Reports.tsx
- SalesLeadDashboard.tsx
- SalesManagement.tsx
- SalesManagement-clean.tsx
- ShippingManagement.tsx
- SignupPage.tsx
- SystemAdminDashboard.tsx
- SystemManagement.tsx
- UserManagement.tsx
- WorkerDashboard.tsx
- WorkerPerformance.tsx
- 기타...
🎯 정리 액션 플랜
Phase 1: 안전한 정리 (즉시 실행 가능)
1. Context 파일 8개 제거
# RootProvider.tsx에서 import 제거 필요
rm src/contexts/FacilitiesContext.tsx
rm src/contexts/AccountingContext.tsx
rm src/contexts/HRContext.tsx
rm src/contexts/ShippingContext.tsx
rm src/contexts/InventoryContext.tsx
rm src/contexts/ProductionContext.tsx
rm src/contexts/PricingContext.tsx
rm src/contexts/SalesContext.tsx
2. BOMManager.tsx를 _unused로 이동
mv src/components/items/BOMManager.tsx src/components/_unused/business/
3. RootProvider.tsx 수정 8개 Context import와 Provider 래퍼 제거
// Before: 10개 Provider 중첩
// After: 2개만 남김 (AuthContext, ItemMasterContext)
Phase 2: DeveloperModeContext 결정
Option A - 삭제하는 경우:
# 1. DeveloperModeContext.tsx 삭제
rm src/contexts/DeveloperModeContext.tsx
# 2. layout.tsx에서 Provider 제거
# 3. PageLayout.tsx에서 useDeveloperMode 제거
Option B - 유지하는 경우:
- 현재 상태로 유지 (기능 구현 시까지)
- 또는 devMetadata 기능 실제 구현
Phase 3: _unused 디렉토리 최종 정리
향후 삭제 가능:
# 완전히 사용하지 않을 것이 확실하면
rm -rf src/components/_unused/
📈 정리 후 예상 효과
코드베이스 감소
- Context 파일: 8개 제거 → 약 2,000-3,000 라인 감소
- BOMManager: 485 라인 감소
- 총 예상: ~2,500-3,500 라인 감소
빌드 성능 개선
- 불필요한 Context Provider 제거로 앱 초기화 속도 개선
- 번들 크기 감소 (tree-shaking 효과)
유지보수성 향상
- 코드베이스 명확성 증가
- 신규 개발자 혼란 방지
- 불필요한 의존성 제거
⚠️ 주의사항
삭제 전 확인사항
- ✅ git 커밋 상태 확인 (롤백 가능하도록)
- ✅ 빌드 테스트:
npm run build - ✅ TypeScript 체크:
npm run type-check - ✅ 개발 서버 실행 및 주요 페이지 동작 확인
롤백 계획
# 문제 발생 시 git으로 복구
git checkout src/contexts/FacilitiesContext.tsx
# 또는
git reset --hard HEAD
📝 권장 실행 순서
- ✅ git 브랜치 생성:
git checkout -b cleanup/unused-files - ✅ Phase 1 실행: Context 8개 + BOMManager 정리
- ✅ 빌드 검증:
npm run build - ✅ 동작 테스트: 개발 서버로 주요 페이지 확인
- ✅ 커밋:
git commit -m "chore: 미사용 Context 파일 8개 및 BOMManager 제거" - 🔄 Phase 2 검토: DeveloperModeContext 유지/삭제 결정
- 🔄 Phase 3 검토: _unused 디렉토리 최종 삭제 여부 결정
🔍 추가 검토 필요 항목
다음 파일들은 사용 여부를 추가 확인 필요:
- EmptyPage.tsx: 현재 사용 확인 필요
- chart-wrapper.tsx: 차트 사용 페이지 구현 시 필요할 수 있음
- ItemTypeSelect.tsx: items 관련 페이지에서 사용 가능성
이 파일들은 grep으로 사용처를 확인한 후 결정하는 것이 안전합니다.