Commit Graph

256 Commits

Author SHA1 Message Date
유병철
62ef2b1ff9 feat(WEB): IntegratedDetailTemplate 통합 템플릿 구현 및 Phase 1~8 마이그레이션
- Phase 1: 기안함(DocumentCreate) 마이그레이션
- Phase 2: 작업지시(WorkOrderCreate/Edit) 마이그레이션
- Phase 3: 출하(ShipmentCreate/Edit) 마이그레이션
- Phase 4: 사원(EmployeeForm) 마이그레이션
- Phase 5: 게시판(BoardForm) 마이그레이션
- Phase 6: 1:1문의(InquiryForm) 마이그레이션
- Phase 7: 공정(ProcessForm) 마이그레이션
- Phase 8: 수입검사/품질검사(InspectionCreate) 마이그레이션
- DetailActions에 showSave 옵션 추가
- 각 도메인별 config 파일 생성

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 19:31:07 +09:00
0e963c0f11 feat: CEO 대시보드 Phase 1 API 연동 (5개 섹션)
- DailyReport, Receivable, DebtCollection, MonthlyExpense, CardManagement API 연동
- useCEODashboard Hook 추가 (병렬 API 호출)
- API → Frontend 타입 변환 함수 및 CheckPoint 생성 로직 구현
- API 실패 시 mockData fallback 패턴 적용
2026-01-20 18:51:05 +09:00
유병철
6b0ffc810b refactor: ShipmentDetail IntegratedDetailTemplate 마이그레이션
- PageLayout → IntegratedDetailTemplate 전환
- renderHeaderActions: 문서 미리보기, 삭제, 상태변경 버튼
- renderViewContent: 출고정보 Card 섹션들
- 템플릿 마이그레이션 현황 문서 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 17:16:35 +09:00
d12e2e0b4c fix: API 응답 래퍼 패턴 수정 및 기능 개선
- construction actions.ts 파일들 API 응답 래퍼 패턴 수정
  - handover-report, order-management, site-management, structure-review
  - apiClient 반환값 { success, data } 구조에 맞게 수정
- ShipmentManagement 기능 개선
- WorkerScreen 컴포넌트 수정
- .gitignore에 package-lock.json, tsconfig.tsbuildinfo 추가
2026-01-20 17:04:32 +09:00
유병철
09b2c256fb refactor: IntegratedDetailTemplate 마이그레이션 (수주/견적)
- order-management-sales/[id]/page.tsx: PageLayout → IntegratedDetailTemplate (view)
- order-management-sales/[id]/edit/page.tsx: PageLayout → IntegratedDetailTemplate (edit)
- EstimateDetailForm.tsx: PageLayout → IntegratedDetailTemplate (view/edit)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 16:47:33 +09:00
29c257c9f8 fix: 계약관리 API 응답 파싱 오류 수정
- Laravel ApiResponse 래퍼 구조 반영 ({ success, data })
- getContractList: response.data.data로 페이지네이션 데이터 접근
- getContractStats: response.data로 통계 데이터 접근
- getContractStageCounts: response.data로 단계별 건수 접근
- getContract/getContractDetail: response.data로 단건 데이터 접근
- createContract/updateContract: response.data로 생성/수정 결과 접근
2026-01-20 16:15:53 +09:00
8c8d76b6c3 feat: 견적 → 입찰 전환 기능 구현
- 견적 상세에서 입찰 등록 버튼 및 확인 다이얼로그 추가
- createBiddingFromEstimate 액션 연동
- 입찰 등록 후 리다이렉트 URL 수정 (/biddings → /bidding)
- getUserOptions API 경로 수정 (/users → /users/index)
- per_page 파라미터명 수정 (size → per_page)
2026-01-20 16:15:40 +09:00
d12618f320 fix(WEB): 수주 페이지 필드 매핑 및 제품-부품 트리 구조 개선
- ApiClient 인터페이스: representative → manager_name, contact_person 변경
- transformApiToFrontend: client.representative → client.manager_name 수정
- ApiOrderItem에 floor_code, symbol_code 필드 추가 (제품-부품 매핑)
- ApiOrder에 options 타입 정의 추가
- ApiQuote에 calculation_inputs 타입 정의 추가
- 수주 상세 페이지 제품-부품 트리 구조 UI 개선
2026-01-20 16:14:45 +09:00
dac1d9bc2b feat: 견적서 모달 회사정보 API 연동
- getCompanyInfo() API 함수 추가 (GET /api/v1/tenants)
- EstimateDocumentModal에 회사정보 API 연동
- 하드코딩된 회사명/주소/연락처 제거
- 결재란 견적자명 동적 표시
- constants.ts 모듈 유효성 수정
2026-01-20 16:10:27 +09:00
2465d739fe feat: 견적서 목업 데이터 → API 연동 전환
- EstimateDetailTableSection: 하드코딩된 셀렉트 옵션 → API 데이터 연동
  - 재료/도장/모터/제어기/시공비: getCommonCodeOptions() 사용
  - 공과 품목: getExpenseItemOptions() 사용
