Commit Graph

256 Commits

Author SHA1 Message Date
777872486a feat(WEB): 건설 노무/협력사/현장관리 개선
- 노무관리 actions API 연동 개선
- 협력사 폼 및 actions 개선
- 현장관리 actions 추가
2026-01-13 19:47:57 +09:00
8083c0e015 fix(WEB): 건설 견적 관리 개선
- 견적 상세/수정 페이지 타입 수정
- actions.ts API 연동 개선
2026-01-13 19:47:51 +09:00
fab7d669d5 feat(WEB): Server Actions 전용 API 클라이언트 구현
- ServerApiClient 클래스 추가
- 쿠키에서 access_token 자동 읽기
- X-API-KEY + Bearer 토큰 자동 포함
- 401 발생 시 토큰 자동 갱신 후 재시도
- 인증 실패 시 쿠키 자동 삭제
2026-01-13 19:47:45 +09:00
81f7c5aeac feat(WEB): 주문/작업지시 공정 연동 개선
- process_id 필드 추가 (공정 연동)
- 공정별 다중 작업지시 생성 지원 (processIds)
- ApiProductionOrderResponse 타입 수정 (work_orders 배열 지원)
- process 정보 포함 응답 처리
2026-01-13 19:47:39 +09:00
e162ad5a12 feat(WEB): 현장설명회 실제 API 연동
- mock 데이터 제거하고 실제 API 연동
- apiClient 표준화 적용
- SiteBriefingFormData 타입 추가
- CRUD 액션 API 호출로 변경
2026-01-13 19:47:33 +09:00
c56c140e4b feat(WEB): FCM 푸시 알림 공통 모듈 및 기안함 연동
- FCM 공통 모듈 생성 (src/lib/actions/fcm.ts)
  - sendFcmNotification: 기본 FCM 발송 함수
  - sendApprovalNotification: 결재 알림 프리셋
  - sendWorkOrderNotification: 작업지시 알림 프리셋
  - sendNoticeNotification: 공지사항 알림 프리셋
- 기안함 페이지에 '문서완료' 버튼 추가
  - Bell 아이콘 + FCM 발송 기능
  - 발송 결과 토스트 메시지 표시
2026-01-13 19:47:03 +09:00
byeongcheolryu
ea8d701a8d refactor(WEB): 공사관리 리스트 페이지 모바일 필터 마이그레이션
- 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>
2026-01-13 18:33:39 +09:00
byeongcheolryu
db47a15544 feat(WEB): 공사관리 시스템 및 CEO 대시보드 기능 확장
- 공사현장관리: 프로젝트 상세, 공정관리, 칸반보드 구현
- 이슈관리: 현장 이슈 등록/조회 기능 추가
- 근로자현황: 일별 근로자 출역 현황 페이지 추가
- 유틸리티관리: 현장 유틸리티 관리 페이지 추가
- 기성청구: 기성청구 관리 페이지 추가
- CEO 대시보드: 현황판(StatusBoardSection) 추가, 설정 다이얼로그 개선
- 발주관리: 모바일 필터 적용, 리스트 UI 개선
- 공용 컴포넌트: MobileFilter, IntegratedListTemplateV2 개선, CalendarHeader 반응형 개선

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 17:18:29 +09:00
fcba883f42 feat(work-order): 품목 상태 변경 UI 및 작업지시 상태 자동 반영
- updateWorkOrderItemStatus action 추가 (API 연동)
- handleItemStatusChange 핸들러에 작업지시 상태 자동 업데이트 로직 추가
- 품목 시작/완료 버튼 클릭 시 로딩 상태 표시
- 작업지시 상태 변경 시 toast.info로 사용자 알림
- ProcessStep 타입 추가 및 workSteps 동적 로드 지원
2026-01-13 16:00:59 +09:00
2b9c70b550 fix(WEB): 건설 견적관리 API 연동 수정
- actions.ts: /quotes API 호출로 변경 (quote_type=construction 필터)
- actions.ts: API 응답 파싱 수정 (response.data.data 구조 처리)
- EstimateListClient.tsx: size 1000→100 (API 최대값 준수)
2026-01-13 09:55:23 +09:00
6cd5477eed fix(WEB): 생산지시 생성 에러 표시 및 Loader2 import 수정
- 생산지시 생성 실패 시 에러 메시지가 UI에 표시되지 않던 문제 수정
- WorkOrderDetail.tsx에서 Loader2 import 누락 수정
2026-01-12 19:11:27 +09:00
495e46fc31 feat(WEB): 생산지시 공정별 작업지시 분리 및 기타 품목 섹션 추가
- 수주 품목을 공정별로 그룹핑하여 작업지시 카드 분리 표시
- 공정 미매칭 품목을 "기타 품목" 섹션으로 별도 분리
- 작업지시 카운트에서 기타 품목 제외
- 수량 표시 시 소수점 0 제거 처리
2026-01-12 18:06:20 +09:00
b9f0e24950 feat(WEB): 생산지시 공정관리 연동 및 견적번호 버그 수정
- 생산지시 페이지에 공정관리 API 연동
  - getProcessList API로 사용중 공정 목록 로드
  - 품목-공정 매칭 함수 추가 (classificationRules 기반)
  - 하드코딩된 DEFAULT_PROCESSES 제거, API 데이터로 대체
  - workSteps 없을 시 안내 메시지 표시

