- 53개 페이지를 Server Component에서 Client Component로 변환
- Next.js 15에서 Server Component 렌더링 중 쿠키 수정 불가 이슈 해결
- 폐쇄형 ERP 시스템 특성상 SEO 불필요, Client Component 사용이 적합
주요 변경사항:
- 모든 페이지에 'use client' 지시어 추가
- use(params) 훅으로 async params 처리
- useState + useEffect로 데이터 페칭 패턴 적용
- skipTokenRefresh 옵션 및 관련 코드 제거 (더 이상 필요 없음)
변환된 페이지:
- Settings: 4개 (account-info, notification-settings, permissions, popup-management)
- Accounting: 9개 (vendors, sales, deposits, bills, withdrawals, expected-expenses, bad-debt-collection)
- Sales: 4개 (quote-management, pricing-management)
- Production/Quality/Master-data: 6개
- Material/Outbound: 4개
- Construction: 22개
- Other: 4개 (payment-history, subscription, dev/test-urls)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 커스텀 apiRequest 함수 제거 (52줄)
- cookies() 직접 사용 제거
- @/lib/api의 apiClient 사용으로 통일
- 명시적 API 타입 정의 추가
- ApiHandoverReport, ApiManager, ApiContractItem
- ApiExternalEquipmentCost, ApiHandoverReportStats
- 코드량 499줄 → 452줄 (47줄 감소)
- Phase D (설정/시스템): 4개 모듈 완료
- Phase E (인사/급여): 2개 모듈 완료
- Phase F (결재시스템): 4개 모듈 완료
- Phase G (생산관리): 4개 모듈 완료
- Phase H (자재/출하): 3개 모듈 완료
- Phase I (판매/견적): 3개 모듈 완료
- Phase J (회계관리): 6개 모듈 완료
- Phase K (보고서): 4개 모듈 완료
- Phase L (건설관리): 진행중 (~30%)
총 37/40 모듈 API 연동 완료
- common-codes.ts 신규 생성 (공용 코드 조회 유틸리티)
- getCommonCodes(), getCommonCodeOptions() 기본 함수
- getOrderStatusOptions(), getOrderTypeOptions() 등 편의 함수
- order-management/actions.ts Mock 데이터 → 실제 API 연동
- 상태 변환 함수 (Frontend ↔ Backend 매핑)
- getOrderList(), getOrderStats(), createOrder(), updateOrder() 등 구현
- lib/api/index.ts에 common-codes 모듈 export 추가
- SelectValue children 조건부 렌더링 → placeholder prop으로 이동
- Radix UI Select 상태 관리 문제 해결
- @/lib/api barrel export 추가 (빌드 오류 해결)
수정 파일:
- ApprovalLineSection.tsx: SelectValue 수정
- ReferenceSection.tsx: SelectValue 수정
- src/lib/api/index.ts: 신규 생성
빌드 검증: npm run build 성공 (349 페이지)
Phase 2.3 자재관리 API 연동:
- actions.ts Mock 데이터 제거, 실제 API 연동
- 8개 API 함수 구현 (getItemList, getItemStats, getItem, createItem, updateItem, deleteItem, deleteItems, getCategoryOptions)
- 타입 변환 함수 구현 (Frontend ↔ Backend)
- 품목유형 매핑 (제품↔FG, 부품↔PT, 소모품↔CS, 공과↔RM)
- Frontend 전용 필터링 (specification, orderType, dateRange, sortBy)
- partners/actions.ts: Mock → API 연동 전환
- apiRequest 헬퍼 함수 추가 (쿠키 기반 인증)
- transform 함수: client_type ↔ partnerType 변환
- getPartnerList, getPartner, createPartner, updatePartner
- getPartnerStats, deletePartner, deletePartners
- 구현 문서 추가
- types.ts: processId, processName, processCode 추가, transform 함수 구현
- actions.ts: getProcessOptions() 추가, CRUD에 transform 적용
- WorkOrderCreate.tsx: 공정 목록 API 동적 로딩
- WorkOrderList.tsx: processName 표시로 변경
- WorkOrderDetail.tsx: processName 표시, processType은 로직용 유지
- Mock 데이터 제거, 실제 API 연동으로 변환
- apiRequest 헬퍼 함수 구현 (쿠키 기반 인증)
- 7개 API 함수 구현: list, stats, detail, create, update, delete, bulk-delete
- snake_case → camelCase 타입 변환 함수 추가
- CEO 대시보드: 일일보고, 접대비, 복리후생 섹션 개선
- CEO 대시보드: 상세 모달 기능 확장
- 카드거래조회: 기능 및 타입 확장
- 알림설정: 항목 설정 다이얼로그 추가
- 회사정보관리: 컴포넌트 개선
- 모바일 오버플로우 테스트 계획서 추가 (Galaxy Fold 대응)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- actions.ts: createWorkOrder에 assigneeIds 배열 파라미터 추가
- actions.ts: assignWorkOrder가 단일/배열 모두 지원하도록 변경
- WorkOrderCreate.tsx: assigneeIds 배열로 API 전송
- WorkOrderDetail.tsx: 다중 담당자 표시 (쉼표 구분)
- 사이드바 메뉴 3depth 이상 지원 (재귀 컴포넌트)
- menuTransform.ts: buildChildrenRecursive 함수 추가
- AuthenticatedLayout.tsx: findMenuRecursive + ancestorIds 배열로 경로 매칭
- Sidebar.tsx: depth별 스타일 (1depth: 아이콘+굵은텍스트, 2depth: 작은아이콘, 3depth: dot+작은텍스트)
- CEO 대시보드 상세 모달 및 카드 관리 개선
- 폴더블 기기 레이아웃 가이드 문서 추가
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- AuthenticatedLayout: visualViewport API 추가로 폴더블 기기 화면 전환 감지
- globals.css: CSS 변수(--app-width, --app-height) 및 dvw/dvh fallback 추가
- 모바일 레이아웃: h-screen → var(--app-height)로 변경
- CEO 대시보드 및 API 클라이언트 개선
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
## 수정 내용
- 검색 debounce: WorkOrderList, SalesOrderSelectModal에 300ms debounce 적용
- 작업 버튼: 상태별 시작/완료 버튼 구현 (WorkOrderDetail)
- API 경로: /sales-orders → /orders 수정
- 다중 담당자: assignees 타입 및 변환 함수 추가
- scheduledDate 필드 매핑 수정
## 변경 파일
- WorkOrderList.tsx, SalesOrderSelectModal.tsx (debounce)
- WorkOrderDetail.tsx (action buttons)
- actions.ts (API path fix)
- types.ts (assignees type)
- 전체 모듈 actions.ts redirect 에러 핸들링 추가
- CEODashboard DetailModal 추가
- MonthlyExpenseSection 개선
- fetch-wrapper redirect 에러 처리
- redirect-error 유틸 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 직급(rank) 필드를 API 기반 Select 드롭다운으로 변경
- 부서/직책 필드를 API 데이터 기반 Select로 변경
- handleDepartmentSelect, handlePositionSelect 핸들러 추가
- view 모드에서 Select disabled 상태 처리
- actions.ts 생성: Server Actions 패턴으로 Order API 클라이언트 구현
- getOrders, getOrderById, createOrder, updateOrder, deleteOrder(s)
- updateOrderStatus, getOrderStats
- API snake_case → Frontend camelCase 변환
- 상태 매핑 (DRAFT→order_registered 등)
- 목록 페이지(page.tsx):
- SAMPLE_ORDERS 제거, API 연동 state 추가
- loadData() 함수로 API 호출
- 삭제/일괄삭제 API 연동
- 상세 페이지([id]/page.tsx):
- SAMPLE_ITEMS/ORDERS 제거
- getOrderById, updateOrderStatus API 연동
- 수정 페이지([id]/edit/page.tsx):
- SAMPLE_ORDER 제거
- getOrderById, updateOrder API 연동
- 등록 페이지(new/page.tsx):
- createOrder API 연동
- CEO 대시보드 컴포넌트 추가
- AuthenticatedLayout 개선
- 각 모듈 actions.ts 에러 핸들링 개선
- API fetch-wrapper, refresh-token 로직 개선
- ReceivablesStatus 컴포넌트 업데이트
- globals.css 스타일 업데이트
- 기타 다수 컴포넌트 수정
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- /juil/ 경로를 /construction/으로 변경
- 컴포넌트 폴더명 juil → construction 변경
- 컴포넌트명 Juil* → Construction* 변경
- 테스트 URL 페이지 경로 업데이트
- claudedocs 문서 경로 업데이트
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- HttpOnly 쿠키(access_token)는 JavaScript에서 읽을 수 없어 FCM 초기화 실패
- non-HttpOnly is_authenticated 쿠키 추가로 클라이언트에서 인증 상태 확인 가능
- login/logout/refresh/proxy 라우트에서 쿠키 설정/삭제 처리
- hasAuthToken()이 is_authenticated 쿠키 확인하도록 변경
이슈 #8: 수정 화면에서 14개 탭 대신 1개 탭으로 올바르게 표시
주요 변경:
- edit/page.tsx: calculation_inputs.items 기반 폼 복원
- [id]/page.tsx: 상세 화면 데이터 표시 개선
- new/page.tsx: 신규 등록 화면 개선
이슈 #3: 상세 견적서 담당자/연락처 표시
이슈 #4: 품목내역 올바른 단위 표시
주요 변경:
- QuoteDocument.tsx: 품목별 unit 필드 사용하여 올바른 단위 표시
- QuoteRegistration.tsx: manager, contact, remarks 필드 폼에 반영
이슈 #1: 리스트 화면 담당자/비고 컬럼 표시
이슈 #2: 상세 화면 담당자/연락처 표시
이슈 #7: 수정 화면 기본정보 필드 표시
주요 변경:
- types.ts: Quote/QuoteApiData에 manager, contact, remarks 필드 추가
- types.ts: CalculationInputs, BomMaterial 타입 추가
- types.ts: transformApiToFrontend에서 새 필드 변환 로직 추가
- types.ts: transformQuoteToFormData에서 calculation_inputs 기반 폼 복원
- actions.ts: API 요청/응답 필드 매핑 개선
- api/quote.ts: API 엔드포인트 호출 개선
- Zustand store 도입 (useItemMasterStore)
- 훅 분리 및 구조 개선 (hooks/, contexts/)
- 422 ValidationException 에러 AlertDialog 팝업 추가
- API 함수 분리 (src/lib/api/item-master.ts)
- 타입 정의 정리 (item-master.types.ts, item-master-api.ts)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- ErrorAlertContext 생성 (전역 에러 알림 상태 관리)
- useFieldManagement, useMasterFieldManagement, useTemplateManagement에 적용
- 중복 이름, 예약어 사용 시 디자인된 AlertDialog 팝업 표시
- toast 대신 모달 위에 표시되는 팝업으로 변경
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 회계: 거래처, 매입/매출, 입출금 상세 페이지 개선
- HR: 직원 관리 및 출퇴근 설정 기능 수정
- 주문관리: 상세폼 구조 분리 (cards, dialogs, hooks, tables)
- 알림설정: 컴포넌트 구조 단순화 및 리팩토링
- 캘린더: 헤더 및 일정 타입 개선
- 출고관리: 액션 및 타입 정의 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 입찰관리: 목록/상세/수정 페이지 및 목업 데이터
- 계약관리: 목록/상세/수정 페이지 구현
- 주문관리: 수주/발주 목록 및 상세 페이지 구현
- 견적 상세 폼: 섹션별 분리 및 hooks/utils 리팩토링
- 품목관리, 카테고리관리, 단가관리 기능 추가
- 현장설명회/협력업체 폼 개선
- 프린트 유틸리티 공통화 (print-utils.ts)
- 문서 모달 공통 컴포넌트 정리
- IntegratedListTemplateV2, StatCards 개선
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 공용 헤더에 종합분석/품질인정심사 바로가기 버튼 추가 (데스크톱/모바일)
- 종합분석 페이지 목데이터 적용 (API 호출 비활성화)
- 로그인 페이지 기본 계정 설정
- QMS 필터/모달 컴포넌트 개선
- 메뉴 폴링 및 fetch-wrapper 유틸리티 개선
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>