- EstimateListClient: 거래처/견적자 필터 API 연동
  - MOCK_PARTNERS → getClientOptions()
  - MOCK_ESTIMATORS → getUserOptions()
- actions.ts: 공통코드/거래처/사용자/공과품목 API 함수 추가
- constants.ts: MOCK_MATERIALS 제거
- EstimateDetailForm: MOCK_MATERIALS import 제거
2026-01-20 16:10:23 +09:00
유병철
29b4ba8b5b Merge branch 'feature/universal-detail-component' into master
Phase 6 IntegratedDetailTemplate 마이그레이션 완료
- 41개 컴포넌트 마이그레이션
- 34개 Config 파일 생성
- 코드 1112줄 감소
2026-01-20 15:57:11 +09:00
유병철
61e3a0ed60 feat(WEB): Phase 6 IntegratedDetailTemplate 마이그레이션 완료
Phase 6 마이그레이션 (41개 컴포넌트 완료):
- 건설/시공: 협력업체, 시공관리, 기성관리, 발주관리, 계약관리 등
- 영업: 견적관리(V2), 고객관리(V2), 수주관리
- 회계: 청구관리, 매입관리, 매출관리, 거래처관리, 악성채권 등
- 생산: 작업지시, 검수관리
- 출고: 출하관리
- 자재: 입고관리, 재고현황
- 고객센터: 문의관리, 이벤트관리, 공지관리
- 인사: 직원관리
- 설정: 권한관리

주요 변경사항:
- 34개 xxxConfig.ts 파일 생성 (설정 기반 페이지 구성)
- PageLayout/PageHeader → IntegratedDetailTemplate 통합
- 일관된 타이틀/버튼 영역 (목록, 상세, 수정, 삭제)
- 1112줄 코드 감소 (중복 제거)

프로젝트 공통화 현황 분석 문서 추가:
- 상세 페이지 62%, 목록 페이지 82% 공통화 달성
- 추가 공통화 기회 및 로드맵 정리

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 15:51:02 +09:00
유병철
6f457b28f3 refactor(WEB): 품목관리 경로 통합 - /items 삭제 및 /production/screen-production으로 일원화
- /items 폴더 삭제 (중복 경로 제거)
- /production/screen-production에 신버전 DynamicItemForm 기반 페이지 적용
- 구버전 ItemForm 연결 제거로 등록/수정 오류 해결
- 컴포넌트 내부 경로 참조 /items → /production/screen-production 변경
  - ItemListClient, ItemForm, ItemDetailClient, ItemDetailEdit, DynamicItemForm

Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
2026-01-20 11:34:59 +09:00
유병철
36322a0927 feat(WEB): Phase 4-5 V2 URL 패턴 통합 마이그레이션 완료
Phase 5 완료 (5개 페이지):
- 입금관리, 출금관리, 단가관리(건설): Pattern A (기존 V2 컴포넌트 활용)
- 판매수주관리, 품목관리: Pattern B (View/Edit 컴포넌트 분리)

신규 컴포넌트:
- OrderSalesDetailView.tsx, OrderSalesDetailEdit.tsx
- ItemDetailView.tsx, ItemDetailEdit.tsx

기타 정리:
- backup 파일 삭제 (Dashboard, ItemMasterDataManagement 등)
- 타입 정의 개선 (건설 도메인 types.ts)
- useAuthGuard 훅 정리

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 09:00:27 +09:00
유병철
1d7b028693 feat(WEB): Phase 2-3 V2 마이그레이션 완료 및 ServerErrorPage 적용
Phase 2 완료 (4개):
- 노무관리, 단가관리(건설), 입금, 출금

Phase 3 라우팅 구조 변경 완료 (22개):
- 거래처(영업), 팝업관리, 공정관리, 게시판관리, 대손추심, Q&A
- 현장관리, 실행내역, 견적관리, 견적(테스트)
- 입찰관리, 이슈관리, 현장설명회, 견적서(건설)
- 협력업체, 시공관리, 기성관리, 품목관리(건설)
- 회계 도메인: 거래처, 매출, 세금계산서, 매입

