Commit Graph

57 Commits

Author SHA1 Message Date
32a1ed2de7 feat: 견적 품목 추가 시 단가 자동 조회 기능
- fetchItemPrices 클라이언트 API 함수 추가 (items.ts)
- 품목 선택 시 /api/proxy/quotes/items/prices를 통해 단가 조회
- 조회된 단가로 견적금액요약에 즉시 반영
2026-01-29 08:05:08 +09:00
6bcd298995 feat: 수주/견적 기능 개선 및 PDF 생성 업데이트
- 수주 상세 뷰/수정 컴포넌트 개선
- 견적 위치 패널 업데이트
- PDF 생성 API 수정
- 레이아웃 및 공통코드 API 업데이트
- 패키지 의존성 업데이트
2026-01-29 01:12:58 +09:00
유병철
1f640622e0 feat(WEB): 자재/영업/품질 모듈 기능 개선 및 문서 컴포넌트 추가
- 입고관리: 상세/목록 UI 개선, actions 로직 강화
- 재고현황: 상세/목록 개선, StockAuditModal 신규 추가
- 영업주문관리: 페이지 구조 개선, OrderSalesDetailEdit 기능 강화
- 주문: OrderRegistration 개선, SalesOrderDocument 신규 추가
- 견적: QuoteTransactionModal 기능 개선
- 품질: InspectionModalV2, ImportInspectionDocument 대폭 개선
- UniversalListPage: 템플릿 기능 확장

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 21:15:25 +09:00
3157fb9401 feat: 견적 산출 UI 개선 및 에러 메시지 상세화
- LocationDetailPanel: 제작사이즈(W1xH1), 산출중량(K kg), 산출면적(M m²) 표시
- actions.ts: BOM 계산 실패 시 상세 검증 에러 메시지 표시
- 오타 수정: 제적사이즈 → 제작사이즈
2026-01-27 23:36:16 +09:00
유병철
9964ccbc1f fix(WEB): 견적 개소 목록 테이블 확장 및 견적서 미리보기 개선
LocationListPanel:
- 개소 목록 테이블 컬럼 확장 (층, 부호, 사이즈, 제품, 수량)
- 수정/삭제 버튼 추가
- 테이블 헤더 스타일 변경 (어두운 배경)
- 선택 행 스타일 변경 (blue → orange)

QuotePreviewContent:
- 공급자 정보 테이블 확장 (대표자, FAX, 종목 추가)
- 품종 → 종류 라벨 변경
- 소계/할인율 행 레이아웃 개선

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 20:10:48 +09:00
유병철
a48937ae52 Merge branch 'master' of http://114.203.209.83:3000/SamProject/sam-react-prod 2026-01-27 19:50:35 +09:00
유병철
afd7bda269 feat(WEB): 견적 시스템 개선, 엑셀 다운로드, PDF 생성 기능 추가
견적 시스템:
- QuoteRegistrationV2: 할인 모달, 거래명세서 모달, vatType 필드 추가
- DiscountModal: 할인율/할인금액 상호 계산 모달
- QuoteTransactionModal: 거래명세서 미리보기 모달
- LocationDetailPanel, LocationListPanel 개선

템플릿 기능:
- UniversalListPage: 엑셀 다운로드 기능 추가 (전체/선택 다운로드)
- DocumentViewer: PDF 생성 기능 개선

신규 API:
- /api/pdf/generate: Puppeteer 기반 PDF 생성 엔드포인트

UI 개선:
- 입력 컴포넌트 placeholder 스타일 개선 (opacity 50%)
- 각종 리스트 컴포넌트 정렬/필터링 개선

