- 하드코딩된 공장 탭을 공정 마스터 데이터 기반 동적 탭으로 변경
- getProcessOptions() API 함수 추가 (/api/v1/processes/options)
- ProcessOption 타입 및 동적 TabOption 타입 추가
- WorkOrder 타입에 processCode, processName 필드 추가
- 탭 선택 시 process_code로 서버 사이드 필터링
변경 전: 전체/스크린공장/슬랫공장/절곡공장 (하드코딩)
변경 후: 전체 + 공정 마스터 데이터 기반 동적 탭
Phase 1 (Critical):
- 매출관리 계정과목 일괄변경 함수 추가 (bulkUpdateAccountCode)
- 근태관리 사유 등록 페이지 생성 (/hr/documents/new)
Phase 2 (High):
- 근태 등록 서버 에러 수정 (json_details 유효성 검증)
- 직원 등록 서버 에러 수정 (snake_case 필드명 변환)
- 근태관리 엑셀 다운로드 구현 (exportAttendanceExcel)
Phase 3 (Medium):
- 급여관리 엑셀 다운로드 구현 (exportSalaryExcel)
- 급여관리 지급항목 인라인 수정 기능 구현
- ApiItem 인터페이스: code → item_code 변경 (API 응답 구조 반영)
- transformItem: item_code 필드 사용하도록 수정
- transformItemToApi: item_type → product_type으로 변경 (API 요청 필드명)
- getItemList: Laravel 페이지네이션 응답 구조 처리 개선
- getItem: API 응답 구조(success, message, data) 처리
- getCategoryOptions: 페이지네이션 응답 파싱 수정
- createItem: 응답에서 ID 추출 로직 개선
- 디버깅용 console.log 추가
- WorkLogModal: API 연동으로 실제 작업지시 데이터 표시
- getWorkOrderById action 사용
- 로딩/에러 상태 처리
- workStats 자동 계산 (완료/진행중/대기)
- types.ts: item.status 하드코딩 버그 수정
- 실제 API 응답값 사용하도록 변경
- WorkOrderDetail: 작업지시 취소 버튼 및 모달 prop 정리
- WorkerScreen: WorkLogModal prop 변경 (order → workOrderId)
- Pretendard Variable 폰트 추가 및 전역 적용
- HR 모듈 모바일 필터 적용:
- AttendanceManagement: MobileFilter 컴포넌트 적용
- EmployeeManagement: MobileFilter 컴포넌트 적용
- SalaryManagement: MobileFilter 컴포넌트 적용
- VacationManagement: MobileFilter 컴포넌트 적용
- 회계 모듈:
- VendorManagement: MobileFilter 컴포넌트 적용
- 전자결재:
- ReferenceBox: 모바일 UI 개선
- AuthenticatedLayout: 레이아웃 개선
- middleware: 설정 업데이트
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- fcm.ts에 sendNewClientNotification 프리셋 함수 추가
- channel_id: push_urgent (신규업체 알림용)
- type: new_client
- 거래처관리 페이지에 "신규업체" 알림 버튼 추가
- Bell 아이콘과 함께 헤더 액션에 배치
- useTransition으로 로딩 상태 관리
- FCM 공통 모듈 생성 (src/lib/actions/fcm.ts)
- sendFcmNotification: 기본 FCM 발송 함수
- sendApprovalNotification: 결재 알림 프리셋
- sendWorkOrderNotification: 작업지시 알림 프리셋
- sendNoticeNotification: 공지사항 알림 프리셋
- 기안함 페이지에 '문서완료' 버튼 추가
- Bell 아이콘 + FCM 발송 기능
- 발송 결과 토스트 메시지 표시
- BiddingListClient: MobileFilter 컴포넌트 적용
- ContractListClient: MobileFilter 컴포넌트 적용
- EstimateListClient: MobileFilter 컴포넌트 적용
- HandoverReportListClient: MobileFilter 컴포넌트 적용
- IssueManagementListClient: MobileFilter 컴포넌트 적용
- ItemManagementClient: MobileFilter 컴포넌트 적용
- LaborManagementClient: MobileFilter 컴포넌트 적용
- PricingListClient: MobileFilter 컴포넌트 적용
- SiteBriefingListClient: MobileFilter 컴포넌트 적용
- SiteManagementListClient: MobileFilter 컴포넌트 적용
- StructureReviewListClient: MobileFilter 컴포넌트 적용
- WorkerStatusListClient: MobileFilter 컴포넌트 적용
- TodayIssueSection: CEO 대시보드 이슈 섹션 개선
- EmployeeForm: 사원등록 폼 개선
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 공사현장관리: 프로젝트 상세, 공정관리, 칸반보드 구현
- 이슈관리: 현장 이슈 등록/조회 기능 추가
- 근로자현황: 일별 근로자 출역 현황 페이지 추가
- 유틸리티관리: 현장 유틸리티 관리 페이지 추가
- 기성청구: 기성청구 관리 페이지 추가
- CEO 대시보드: 현황판(StatusBoardSection) 추가, 설정 다이얼로그 개선
- 발주관리: 모바일 필터 적용, 리스트 UI 개선
- 공용 컴포넌트: MobileFilter, IntegratedListTemplateV2 개선, CalendarHeader 반응형 개선
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- updateWorkOrderItemStatus action 추가 (API 연동)
- handleItemStatusChange 핸들러에 작업지시 상태 자동 업데이트 로직 추가
- 품목 시작/완료 버튼 클릭 시 로딩 상태 표시
- 작업지시 상태 변경 시 toast.info로 사용자 알림
- ProcessStep 타입 추가 및 workSteps 동적 로드 지원
- actions.ts: /quotes API 호출로 변경 (quote_type=construction 필터)
- actions.ts: API 응답 파싱 수정 (response.data.data 구조 처리)
- EstimateListClient.tsx: size 1000→100 (API 최대값 준수)
- 생산지시 페이지에 공정관리 API 연동
- getProcessList API로 사용중 공정 목록 로드
- 품목-공정 매칭 함수 추가 (classificationRules 기반)
- 하드코딩된 DEFAULT_PROCESSES 제거, API 데이터로 대체
- workSteps 없을 시 안내 메시지 표시
- 수주 등록 시 quote_id 미전달 버그 수정
- transformFrontendToApi에 quote_id 변환 로직 추가
- 견적 선택 후 수주 등록 시 견적번호 정상 표시
- LocationDetailPanel: 6개 탭 구현 (본체, 가이드레일, 케이스, 하단마감재, 모터&제어기, 부자재)
- 각 탭별 다른 테이블 컬럼 구조 적용
- QuoteSummaryPanel: 개소별/상세별 합계 패널 개선
- QuotePreviewModal: EstimateDocumentModal 패턴 적용 (헤더+버튼 영역 분리)
- Input value → defaultValue 변경으로 React 경고 해결
- 팩스/카카오톡 버튼 제거
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 52개 이상의 컴포넌트에 isNextRedirectError 처리 추가
- Server Action의 redirect() 에러가 catch 블록에서 삼켜지는 문제 해결
- access_token + refresh_token 모두 만료 시 정상적으로 로그인 페이지로 리다이렉트
수정된 영역:
- accounting: 10개 컴포넌트
- production: 12개 컴포넌트
- hr: 5개 컴포넌트
- settings: 8개 컴포넌트
- approval: 5개 컴포넌트
- items: 20개+ 컴포넌트
- board: 5개 컴포넌트
- quality: 4개 컴포넌트
- material, outbound, quotes 등 기타 컴포넌트
Co-Authored-By: Claude <noreply@anthropic.com>
- Mock 데이터 제거
- apiClient 기반 실제 API 호출로 전환
- 타입 변환 함수 구현 (snake_case ↔ camelCase)
API Functions:
- getStructureReviewList: 목록 조회 + 검색/필터/정렬/페이지네이션
- getStructureReviewStats: 통계 조회
- getStructureReview: 상세 조회
- createStructureReview: 생성
- updateStructureReview: 수정
- deleteStructureReview: 단일 삭제
- deleteStructureReviews: 일괄 삭제
- Day1 체크리스트 패널 및 문서 뷰어 컴포넌트 추가
- 심사 진행 상태바 및 설정 패널 구현
- Day 탭 네비게이션 컴포넌트 추가
- 목업 데이터 확장 및 타입 정의 보강
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- contract/actions.ts: 커스텀 apiRequest → apiClient 변환
- partners/actions.ts: 커스텀 apiRequest → apiClient 변환
- site-management/actions.ts: 커스텀 apiRequest → apiClient 변환
공통 변경사항:
- cookies() 직접 import 제거
- API_BASE_URL, API_KEY 상수 제거
- import { apiClient } from '@/lib/api' 사용
- 명시적 API 타입 정의 추가 (ApiContract, ApiPartner, ApiSite 등)
- 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 연동 완료