신규 컴포넌트:
- ErrorCard: 에러 페이지 UI 통일
- ServerErrorPage: V2 페이지 에러 처리 필수
- V2 Client 컴포넌트 및 Config 파일들

총 47개 상세 페이지 중 28개 완료, 19개 제외/불필요

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 17:31:28 +09:00
유병철
1a6cde2d36 feat(WEB): IntegratedDetailTemplate 통합 템플릿 구현 및 Phase 1 마이그레이션
- IntegratedDetailTemplate 컴포넌트 구현 (등록/상세/수정 통합)
- accounts (계좌관리) IntegratedDetailTemplate 마이그레이션
- card-management (카드관리) IntegratedDetailTemplate 마이그레이션
- Skeleton UI 컴포넌트 추가 및 loading.tsx 적용
- 기존 CardDetail.tsx, CardForm.tsx _legacy 폴더로 백업

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 15:29:51 +09:00
유병철
d2f5f3d0b5 fix(WEB): test-urls 페이지 경로 수정
- claudedocs 폴더 정리 후 누락된 경로 추가
- dev/test-urls: claudedocs/dev/ 경로로 수정
- dev/construction-test-urls: claudedocs/dev/ 경로로 수정

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-17 13:40:04 +09:00
유병철
b59150551e chore(WEB): PermissionManagement 오류 수정 및 claudedocs 폴더 정리
- PermissionManagement externalSelection 콜백 함수 오류 수정
  - setSelectedItems → onToggleSelection, onToggleSelectAll, getItemId 변경
- claudedocs 문서 폴더별 정리 (26개 파일)
  - dashboard/, guides/, settings/, construction/, sales/ 등

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-17 13:11:35 +09:00
유병철
736c29a007 feat(WEB): CEO 대시보드 캘린더에 이슈 통합 및 오늘의 이슈 UI 개선
- 캘린더에 오늘의 이슈 데이터 표시 기능 추가
- 이슈 클릭 시 상세 페이지 이동 기능 구현
- 캘린더 필터에 '이슈' 옵션 추가
- TodayIssueListItem에 date 필드 추가
- 오늘의 이슈 섹션 반응형 그리드 레이아웃 개선
- 필터 드롭다운에 항목별 건수 표시
- 캘린더 상세 목록 높이 동적 조절 (calc(100vh-400px))
- 테스트 URL 페이지 기능 개선

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 18:34:09 +09:00
abc3fea293 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	src/components/hr/SalaryManagement/index.tsx
#	src/components/production/WorkResults/WorkResultList.tsx
#	tsconfig.tsbuildinfo
2026-01-16 15:47:13 +09:00
98b65a6ca4 feat(WEB): 작업지시 수정 페이지 및 생산 관리 기능 개선
신규 기능:
- 작업지시 수정 페이지 추가 (/production/work-orders/[id]/edit)
- WorkOrderEdit 컴포넌트 신규 생성
- bulk-actions.ts 일괄 작업 유틸리티 추가
- toast-utils.ts 알림 유틸리티 추가

기능 개선:
- ProductionDashboard 대시보드 액션 및 표시 개선
- WorkOrderCreate 생성 화면 개선
- WorkResultList 작업 결과 목록 타입 및 표시 개선
- EstimateDetailForm 견적 폼 개선
- QuoteRegistration 견적 등록 개선
- client-management-sales-admin 거래처 관리 개선
- error-handler.ts 에러 처리 개선
2026-01-16 15:39:02 +09:00
byeongcheolryu
4d249895ed fix: boards 페이지 externalPagination NaN 이슈 수정
- externalPagination에 누락된 필수 props 추가
  - totalPages: 총 페이지 수
  - totalItems: 총 항목 수
  - itemsPerPage: 페이지당 항목 수
  - onPageChange: 페이지 변경 핸들러

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 15:33:49 +09:00
34deb61632 fix(WEB): 작업지시 상세/생성 화면 버그 수정
- 작업지시 상세: 우선순위, 비고(메모), 수정버튼 표시 추가
- 공정 진행 상태: pending/unassigned 시 첫 단계 미완료로 표시
- 생산지시 생성: 담당자 선택 시 users.id 사용하도록 수정
  - Employee 타입에 userId 필드 추가
  - 시스템 계정이 있는 직원만 담당자로 선택 가능