패키지 추가:
- html2canvas, jspdf, puppeteer, dom-to-image-more

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 19:49:03 +09:00
e246459a08 [WEB] feat(OrderManagement): 견적서 기반 수주 등록 기능 추가
- page.tsx: quoteId 파라미터로 견적 데이터 자동 로드
- actions.ts: getQuoteByIdForSelect 함수 추가
- index.ts: getQuoteByIdForSelect export 추가
- quotes/actions.ts: QuotationForSelect, QuotationItem 타입 export
2026-01-27 17:41:16 +09:00
c4644489e7 fix: getItemCategoryTree serverFetch 호출 수정
- URL에 NEXT_PUBLIC_API_URL 추가
- serverFetch 반환값 { response, error } 구조로 수정
2026-01-27 15:21:49 +09:00
bd712e562f feat: 견적 V2 동적 카테고리 탭 시스템 구현
- LocationDetailPanel: 하드코딩된 탭을 API 기반 동적 탭으로 변경
  - convertCategoryTreeToTabs(): 카테고리 트리 → 탭 변환
  - useEffect로 카테고리 API 로드
  - BENDING 하위 카테고리 개별 탭 처리
  - 레거시 process_group_key 호환 유지
- actions.ts: getItemCategoryTree() 함수 추가
  - /api/v1/categories/tree?code_group=item_category 호출
- types.ts: BomCalculationResultItem 타입 확장
  - process_group_key, category_code, is_manual 필드 추가
2026-01-27 15:17:39 +09:00
d54309aa92 fix: 견적 확정 시 finalize API 호출 및 라벨 수정
- 견적 확정 시 updateQuote + finalizeQuote 순차 호출
- is_final 플래그가 정상적으로 설정되어 목록에서 "최종확정" 뱃지 표시
- 버튼 라벨: 임시저장 → 저장, 최종저장 → 견적 확정
- 뱃지 라벨: 최종저장 → 견적 확정, 임시저장 → 저장됨
- toast 메시지 업데이트
2026-01-27 15:15:08 +09:00
2a92f48a2c fix: 견적 저장 버튼 라벨 수정
- 임시저장 → 저장 (일반 저장)
- 최종저장 → 견적 확정 (확정 기능)
2026-01-27 14:49:51 +09:00
05fd5b32f2 feat: 견적 V2 품목 검색 API 연동 및 수동 품목 관리 개선
- ItemSearchModal: API 프록시 라우트 연동, 검색 유효성 검사 (영문/한글 1자 이상)
- items.ts: HttpOnly 쿠키 인증을 위한 프록시 라우트 사용
- LocationDetailPanel: 수동 품목 추가 시 subtotals/grouped_items 동시 업데이트
- QuoteRegistrationV2: 견적 산출 시 수동 추가 품목(is_manual) 보존
- 상세별 합계에서 수동 추가 품목이 카테고리별로 표시되도록 개선
2026-01-27 14:28:17 +09:00
815ed9267e feat: 개소 추가 시 자동 BOM 계산 및 BOM 있는 제품만 필터
- 개소 추가 시 BOM 계산 자동 실행 (성공 시에만 추가)
- BOM 계산 실패 시 폼 초기화 방지, 에러 메시지 표시
- getFinishedGoods에 has_bom=1 파라미터 추가
- 제품 드롭다운에 코드+이름 함께 표시
- handleAddLocation을 async/await로 변경, boolean 반환
2026-01-27 12:47:38 +09:00
유병철
55e92bc7b4 fix(WEB): 모바일 반응형 UI 개선 및 개소 정보 수정 모달 추가
- CalendarHeader: 모바일에서 주/월 버튼 2줄 레이아웃으로 분리
- MobileCard: 제목 텍스트 overflow 시 truncate 적용
- DetailActions: 모바일 하단 sticky 버튼 바 overflow 수정
- OrderDetailForm: 모바일 하단 sticky 버튼 바 overflow 수정
- LocationDetailPanel: 오픈사이즈 옆 수정 버튼에 모달 연결
- LocationListPanel: 개소 목록에 수정/삭제 버튼 추가
- LocationEditModal: 개소 정보 수정 팝업 신규 생성

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 11:28:12 +09:00
cf749e0f34 fix(WEB): 견적 저장 시 is_final 플래그 추가
- 임시저장: status='draft', is_final=false (최초작성)
- 최종저장: status='finalized', is_final=true (최종확정)
2026-01-26 22:09:55 +09:00
f71a84f06d refactor(WEB): 견적관리 목록 페이지 V2 URL 패턴 적용
- 목록 페이지에서 V1 등록 로직 제거
- ?mode=new → /new 리다이렉트 처리 (V1 호환)
- QuoteManagementClient 링크 V2 패턴으로 변경
  - 견적 등록: ?mode=new → /new
  - 상세 보기: ?mode=view 제거 (기본 view)