- 수주 등록 시 quote_id 미전달 버그 수정
  - transformFrontendToApi에 quote_id 변환 로직 추가
  - 견적 선택 후 수주 등록 시 견적번호 정상 표시
2026-01-12 17:19:14 +09:00
byeongcheolryu
d036ce4f42 feat(WEB): 견적서 V2 컴포넌트 개선 및 미리보기 모달 패턴 적용
- LocationDetailPanel: 6개 탭 구현 (본체, 가이드레일, 케이스, 하단마감재, 모터&제어기, 부자재)
- 각 탭별 다른 테이블 컬럼 구조 적용
- QuoteSummaryPanel: 개소별/상세별 합계 패널 개선
- QuotePreviewModal: EstimateDocumentModal 패턴 적용 (헤더+버튼 영역 분리)
- Input value → defaultValue 변경으로 React 경고 해결
- 팩스/카카오톡 버튼 제거

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 15:26:17 +09:00
ee9f7a4d81 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	src/components/production/WorkOrders/WorkOrderCreate.tsx
#	src/components/production/WorkOrders/WorkOrderDetail.tsx
#	src/components/production/WorkOrders/WorkOrderList.tsx
2026-01-12 09:00:32 +09:00
byeongcheolryu
e56b7d53a4 fix(WEB): 토큰 만료 시 무한 로딩 대신 로그인 리다이렉트 처리
- 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>
2026-01-11 17:19:11 +09:00
byeongcheolryu
8bc4b90fe9 chore(WEB): QMS 품질관리 Day 탭 및 루트 리스트 개선
- DayTabs 컴포넌트 리팩토링
- RouteList 기능 확장 및 UI 개선
- 목업 데이터 구조 조정
- 페이지 레이아웃 개선

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 11:07:17 +09:00
9b1a1e3dc7 feat: [수주관리] 수주 등록 페이지 거래처 API 연동
- SAMPLE_CLIENTS 하드코딩 제거
- useClientList 훅으로 실제 API 데이터 조회
- 로딩 상태 처리 ("불러오는 중...")
- 견적 선택 시 발주처 필드 비활성화
2026-01-09 22:14:38 +09:00
b9af603cb7 feat(api): apiClient.delete에 body 데이터 지원 추가
- DELETE 요청 시 body 데이터 전송 가능하도록 수정
- 일괄 삭제 기능 (bulk delete) 정상 작동 지원
- 영향 범위: 7개 모듈의 일괄 삭제 기능

Phase 3.2 품목관리 API 연동 완료
2026-01-09 22:07:30 +09:00
e4b5e6ae30 feat(construction): Phase 3.1 카테고리관리 API 연동 완료
- apiClient에 patch 메서드 추가
- apiClient.get에 params 옵션 지원 추가
- updateCategory: PUT → PATCH 수정
- reorderCategories: PUT → POST 수정
2026-01-09 22:01:47 +09:00
ae90bd7c52 feat(construction): 구조검토관리 Frontend API 연동
- Mock 데이터 제거
- apiClient 기반 실제 API 호출로 전환
- 타입 변환 함수 구현 (snake_case ↔ camelCase)

