# DataContext.tsx 리팩토링 계획 ## 현황 분석 ### 기존 파일 구조 - **총 라인**: 6,707줄 - **파일 크기**: 222KB - **상태 변수**: 33개 - **타입 정의**: 50개 이상 ### 문제점 1. 단일 파일에 모든 도메인 집중 → 유지보수 불가능 2. 6700줄 분석 시 토큰 과다 소비 → 세션 종료 빈번 3. 관련 없는 데이터도 항상 로드 → 성능 저하 --- ## 도메인 분류 (10개 도메인, 33개 상태) ### 1. ItemMaster (품목 마스터) - 13개 상태 **파일**: `contexts/ItemMasterContext.tsx` **관련 페이지**: 품목관리, 품목기준관리 상태: - itemMasters (품목 마스터 데이터) - specificationMasters (규격 마스터) - materialItemNames (자재 품목명) - itemCategories (품목 분류) - itemUnits (단위) - itemMaterials (재질) - surfaceTreatments (표면처리) - partTypeOptions (부품 유형 옵션) - partUsageOptions (부품 용도 옵션) - guideRailOptions (가이드레일 옵션) - sectionTemplates (섹션 템플릿) - itemMasterFields (품목 필드 정의) - itemPages (품목 입력 페이지) 타입: - ItemMaster, ItemRevisio1n, ItemCategory, ItemUnit, ItemMaterial - SurfaceTreatment, PartTypeOption, PartUsageOption, GuideRailOption - ItemMasterField, ItemFieldProperty, FieldDisplayCondition - ItemField, ItemSection, ItemPage, SectionTemplate - SpecificationMaster, MaterialItemName - BOMLine, BOMItem, BendingDetail --- ### 2. Sales (판매) - 3개 상태 **파일**: `contexts/SalesContext.tsx` **관련 페이지**: 견적관리, 수주관리, 거래처관리 상태: - salesOrders (수주 데이터) - quotes (견적 데이터) - clients (거래처 데이터) 타입: - SalesOrder, SalesOrderItem, OrderRevision, DocumentSendHistory - Quote, QuoteRevision, QuoteCalculationRow, BOMCalculationRow - Client --- ### 3. Production (생산) - 2개 상태 **파일**: `contexts/ProductionContext.tsx` **관련 페이지**: 생산관리, 품질관리 상태: - productionOrders (생산지시 데이터) - qualityInspections (품질검사 데이터) 타입: - ProductionOrder - QualityInspection --- ### 4. Inventory (재고) - 2개 상태 **파일**: `contexts/InventoryContext.tsx` **관련 페이지**: 재고관리, 구매관리 상태: - inventoryItems (재고 데이터) - purchaseOrders (구매 데이터) 타입: - InventoryItem - PurchaseOrder --- ### 5. Shipping (출고) - 1개 상태 **파일**: `contexts/ShippingContext.tsx` **관련 페이지**: 출고관리 상태: - shippingOrders (출고지시서 데이터) 타입: - ShippingOrder, ShippingOrderItem - ShippingSchedule, ShippingLot, ShippingLotItem --- ### 6. HR (인사) - 3개 상태 **파일**: `contexts/HRContext.tsx` **관련 페이지**: 직원관리, 근태관리, 결재관리 상태: - employees (직원 데이터) - attendances (근태 데이터) - approvals (결재 데이터) 타입: - Employee - Attendance - Approval --- ### 7. Accounting (회계) - 2개 상태 **파일**: `contexts/AccountingContext.tsx` **관련 페이지**: 회계관리, 매출채권관리 상태: - accountingTransactions (회계 거래 데이터) - receivables (매출채권 데이터) 타입: - AccountingTransaction - Receivable --- ### 8. Facilities (시설) - 2개 상태 **파일**: `contexts/FacilitiesContext.tsx` **관련 페이지**: 차량관리, 현장관리 상태: - vehicles (차량 데이터) - sites (현장 데이터) 타입: - Vehicle - Site, SiteAttachment --- ### 9. Pricing (가격/계산식) - 3개 상태 **파일**: `contexts/PricingContext.tsx` **관련 페이지**: 가격관리, 계산식관리 상태: - formulas (계산식 데이터) - formulaRules (계산식 규칙 데이터) - pricing (가격 데이터) 타입: - CalculationFormula, FormulaRevision - FormulaRule, FormulaRuleRevision, RangeRule - PricingData, PriceRevision --- ### 10. Auth (인증) - 2개 상태 **파일**: `contexts/AuthContext.tsx` **관련 페이지**: 로그인, 사용자관리 상태: - users (사용자 데이터) - currentUser (현재 사용자) 타입: - User, UserRole --- ## 공통 타입 파일 ### types/index.ts 재사용되는 공통 타입 정의: - 없음 (각 도메인이 독립적) --- ## 통합 Provider ### contexts/RootProvider.tsx 모든 Context를 통합하는 최상위 Provider ```tsx export function RootProvider({ children }: { children: ReactNode }) { return ( {children} ); } ``` --- ## 마이그레이션 체크리스트 ### Phase 1: 준비 - [x] 전체 구조 분석 - [x] 도메인 분류 설계 - [ ] 기존 파일 백업 ### Phase 2: Context 생성 (10개) - [ ] AuthContext.tsx - [ ] ItemMasterContext.tsx - [ ] SalesContext.tsx - [ ] ProductionContext.tsx - [ ] InventoryContext.tsx - [ ] ShippingContext.tsx - [ ] HRContext.tsx - [ ] AccountingContext.tsx - [ ] FacilitiesContext.tsx - [ ] PricingContext.tsx ### Phase 3: 통합 - [ ] RootProvider.tsx 생성 - [ ] app/layout.tsx에서 RootProvider 적용 - [ ] 기존 DataContext.tsx 삭제 ### Phase 4: 검증 - [ ] 빌드 테스트 (npm run build) - [ ] 타입 체크 (npm run type-check) - [ ] 품목관리 페이지 동작 확인 - [ ] 기타 페이지 동작 확인 --- ## 예상 효과 ### 파일 크기 감소 - 기존: 6,707줄 → 각 도메인: 평균 500-1,500줄 - ItemMaster: ~2,000줄 (가장 큼) - Auth: ~300줄 (가장 작음) ### 토큰 사용량 감소 - 품목관리 작업 시: 70% 감소 - 기타 페이지 작업 시: 60-80% 감소 ### 유지보수성 향상 - 도메인별 독립적 관리 - 수정 시 영향 범위 명확 - 협업 시 충돌 최소화