- DevToolbar test URL → V2 URL로 업데이트
2026-01-26 22:04:19 +09:00
05b0ba73be refactor(WEB): 견적관리 URL 구조 마이그레이션 Phase 2 완료
- test-new → new 경로 정식화 (V2 등록 페이지)
- test/[id] → [id] 경로 정식화 (V2 상세/수정 페이지)
- test 폴더 삭제 (test-new/, test/[id]/)
- V1 페이지 백업 파일 보존 (.v1-backup)
- LocationDetailPanel, QuoteSummaryPanel 개선
- types.ts 변환 함수 정리

V2 URL 패턴:
- 등록: /sales/quote-management/new
- 상세: /sales/quote-management/[id]
- 수정: /sales/quote-management/[id]?mode=edit
2026-01-26 21:34:13 +09:00
f9dafbc02c fix(date): UTC 기반 날짜를 로컬 타임존으로 변경
- 공통 날짜 유틸리티 함수 추가 (src/utils/date.ts)
  - getLocalDateString(): 로컬 타임존 YYYY-MM-DD 포맷
  - getTodayString(): 오늘 날짜 반환
  - getDateAfterDays(): N일 후 날짜 계산
  - formatDateForInput(): API 응답 → input 포맷 변환

- toISOString().split('T')[0] 패턴을 공통 함수로 교체
  - 견적: QuoteRegistration, QuoteRegistrationV2, types
  - 건설: contract, site-briefings, estimates, bidding types
  - 건설: IssueDetailForm, ConstructionDetailClient, ProjectEndDialog
  - 자재: InspectionCreate, ReceivingReceiptContent, StockStatus/mockData
  - 품질: InspectionManagement/mockData
  - 기타: PricingFormClient, ShipmentCreate, PurchaseOrderDocument
  - 기타: MainDashboard, attendance/actions, dev/generators

문제: toISOString()은 UTC 기준이라 한국(UTC+9)에서 오전 9시 이전에
      전날 날짜가 표시되는 버그 발생
해결: 로컬 타임존 기반 날짜 포맷 함수로 통일
2026-01-26 17:15:22 +09:00
7be8caf3f7 fix(WEB): LocationDetailPanel 테이블 key prop 누락 수정
- BOM 아이템 렌더링 시 id가 없을 경우 index 기반 fallback key 사용
- body, guide-rail, case, bottom, motor, accessory 탭 모두 적용
2026-01-26 16:36:36 +09:00
6402a38cb4 fix: 견적 V2 자동 견적 산출 UI 오류 수정
- actions.ts: BomBulkResponse 타입, FinishedGoods에 has_bom/bom 필드 추가
- QuoteRegistrationV2.tsx: handleCalculate 응답 처리, DevFill BOM 필터링
- LocationDetailPanel.tsx: bomItemsByTab process_group 기반 매핑
- QuoteSummaryPanel.tsx: detailTotals grouped_items 기반 계산

해결된 문제:
1. 오른쪽 패널 제품 리스트 미표시
2. 개소별 합계(상세소계) 미표시
3. 상세별 합계(그룹) 미표시
4. 예상 견적금액 0원 표시
2026-01-26 16:12:37 +09:00
ff93ab7fa2 fix(WEB): 견적V2 자동 산출 로직 안정화
- pendingAutoCalculate를 useRef로 변경 (무한 렌더링 방지)
- BOM 계산 결과 매핑 로직 수정
- bomMaterials 변환 로직 단순화 (API 응답 직접 사용)
- DevFill 기본 상품코드 수정
2026-01-26 15:30:07 +09:00
80f5ed426c feat: DevFill 후 자동 견적 산출 로직 추가 (WIP)
- pendingAutoCalculate 상태로 자동 산출 트리거
- calculateRef로 handleCalculate 참조
- DevFill 완료 후 100ms 딜레이 후 산출 실행
- 아직 금액 표시 안되는 이슈 있음
2026-01-26 13:54:14 +09:00
22d16bbb91 feat: DevToolbar 견적V2 채우기 기능 추가
- DevFillContext: quoteV2 페이지 타입 추가
- DevToolbar: test-new/test/[id] 패턴 및 견적V2 버튼 추가
- DevToolbar: 축소 상태에서 채우기 버튼 표시
- QuoteRegistrationV2: DevFill 훅 연동 (1~5개 랜덤 개소 생성)
  - 층, 부호, 가로, 세로, 제품, 수량 등 랜덤 데이터
  - 로그인 사용자 정보(localStorage) 연동