API Functions:
- getStructureReviewList: 목록 조회 + 검색/필터/정렬/페이지네이션
- getStructureReviewStats: 통계 조회
- getStructureReview: 상세 조회
- createStructureReview: 생성
- updateStructureReview: 수정
- deleteStructureReview: 단일 삭제
- deleteStructureReviews: 일괄 삭제
2026-01-09 21:31:42 +09:00
626c138fd2 fix: 수주관리 목록 페이지 서버 에러 수정
- page.tsx: API 응답 데이터 구조 수정 (ordersResult.data → ordersResult.data.items)
- actions.ts: Quote 필드명 수정 (quote_no → quote_number)
2026-01-09 21:27:08 +09:00
byeongcheolryu
b8bd93532c feat(WEB): QMS 품질관리 Day1 심사 기능 구현
- Day1 체크리스트 패널 및 문서 뷰어 컴포넌트 추가
- 심사 진행 상태바 및 설정 패널 구현
- Day 탭 네비게이션 컴포넌트 추가
- 목업 데이터 확장 및 타입 정의 보강

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 20:02:57 +09:00
d43433295d feat(construction): Phase L 건설관리 3개 모듈 Mock → API 연동
- pricing-management: Mock → apiClient 표준화, types.ts 타입 추가
- estimates: Mock → apiClient 표준화 (복잡한 중첩 타입 처리)
- category-management: Mock → apiClient 표준화 (에러 타입 처리)
2026-01-09 19:57:30 +09:00
5db6e59bbc refactor(construction): 건설관리 3개 모듈 apiClient 표준화
- 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 등)
2026-01-09 19:21:34 +09:00
dcd79a2863 Merge remote-tracking branch 'origin/master' 2026-01-09 19:20:24 +09:00
byeongcheolryu
284c19f036 refactor(WEB): Server Component → Client Component 전면 마이그레이션
- 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>
2026-01-09 19:19:37 +09:00
b7b8b90398 refactor(handover-report): 커스텀 fetch → apiClient 표준화
- 커스텀 apiRequest 함수 제거 (52줄)
- cookies() 직접 사용 제거
- @/lib/api의 apiClient 사용으로 통일
- 명시적 API 타입 정의 추가
  - ApiHandoverReport, ApiManager, ApiContractItem
  - ApiExternalEquipmentCost, ApiHandoverReportStats
- 코드량 499줄 → 452줄 (47줄 감소)
2026-01-09 19:08:28 +09:00
311ddd9a2e docs: Phase D~K 마이그레이션 완료 상태 반영 (95%)
- 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 연동 완료
2026-01-09 17:30:48 +09:00
6615f39466 feat(order-management): Mock → API 연동 및 common-codes 유틸리티 추가
- 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 추가
2026-01-09 17:25:24 +09:00
d472b771e1 fix(approval): 결재선/참조 Select 값 변경 불가 버그 수정
- 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 페이지)
2026-01-09 17:06:04 +09:00
5fa20c837a feat(item-management): Mock → API 연동 완료
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)
2026-01-09 16:58:50 +09:00
749f0ce3c3 feat: 거래처관리 API 연동 (Phase 2.2)
- partners/actions.ts: Mock → API 연동 전환
- apiRequest 헬퍼 함수 추가 (쿠키 기반 인증)
- transform 함수: client_type ↔ partnerType 변환
- getPartnerList, getPartner, createPartner, updatePartner
- getPartnerStats, deletePartner, deletePartners
- 구현 문서 추가
2026-01-09 16:46:32 +09:00
273d5709cd feat(시공사): 2.1 현장관리 - Frontend API 연동
- actions.ts: Mock 데이터 → API 연동
- types.ts: SiteStats에 suspended, pending 추가
- 문서: API 연동 상세 문서 추가
2026-01-09 16:35:12 +09:00
78e193c8df refactor(work-orders): process_type을 process_id FK로 변환
- types.ts: processId, processName, processCode 추가, transform 함수 구현
- actions.ts: getProcessOptions() 추가, CRUD에 transform 적용
- WorkOrderCreate.tsx: 공정 목록 API 동적 로딩
- WorkOrderList.tsx: processName 표시로 변경
- WorkOrderDetail.tsx: processName 표시, processType은 로직용 유지
2026-01-09 16:28:49 +09:00
9d30555265 feat(시공사): 1.2 인수인계보고서 - Frontend API 연동
- Mock 데이터 제거, 실제 API 연동으로 변환
- apiRequest 헬퍼 함수 구현 (쿠키 기반 인증)
- 7개 API 함수 구현: list, stats, detail, create, update, delete, bulk-delete
- snake_case → camelCase 타입 변환 함수 추가
2026-01-09 16:08:18 +09:00
byeongcheolryu
e4af3232dd chore(WEB): CEO 대시보드 개선 및 모바일 테스트 계획 추가
- CEO 대시보드: 일일보고, 접대비, 복리후생 섹션 개선
- CEO 대시보드: 상세 모달 기능 확장
- 카드거래조회: 기능 및 타입 확장
- 알림설정: 항목 설정 다이얼로그 추가
- 회사정보관리: 컴포넌트 개선
- 모바일 오버플로우 테스트 계획서 추가 (Galaxy Fold 대응)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 16:02:04 +09:00
d15a2037d7 feat(work-orders): 다중 담당자 UI 구현
- actions.ts: createWorkOrder에 assigneeIds 배열 파라미터 추가
- actions.ts: assignWorkOrder가 단일/배열 모두 지원하도록 변경
- WorkOrderCreate.tsx: assigneeIds 배열로 API 전송
- WorkOrderDetail.tsx: 다중 담당자 표시 (쉼표 구분)
2026-01-09 15:51:36 +09:00
8172226d89 Merge remote-tracking branch 'origin/master' 2026-01-09 15:04:13 +09:00
byeongcheolryu
f92393f898 feat(WEB): 3depth 메뉴 구조 지원 및 CEO 대시보드 개선
- 사이드바 메뉴 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>
2026-01-09 13:35:05 +09:00
668cde3b29 Merge remote-tracking branch 'origin/master' 2026-01-09 11:01:17 +09:00
byeongcheolryu
c4412295fa feat(WEB): 폴더블 기기(Galaxy Fold) 레이아웃 대응 및 CEO 대시보드 개선
- 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>
2026-01-09 11:00:39 +09:00
c651e7bc72 feat(WEB): 수주관리 Phase 3 완료 - 고급 기능 구현
- 3.1 견적→수주 변환: QuotationSelectDialog API 연동 + createOrderFromQuote()
- 3.2 생산지시 생성 연동: createProductionOrder() + production-order 페이지 개선
- 3.3 상태 흐름 관리: 수주확정 다이얼로그 + updateOrderStatus() 연동