2026-01-16 15:30:59 +09:00
byeongcheolryu
134dec8f9d fix: boards 페이지 headerActions 함수 타입 수정
- headerActions를 ReactNode에서 함수 타입으로 변경
- UniversalListPage의 headerActions 타입 규격에 맞춤
- "_config_headerActions.call is not a function" 에러 해결

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 15:30:39 +09:00
byeongcheolryu
60505f52ea Merge branch 'feature/universal-list-component' into master
UniversalListPage 전체 마이그레이션 머지
- 충돌 해결: VendorManagement, WorkResultList, tsconfig.tsbuildinfo
- feature 브랜치의 UniversalListPage 마이그레이션 버전으로 통일

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 15:24:21 +09:00
byeongcheolryu
ad493bcea6 feat(WEB): UniversalListPage 전체 마이그레이션 및 코드 정리
- UniversalListPage/IntegratedListTemplateV2 컴포넌트 기능 개선
- 회계, HR, 건설, 고객센터, 결재, 설정 등 전체 리스트 컴포넌트 마이그레이션
- 테스트 페이지 및 미사용 API 라우트 정리 (board-test, order-management-test 등)
- 미들웨어 토큰 갱신 로직 개선
- AuthenticatedLayout 구조 개선
- claudedocs 문서 업데이트

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 15:19:09 +09:00
b14ea842f8 fix: 견적서 공과 상세 품목 조회 API 응답 파싱 수정
- getExpenseItemOptions() 함수의 API 응답 구조 수정
- response.data → response.data.data로 페이지네이션 응답 올바르게 파싱
- items 테이블에서 item_type='RM' 품목 정상 조회되도록 수정
2026-01-16 12:47:16 +09:00
d863cccd9f chore: 디버그 로그 제거 2026-01-16 11:00:01 +09:00
f529aea087 feat(WEB): 작업지시 생성 개별품목 매칭 로직 추가
matchItemToProcess 함수에 개별품목(process_items) 매칭 지원:
- 정확한 이름/코드 매칭
- 부분 매칭 지원 (예: "상부 케이스" ↔ "상부 케이스 1219mm")
- 3개 공정(스크린/절곡/슬랫)에 14개 품목 정상 분류
2026-01-15 22:02:09 +09:00
07828b63f2 feat(WEB): 생산 현황판 공정 기반 동적 탭 전환
- 하드코딩된 공장 탭을 공정 마스터 데이터 기반 동적 탭으로 변경
- getProcessOptions() API 함수 추가 (/api/v1/processes/options)
- ProcessOption 타입 및 동적 TabOption 타입 추가
- WorkOrder 타입에 processCode, processName 필드 추가
- 탭 선택 시 process_code로 서버 사이드 필터링

변경 전: 전체/스크린공장/슬랫공장/절곡공장 (하드코딩)
변경 후: 전체 + 공정 마스터 데이터 기반 동적 탭
2026-01-15 20:35:28 +09:00
e998cfa2f8 fix(WEB): E2E 테스트 버그 수정 (Phase 1-3)
Phase 1 (Critical):
- 매출관리 계정과목 일괄변경 함수 추가 (bulkUpdateAccountCode)
- 근태관리 사유 등록 페이지 생성 (/hr/documents/new)

Phase 2 (High):
- 근태 등록 서버 에러 수정 (json_details 유효성 검증)
- 직원 등록 서버 에러 수정 (snake_case 필드명 변환)
- 근태관리 엑셀 다운로드 구현 (exportAttendanceExcel)

Phase 3 (Medium):
- 급여관리 엑셀 다운로드 구현 (exportSalaryExcel)
- 급여관리 지급항목 인라인 수정 기능 구현
2026-01-15 18:36:10 +09:00
dc0ab88fb9 fix(WEB): 견적 등록 제품 선택 목록 React key 오류 수정
- 제품 목록에서 null/undefined item_code 필터링
- 중복 item_code 제거 로직 추가
- key prop에 index 조합으로 고유성 보장
2026-01-15 16:30:12 +09:00
2d1444b956 fix: 수주 선택 모달 안내 문구 수정
- "확정 상태" → "등록 상태"로 변경
- "작업지시 미생성" → "생산지시 미생성"으로 변경
2026-01-15 16:13:40 +09:00
f6c8610104 fix: 견적 선택 다이얼로그 개선
- actions.ts: for_order=true 파라미터 추가 (수주 전환된 견적 제외)
- QuotationSelectDialog: 두 번 호출되는 문제 수정
  - 두 개의 useEffect를 하나로 통합
  - 초기 로드는 즉시, 검색은 디바운스 적용