2026-01-26 13:39:21 +09:00
49d6e7e271 fix: V2 견적 작성자 하드코딩 제거 - currentUser 연동
- INITIAL_FORM_DATA.writer "드미트리" → "" 변경
- useAuth() 훅으로 currentUser.name 사용
- create 모드에서만 자동 설정 (edit/view는 기존 값 유지)
- useEffect로 지연 로딩 처리
2026-01-26 11:22:39 +09:00
b35da7b8a5 feat(quotes): V2 데이터 변환 함수 구현
- LocationItem, QuoteFormDataV2 타입 정의 추가
- transformV2ToApi: V2 폼 데이터 → API 요청 형식 변환
- transformApiToV2: API 응답 → V2 폼 데이터 변환
- BOM 결과 포함 시 자재 상세 items 생성 지원

refs: quote-management-url-migration-plan Step 1.1
2026-01-26 09:46:07 +09:00
유병철
f6551c7e8b feat(WEB): 전체 페이지 ?mode= URL 네비게이션 패턴 적용
- 등록(?mode=new), 상세(?mode=view), 수정(?mode=edit) URL 패턴 일괄 적용
- 중복 패턴 제거: /edit?mode=edit → ?mode=edit (16개 파일)
- 제목 일관성: {기능} 등록/상세/수정 패턴 적용
- 검수 체크리스트 문서 추가 (79개 페이지)
- UniversalListPage, IntegratedDetailTemplate 공통 컴포넌트 개선

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 12:27:43 +09:00
92af11c787 feat(WEB): FCM 푸시 알림, 입금 등록, 견적 저장 개선
- 수주 상세 페이지에서 수주확정 시 FCM 푸시 알림 발송 추가
- FCM 프리셋 함수 추가: 계약완료, 발주완료 알림
- 입금 등록 시 입금일, 입금계좌, 입금자명, 입금금액 입력 가능
- 견적 저장 시 토스트 메시지 정상 표시 수정
- ShipmentCreate SelectItem key prop 경고 수정
- DevToolbar 문법 오류 수정
2026-01-22 19:31:19 +09:00
유병철
269b901e64 refactor: UI 컴포넌트 추상화 및 입금/출금 등록 버튼 추가
- 입금관리, 출금관리 리스트에 등록 버튼 추가
- skeleton, confirm-dialog, empty-state, status-badge UI 컴포넌트 추가
- document-system 컴포넌트 추상화 (ApprovalLine, DocumentHeader 등)
- 여러 페이지 컴포넌트 리팩토링 및 코드 정리

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 17:21:42 +09:00
유병철
9464a368ba refactor: 모달 Content 컴포넌트 분리 및 파일 입력 UI 공통화
- 모달 컴포넌트에서 Content 분리하여 재사용성 향상
  - EstimateDocumentContent, DirectConstructionContent 등
  - WorkLogContent, QuotePreviewContent, ReceivingReceiptContent
- 파일 입력 공통 UI 컴포넌트 추가
  - file-dropzone, file-input, file-list, image-upload
- 폼 컴포넌트 코드 정리 및 중복 제거 (-4,056줄)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 15:07:17 +09:00
유병철
f2b87ddf0a Merge branch 'master' of http://114.203.209.83:3000/SamProject/sam-react-prod 2026-01-21 20:56:38 +09:00
유병철
835c06ce94 feat(WEB): 입력 컴포넌트 공통화 및 UI 개선
- 숫자/통화/전화번호/사업자번호 등 특수 입력 컴포넌트 추가
- MobileCard 컴포넌트 통합 (ListMobileCard 제거)
- IntegratedListTemplateV2 페이지네이션 버그 수정 (NaN 이슈)
- IntegratedDetailTemplate 타이틀 중복 수정
- 문서 시스템 컴포넌트 추가
- 헤더 벨 아이콘 포커스 스타일 개선

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 20:56:17 +09:00
e6ef80f17f Merge remote-tracking branch 'origin/master'
# Conflicts:
#	src/components/quotes/QuoteRegistration.tsx
2026-01-20 20:49:14 +09:00
유병철
cfa72fe19b refactor(WEB): 폼 템플릿 통합 및 미사용 컴포넌트 정리
- ResponsiveFormTemplate → IntegratedDetailTemplate 마이그레이션
  - ClientRegistration, OrderRegistration, QuoteRegistration 완료
  - QuoteRegistrationV2 미사용 import 정리
