- TodayIssueListBadgeType 업데이트 (수주등록, 추심이슈, 안전재고 등)
- BADGE_COLORS 및 FILTER_KEYS 새 타입으로 변경
- transformers.ts의 VALID_BADGE_TYPES 배열 동기화
- 입금/출금 뱃지 타입 추가
- ItemSearchModal: API 프록시 라우트 연동, 검색 유효성 검사 (영문/한글 1자 이상)
- items.ts: HttpOnly 쿠키 인증을 위한 프록시 라우트 사용
- LocationDetailPanel: 수동 품목 추가 시 subtotals/grouped_items 동시 업데이트
- QuoteRegistrationV2: 견적 산출 시 수동 추가 품목(is_manual) 보존
- 상세별 합계에서 수동 추가 품목이 카테고리별로 표시되도록 개선
- 공통 레이아웃 패턴 적용: [달력] → [프리셋] → [검색창] → [버튼들]
- beforeTableContent → headerActions + createButton 마이그레이션
- DateRangeSelector extraActions prop 활용하여 검색창 통합
- PricingListClient 테이블 행 클릭 → 상세 이동 기능 추가
- 회계 관련 페이지 (입금/출금/매입/매출/어음/카드/예상지출 등) 정리
- 건설 관련 페이지 검색 영역 정리
- 부모 메뉴 리다이렉트 컴포넌트 추가
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- normalizePath 헬퍼 함수 추가 (/ko prefix, ?mode=view 자동 추가)
- 대시보드 detailButtonPath에 /ko prefix 적용
- start 스크립트에 -H 0.0.0.0 추가 (외부 접근 허용)
- start:local 스크립트 추가 (로컬 전용)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 수주 상세 페이지에 삭제 기능 추가
- 수주등록/취소 상태에서 삭제 버튼 표시
- 삭제 확인 다이얼로그 구현
- 삭제 후 목록 페이지로 이동
- 출하목록 데이터 누락 수정
- 발주처/현장명 order_info 참조하도록 수정
- 배송방식 라벨 API 응답값 사용
- 공통코드 API 함수 추가
- getDeliveryMethodCodes, getDeliveryMethodOptions
- getCodeLabel 유틸 함수
- SalesManagement actions 및 index 개선
- EmployeeForm 수정
- WorkOrder Detail/Edit/List 컴포넌트 업데이트
- IntegratedDetailTemplate types 수정
- dashboard types 업데이트
- transformers.ts: footer_summary destructuring 누락 수정
- cardManagementConfigTransformers.ts: items, by_user, monthly_trend 방어적 코드 추가
- undefined 배열 접근 시 빈 배열 기본값 적용
- 카드 사용 상세(cm1), 가지급금 상세(cm2) 모달 에러 해결
카드/가지급금 관리 섹션의 4개 카드(cm1~cm4)를 실제 API 데이터로 연동:
- cm1: 카드 사용액 - CardTransaction API (기존)
- cm2: 가지급금 - LoanDashboard API (신규 연동)
- cm3: 법인세 예상 가중 - TaxSimulation API (신규 연동)
- cm4: 대표자 종합세 예상 가중 - TaxSimulation API (신규 연동)
변경 사항:
- transformCardManagementResponse: LoanDashboard, TaxSimulation 파라미터 추가
- useCEODashboard: 3개 API 병렬 호출 (Promise.all)
- useCardManagement: 동일하게 다중 API 호출 적용
- 각 API 실패 시 fallback 데이터 사용 (graceful degradation)
- 모든 카드(me1~me4)가 expected-expenses/dashboard-detail API 사용
- transaction_type 파라미터로 필터링 (me1=purchase, me2=card, me3=bill)
- cardId별 모달 제목 동적 설정 추가
- 불필요한 import 정리
- API 타입 정의 추가 (LoanDashboard, TaxSimulation)
- API 엔드포인트 함수 추가 (endpoints.ts)
- 모달 데이터 훅 생성 (useCardManagementModals.ts)
관련: docs/plans/card-management-section-plan.md
Phase 2 프론트엔드 연동 완료:
- WelfareDetailApiResponse 타입 정의 추가 (types.ts)
- useWelfareDetail hook 추가 (useCEODashboard.ts)
- transformWelfareDetailResponse 변환 함수 추가 (transformers.ts)
- CEODashboard에 API 연동 및 Mock fallback 구현
변경 파일:
- src/lib/api/dashboard/types.ts: 복리후생비 상세 API 응답 타입
- src/hooks/useCEODashboard.ts: useWelfareDetail hook
- src/lib/api/dashboard/transformers.ts: API → DetailModalConfig 변환
- src/components/business/CEODashboard/CEODashboard.tsx: 모달 API 연동
- src/components/business/CEODashboard/modalConfigs/welfareConfigs.ts: deprecation 문서화
- 수주 상세 페이지에서 수주확정 시 FCM 푸시 알림 발송 추가
- FCM 프리셋 함수 추가: 계약완료, 발주완료 알림
- 입금 등록 시 입금일, 입금계좌, 입금자명, 입금금액 입력 가능
- 견적 저장 시 토스트 메시지 정상 표시 수정
- ShipmentCreate SelectItem key prop 경고 수정
- DevToolbar 문법 오류 수정
- 입금관리, 출금관리 리스트에 등록 버튼 추가
- skeleton, confirm-dialog, empty-state, status-badge UI 컴포넌트 추가
- document-system 컴포넌트 추상화 (ApprovalLine, DocumentHeader 등)
- 여러 페이지 컴포넌트 리팩토링 및 코드 정리
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- TodayIssue 타입 정의 파일 생성 (src/types/today-issue.ts)
- TodayIssue API 서비스 함수 생성 (src/lib/api/today-issue.ts)
- getUnreadTodayIssues: 읽지 않은 알림 목록 조회
- markTodayIssueAsRead: 개별 읽음 처리
- markAllTodayIssuesAsRead: 전체 읽음 처리
- AuthenticatedLayout 알림 드롭다운 API 연동
- MOCK_NOTIFICATIONS 제거, 실제 API 연동
- 30초 폴링으로 알림 데이터 갱신
- 알림 클릭 시 읽음 처리 + 페이지 이동
- 모두 읽음 버튼 기능 구현
- 벨 애니메이션 (읽지 않은 알림 있을 때만)
- 숫자/통화/전화번호/사업자번호 등 특수 입력 컴포넌트 추가
- MobileCard 컴포넌트 통합 (ListMobileCard 제거)
- IntegratedListTemplateV2 페이지네이션 버그 수정 (NaN 이슈)
- IntegratedDetailTemplate 타이틀 중복 수정
- 문서 시스템 컴포넌트 추가
- 헤더 벨 아이콘 포커스 스타일 개선
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- StatusBoard(현황판) API Hook 및 타입 추가
- TodayIssue(오늘의 이슈) API Hook 및 타입 추가
- Calendar(캘린더) API Hook 및 타입 추가
- Vat(부가세) API Hook 및 타입 추가
- Entertainment(접대비) API Hook 및 타입 추가
- Welfare(복리후생비) API Hook 및 타입 추가
- CEODashboard.tsx에 모든 Phase 2 Hook 통합
- API 응답 → Frontend 타입 변환 transformer 추가
- WelfareCalculationType 'percentage' → 'ratio' 타입 일치 수정
- DailyReport, Receivable, DebtCollection, MonthlyExpense, CardManagement API 연동
- useCEODashboard Hook 추가 (병렬 API 호출)
- API → Frontend 타입 변환 함수 및 CheckPoint 생성 로직 구현
- API 실패 시 mockData fallback 패턴 적용
신규 기능:
- 작업지시 수정 페이지 추가 (/production/work-orders/[id]/edit)
- WorkOrderEdit 컴포넌트 신규 생성
- bulk-actions.ts 일괄 작업 유틸리티 추가
- toast-utils.ts 알림 유틸리티 추가
기능 개선:
- ProductionDashboard 대시보드 액션 및 표시 개선
- WorkOrderCreate 생성 화면 개선
- WorkResultList 작업 결과 목록 타입 및 표시 개선
- EstimateDetailForm 견적 폼 개선
- QuoteRegistration 견적 등록 개선
- client-management-sales-admin 거래처 관리 개선
- error-handler.ts 에러 처리 개선
- UniversalListPage/IntegratedListTemplateV2 컴포넌트 기능 개선
- 회계, HR, 건설, 고객센터, 결재, 설정 등 전체 리스트 컴포넌트 마이그레이션
- 테스트 페이지 및 미사용 API 라우트 정리 (board-test, order-management-test 등)
- 미들웨어 토큰 갱신 로직 개선
- AuthenticatedLayout 구조 개선
- claudedocs 문서 업데이트
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Phase 1 (Critical):
- 매출관리 계정과목 일괄변경 함수 추가 (bulkUpdateAccountCode)
- 근태관리 사유 등록 페이지 생성 (/hr/documents/new)
Phase 2 (High):
- 근태 등록 서버 에러 수정 (json_details 유효성 검증)
- 직원 등록 서버 에러 수정 (snake_case 필드명 변환)
- 근태관리 엑셀 다운로드 구현 (exportAttendanceExcel)
Phase 3 (Medium):
- 급여관리 엑셀 다운로드 구현 (exportSalaryExcel)
- 급여관리 지급항목 인라인 수정 기능 구현
- 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 발송 기능
- 발송 결과 토스트 메시지 표시
- 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>
- 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 페이지)
- 사이드바 메뉴 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>
- 전체 모듈 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>
- 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>
- HttpOnly 쿠키(access_token)는 JavaScript에서 읽을 수 없어 FCM 초기화 실패
- non-HttpOnly is_authenticated 쿠키 추가로 클라이언트에서 인증 상태 확인 가능
- login/logout/refresh/proxy 라우트에서 쿠키 설정/삭제 처리
- hasAuthToken()이 is_authenticated 쿠키 확인하도록 변경
이슈 #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>