2026-01-15 16:13:30 +09:00
0f8f40fc7b fix: 견적관리 공과 품목 API 파라미터 및 MES 기능 개선
- 공과 상세 셀렉트 박스 API 파라미터 수정 (type → item_type)
- VendorManagement 목록 컴포넌트 개선
- 작업지시/작업실적 타입 및 UI 개선
- 검사관리 actions 수정
2026-01-15 08:52:40 +09:00
6dc91daaca fix: 품목관리 API 응답 파싱 및 필드명 수정
- 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 추가
2026-01-14 20:04:44 +09:00
ebc7320eeb feat(MES): 작업일지 모달 API 연동 및 버그 수정
- WorkLogModal: API 연동으로 실제 작업지시 데이터 표시
  - getWorkOrderById action 사용
  - 로딩/에러 상태 처리
  - workStats 자동 계산 (완료/진행중/대기)
- types.ts: item.status 하드코딩 버그 수정
  - 실제 API 응답값 사용하도록 변경
- WorkOrderDetail: 작업지시 취소 버튼 및 모달 prop 정리
- WorkerScreen: WorkLogModal prop 변경 (order → workOrderId)
2026-01-14 15:39:07 +09:00
byeongcheolryu
8639eee5df Merge branch 'master' into feature/universal-list-component 2026-01-14 15:30:57 +09:00
byeongcheolryu
e76fac0ab1 feat(WEB): UniversalListPage 컴포넌트 및 파일럿 마이그레이션
- UniversalListPage 템플릿 컴포넌트 생성
- 카드관리(HR) 파일럿 마이그레이션 (기본 케이스)
- 게시판목록 파일럿 마이그레이션 (동적 탭 fetchTabs)
- 발주관리 파일럿 마이그레이션 (ScheduleCalendar beforeTableContent)
- 클라이언트 사이드 필터링 지원 (customFilterFn, customSortFn)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 15:27:59 +09:00
87b7aa9d67 Merge remote-tracking branch 'origin/master' 2026-01-14 14:51:02 +09:00
byeongcheolryu
b08366c3f7 feat(WEB): Pretendard 폰트 적용 및 HR/회계 모바일 필터 마이그레이션
- 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>
2026-01-14 13:46:56 +09:00
8f02f68390 feat: 건설 견적 상세 페이지 API 연동 완료
- 견적요약, 공과상세, 품목 단가조정 데이터 API 연동
- options JSON 필드에서 데이터 읽기/쓰기 처리
- view/edit 페이지에서 목업 데이터 제거
2026-01-14 12:35:11 +09:00
2f1946a834 feat(SAM/WEB): 수주관리 페이지에 수주완료 FCM 알림 버튼 추가
- fcm.ts에 sendSalesOrderNotification 프리셋 함수 추가
- channel_id: push_sales_order, type: sales_order
- order-management-sales 페이지에 수주완료 버튼 추가
2026-01-13 20:50:52 +09:00
b30a51e84a feat(SAM/WEB): 거래처관리 페이지에 신규업체 FCM 알림 버튼 추가
- fcm.ts에 sendNewClientNotification 프리셋 함수 추가
  - channel_id: push_urgent (신규업체 알림용)
  - type: new_client
- 거래처관리 페이지에 "신규업체" 알림 버튼 추가
  - Bell 아이콘과 함께 헤더 액션에 배치
  - useTransition으로 로딩 상태 관리
2026-01-13 20:42:43 +09:00
60d42b2e2e fix(WEB): 결재 알림 채널 ID를 push_payment로 변경
- channel_id: 'approval' → 'push_payment'
- 앱에서 정의된 결재 알림 채널 사용
2026-01-13 20:31:08 +09:00
e5851e91b8 fix(WEB): Next.js 빌드 오류 수정
- xlsx 패키지 설치 (LocationListPanel.tsx에서 사용)
- createContract 중복 선언 제거 (actions.ts)
2026-01-13 20:21:04 +09:00
f67832f228 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	src/app/[locale]/(protected)/construction/project/bidding/estimates/[id]/edit/page.tsx
#	src/app/[locale]/(protected)/construction/project/bidding/estimates/[id]/page.tsx
2026-01-13 19:58:09 +09:00
4d7601abaf chore(WEB): package-lock.json 업데이트 2026-01-13 19:48:20 +09:00
8dd49e4fa2 feat(WEB): formatAmount 유틸리티 기능 추가 2026-01-13 19:48:08 +09:00
42b0a5778e fix(WEB): 영업 페이지 및 견적 타입 수정
- 생산지시 페이지 에러 처리 개선
- 견적관리 상세 페이지 개선
- quotes types 수정
2026-01-13 19:48:03 +09:00