주요 변경:
- [id]/page.tsx: 수주확정 버튼/다이얼로그 추가 (DRAFT→CONFIRMED 상태 전환)
- [id]/production-order/page.tsx: API 연동으로 실제 생산지시 생성
- actions.ts: createProductionOrder(), createOrderFromQuote(), getQuotesForSelect() 추가
- QuotationSelectDialog.tsx: Mock→API 연동 (확정된 견적 조회)
- OrderRegistration.tsx: 견적 연동 처리

수주관리 API 연동 100% 완료 (Phase 1-3)
2026-01-09 10:25:22 +09:00
2d7809b4e0 feat: [시공관리] 계약관리 Frontend API 연동
- actions.ts Mock 데이터 → 실제 API 호출로 전환
- apiRequest 헬퍼 함수 구현 (인증, 에러 처리)
- API 응답 snake_case → camelCase 변환 함수 추가
- CRUD 전체 기능 API 연동 완료
2026-01-09 10:18:57 +09:00
12b4259ebc refactor(work-orders): 코드 리뷰 기반 프론트엔드 개선
## 수정 내용
- 검색 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)
2026-01-09 08:32:52 +09:00
fde8726e14 feat(WEB): 수주관리 Phase 2 타입 정의 확장 및 공정관리 개별 품목 표시 수정
- Order, OrderItem 인터페이스에 상세 페이지용 필드 추가
- OrderFormData, OrderItemFormData에 수정 페이지용 필드 추가
- 변환 함수에서 새 필드 매핑 처리
- 공정관리 개별 품목을 ID 대신 품목명으로 표시
2026-01-08 20:57:49 +09:00
ba36c0ec19 feat: 공정 관리 Frontend actions 업데이트
- Process 관련 API 호출 로직 수정
2026-01-08 20:23:58 +09:00
d797868c17 fix(WEB): 공정관리 개별 품목 저장 안되는 버그 수정
- selectedItemCodes → selectedItemIds로 변경
- item.code 대신 item.id 사용하여 API에 올바른 ID 전달
- 검색어 유효성 검사 추가 (한글 1자, 영문 2자 이상)
- 품목 조회 size 100 → 1000으로 변경
2026-01-08 20:20:08 +09:00
3d2dea6118 feat: 수주 관리 Phase 3 - Frontend API 연동
- createOrderFromQuote(): 견적→수주 변환 API 호출
- createProductionOrder(): 생산지시 생성 API 호출
- WorkOrder 타입 및 변환 함수 추가
- 변경 내역 문서 작성
2026-01-08 20:17:55 +09:00
6632943c7e Merge remote-tracking branch 'origin/master' 2026-01-08 18:41:48 +09:00