- 미사용 컴포넌트 삭제
  - ListPageTemplate.tsx
  - ResponsiveFormTemplate.tsx
  - common/DataTable 폴더 전체 (SearchFilter 누락 export 에러 해결)
- Config 파일 추가
  - clientConfig.ts, orderConfig.ts
  - quoteConfig.ts에 edit 모드 config 추가

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 20:41:45 +09:00
eae23d4457 feat(WEB): DevToolbar - 견적→수주→작업지시→출하 테스트 자동화 도구
- DevFillContext: 전역 상태 관리 (활성화/페이지 타입/폼 채우기 함수)
- DevToolbar: 플로팅 UI 컴포넌트 (토글/자동 채우기 버튼)
- useDevFill: 각 폼에서 자동 채우기 함수 등록 커스텀 훅
- 데이터 생성기: 견적/수주/작업지시/출하 샘플 데이터
- 환경변수 제어: NEXT_PUBLIC_DEV_TOOLBAR_ENABLED로 On/Off
- 통합: QuoteRegistration, OrderRegistration, WorkOrderCreate, ShipmentCreate
- Hydration 불일치 방지: useState 초기값 false + useEffect 패턴
2026-01-20 20:38:29 +09:00
유병철
4a6149963d feat(WEB): 견적 등록 테스트 페이지 IntegratedDetailTemplate 마이그레이션
- test-new 페이지 IntegratedDetailTemplate 적용
- quoteCreateConfig 추가

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 19:47:24 +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
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
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
dc0ab88fb9 fix(WEB): 견적 등록 제품 선택 목록 React key 오류 수정
- 제품 목록에서 null/undefined item_code 필터링
- 중복 item_code 제거 로직 추가
- key prop에 index 조합으로 고유성 보장
2026-01-15 16:30:12 +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
42b0a5778e fix(WEB): 영업 페이지 및 견적 타입 수정
- 생산지시 페이지 에러 처리 개선
- 견적관리 상세 페이지 개선
- quotes types 수정
2026-01-13 19:48:03 +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
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
0d539628f3 chore(WEB): actions.ts 에러 핸들링 및 CEO 대시보드 개선
- 전체 모듈 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>
2026-01-08 18:41:15 +09:00
byeongcheolryu
29e7b41615 chore(WEB): 다수 컴포넌트 개선 및 CEO 대시보드 추가
- 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>
2026-01-08 17:15:42 +09:00
9a134bc83a chore(WEB): 견적 컴포넌트 export 및 발주서 개선
- index.ts: 타입 및 함수 export 정리
- PurchaseOrderDocument.tsx: 발주서 문서 개선
2026-01-06 21:21:10 +09:00
b52e9c70af fix(WEB): 산출내역서 BOM 자재 표시 개선 (#5, #6)
이슈 #5: 산출내역서 담당자/연락처/단위 표시
이슈 #6: 세부산출내역 vs 소요자재내역 분리

주요 변경:
- QuoteCalculationReport.tsx: bomMaterials 사용하여 소요자재 내역 표시
- 세부산출내역과 소요자재내역 데이터 소스 분리
2026-01-06 21:20:56 +09:00
1c338f4d3f fix(WEB): 견적서 문서 표시 개선 (#3, #4)
이슈 #3: 상세 견적서 담당자/연락처 표시
이슈 #4: 품목내역 올바른 단위 표시

주요 변경:
- QuoteDocument.tsx: 품목별 unit 필드 사용하여 올바른 단위 표시
- QuoteRegistration.tsx: manager, contact, remarks 필드 폼에 반영
2026-01-06 21:20:49 +09:00