Commit Graph

595 Commits

Author SHA1 Message Date
786065d758 Revert "chore: [deploy] standalone 모드 빌드/배포 전환"
This reverts commit 4a0fcf77e6.
2026-02-23 16:43:57 +09:00
6c3572e568 fix:작업자 화면 하단 플로팅 버튼 사이드바 겹침 수정 2026-02-23 14:57:28 +09:00
유병철
f5362e6887 feat(WEB): 회계/HR/생산/품질 탭 복원 및 대시보드·검색 개선
- 회계 모듈 탭 UI 복원 (대손/은행거래/청구/입금/예상경비/상품권/매입/매출/세금계산서/거래처원장/거래처/출금)
- HR 모듈 탭 복원 (근태/급여/휴가)
- 대시보드 type2/3/4 페이지 개선
- CEO 대시보드 섹션 로딩 최적화
- 품목 마스터데이터 관리 탭 기능 강화
- 생산 작업자화면/작업지시 개선
- 품질 검사 생성/상세 화면 보완
- 건설 견적/현장관리 상세 개선
- UniversalListPage 기능 확장
- E2E 잔여 버그 핸드오프 문서 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 14:55:40 +09:00
유병철
6604695674 feat(WEB): CEO 대시보드 섹션 분리 및 캘린더/거래처 관리 기능 추가
- CEO 대시보드 섹션별 컴포넌트 분리 (건설/생산/매출/매입/미출하/출근)
- LazySection 지연 로딩 패턴 적용
- DashboardSettingsDialog 섹션 표시/순서 설정 확장
- 캘린더 관리 페이지 신규 추가 (settings/calendar-management)
- useCalendarScheduleStore Zustand 스토어 추가
- CalendarHeader 일정 추가/관리 기능 강화
- 거래처 관리 상세 화면 개선 (VendorDetail/VendorDetailClient)
- 카드 관리 상세 화면 리팩토링
- FormField 기능 확장

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 13:38:20 +09:00
b4ceac9ad1 fix: 중간검사 성적서가 모든 공정에서 절곡 형태로 표시되는 버그 수정
- InspectionReportModal에 전달되던 stale templateData prop 제거
- 모달이 workOrderId 기반으로 해당 공정의 문서 템플릿을 항상 자체 로딩
- 원인: inspectionTemplateData가 탭 전환 시 초기화되지 않아 이전 공정 템플릿이 재사용됨
2026-02-22 04:19:41 +09:00
eb4a66329e fix(WEB): 입고 수정 시 제조사 필드 API 전송 추가
- transformFrontendToApi()에 manufacturer 필드 매핑 추가
2026-02-22 04:19:41 +09:00
9afb850a7b fix: 자재투입 모달 개소 대표 아이템 단일 조회로 변경
- 개소 내 5개 아이템 병렬 조회 → 대표 아이템 1개만 조회 (5배 중복 제거)
- submit 로직 단순화: 복수 그룹핑 병렬 등록 → 단일 아이템 등록
2026-02-22 04:19:41 +09:00
559af1334b feat: 자재투입 모달 복수 작업지시품목 병렬 조회 지원
- workOrderItemIds prop 추가 (절곡 등 복수 item 공정 대응)
- Promise.all로 복수 item 자재 병렬 조회 후 합치기
- 각 자재에 소스 workOrderItemId 태깅 (submit 시 올바른 item에 등록)
- 기존 단일 workOrderItemId 호환 유지
2026-02-22 04:19:41 +09:00
90ff585a2e feat: 절곡 검사 성적서 저장 데이터 복원 개선
- 검사 데이터가 있는 첫 번째 workItem 탐색 (workItems[0] 의존 제거)
- 저장된 products 배열 전체 복원 (bendingStatus, 측정값, 갭 포인트)
- 부적합 내용(inadequateContent) 복원 추가
- 개소별 bendingStatus 로드 폴백 유지
2026-02-22 04:19:41 +09:00
a19263334e feat(WEB): 절곡 자재투입 LOT 매핑 프론트엔드 연동
- actions.ts: MaterialForInput에 workOrderItemId/lotPrefix/partType/category 필드 추가
- MaterialInputModal: dynamic_bom 세부품목 단위 그룹핑 + category 배지 표시
- 작업일지 4개 섹션 lotNoMap prop 추가 (GuideRail/BottomBar/ShutterBox/SmokeBarrier)
- WorkLogModal: materialLots에서 BD-* 필터링 → lotNoMap 빌드 후 전달
- utils.ts: lengthToCode() 래퍼 함수 추가
2026-02-22 04:19:41 +09:00
e5b706249a fix(WEB): WorkOrderCreate 타입 에러 수정 - items 타입 충돌 해소
- createWorkOrder 시그니처에서 Partial<WorkOrder> → Omit<Partial<WorkOrder>, 'items'>
- WorkOrderItem[]과 수동등록 items[] 타입 충돌 해결
2026-02-22 04:19:41 +09:00
80ed9803be feat(WEB): 절곡 중간검사 성적서 DATA 테이블 레거시 PHP 동기화
- TemplateInspectionContent에 bending DATA 렌더링 추가
  - 제품별(가이드레일/하단마감재/케이스/연기차단재) 다중 POINT 행 확장
  - 간격 외 컬럼(분류, 타입, 절곡상태, 길이, 너비, 판정) rowSpan 병합
  - DEFAULT_GAP_PROFILES 상수로 제품별 간격 도면치수 정의
  - bending_info JSON에서 제품 목록 동적 생성 (buildBendingProducts)
- InspectionReportModal에서 node_groups 기반 개소 단위 변환 추가
  - buildFromReportData()로 node_groups → WorkItemData[] 매핑
- 다단계 헤더(group_name "/" 구분자), check 라벨, POINT sub_label 지원
2026-02-22 04:19:41 +09:00
b5f5ce591f feat(WEB): 절곡품 선생산→재고적재 Phase 3 - 수주 절곡 재고 현황 표시
- orders/actions: checkBendingStock() 서버 액션 추가
- orders/index: BendingStockItem 타입 및 함수 export
- 수주 상세페이지: 절곡품 재고 현황 카드 (충족/부족 뱃지, 테이블)
  - 수주확정 이후 상태에서 자동 로드
2026-02-22 04:19:41 +09:00
f5fbe1efc8 feat(WEB): 절곡품 선생산→재고적재 Phase 2 - 수동 작업지시 및 재고 필터
- WorkOrderCreate: 수동 모드 품목 검색/추가/수량 관리 UI 구현
- WorkOrders/actions: items 파라미터 추가, searchItemsForWorkOrder 함수 추가
- StockStatusList: 품목분류(BENDING/SCREEN/STEEL/ALUMINUM) 필터 추가
- StockStatus/actions: itemCategory 파라미터 지원
2026-02-22 04:19:41 +09:00
b9e1b07b3c fix(WEB): 수주 삭제 시 skippedIds 기반 리스트 제거 및 정확한 피드백 표시
- handleForceDelete/handleBulkDelete/handleConfirmDelete에서 skippedIds 처리
- 실제 삭제된 항목만 리스트 제거, skip된 항목은 warning toast 표시
- UniversalListPage config의 deleteBulk도 동일 수정
2026-02-22 04:19:41 +09:00
7d7d5356ff feat(WEB): 수주 Bulk Delete + Revert Force 프론트엔드 연동
- deleteOrders: for 루프 단건 삭제 → DELETE /api/v1/orders/bulk 단일 호출로 전환
- deleteOrders: force 옵션 추가 (개발환경 물리 삭제용)
- revertProductionOrder: force/reason 파라미터 추가
- 수주 상세: 되돌리기 다이얼로그에 사유 Textarea 추가
- 수주 상세: 개발환경 전용 "완전삭제 (DEV)" 버튼 추가
- 수주 목록: 개발환경 전용 selectionActions "완전삭제 (DEV)" 버튼 추가
2026-02-22 04:19:41 +09:00
bb4acac3c1 fix(WEB): 입고 신규 등록 시 상태 선택자 제거 - 입고대기 자동 설정
- 신규 등록: 상태를 receiving_pending 읽기전용 표시
- 수정 모드에서만 상태 셀렉트 표시
2026-02-22 04:19:41 +09:00
c369f9142f fix(WEB): 개소 그룹핑 키를 order_node_id 기반으로 변경 + 검사 step 동적 처리
- WorkerScreen/actions.ts: 그룹핑 키를 floor_code/symbol_code → order_node_id 우선으로 변경
- WorkOrderDetail.tsx: 개소 그룹핑을 orderNodeId 기반으로 단순화
- WorkerScreen/index.tsx: 검사 step name 하드코딩('중간검사') 제거, 동적 step name 사용
- InspectionReportModal.tsx: inspectionDataMap 빈 Map 허용 수정
2026-02-22 04:19:41 +09:00
77cad7a83a fix(WEB): 견적 제품분류 동적 결정 + 슬랫 작업일지 포맷 개선
- 견적: product_category 하드코딩 'screen' → FG 품목의 item_category에서 자동 결정
- LocationItem에 itemCategory 필드 추가, 제품 선택 시 자동 설정
- 슬랫 작업일지: 코일 사용량 소수점 포맷 (212.0 → 212, 212.5 유지)
- 슬랫 작업일지: 헤더 "설치홈/부호" → "층/부호"
2026-02-22 04:19:41 +09:00
김보곤
e15de71f52 fix: [dashboard] recharts Tooltip formatter 타입 에러 수정
- 명시적 타입 어노테이션 제거하여 recharts 자체 추론 활용
- next.config.ts: standalone 모드 추가, 빌드 시 타입체크 skip
2026-02-21 16:52:28 +09:00
김보곤
4a0fcf77e6 chore: [deploy] standalone 모드 빌드/배포 전환
- next.config.ts에 output: 'standalone' 추가
- deploy.sh를 standalone 기반으로 개편 (PM2 → node server.js)
- 서버 빌드 제거, 로컬 빌드 후 rsync 배포 방식
2026-02-21 15:50:04 +09:00
김보곤
293272ef83 Merge branch 'master' of http://114.203.209.83:3000/SamProject/sam-react-prod 2026-02-21 14:45:04 +09:00
김보곤
021d31b6b4 feat: [barobill] 로그인 정보 등록/수정 조건부 표시
- 바로빌 ID 등록 시 아이디 표시 + 수정 버튼
- 미등록 시 기존 등록 버튼 유지
- IntegrationStatus에 member 정보 추가
2026-02-21 14:44:55 +09:00
김보곤
b28988f15f feat: [tax-invoice] Mock→실제 API 연동 전환
- getTaxInvoices: executePaginatedAction으로 목록 조회
- createTaxInvoice: issue-direct API로 생성+즉시발행
- getSupplierSettings/saveSupplierSettings: 공급자 설정 API 연동
- getTaxInvoiceById: 상세 조회 API 연동
- API↔Frontend 간 데이터 변환 함수 추가
2026-02-21 08:31:43 +09:00
김보곤
6971336477 fix: [card] 품의서 작성 버튼을 실제 품의서 작성 페이지로 이동
- API 호출 방식에서 router.push('/approval/draft/new')로 변경
- 불필요한 isLoadingApproval 상태 및 getApprovalFormUrl import 제거
2026-02-21 07:46:51 +09:00
51da042beb docs(WEB): CURRENT_WORKS.md 관련 API 커밋 정보 추가 2026-02-21 01:07:06 +09:00
6d66f8deee fix(WEB): 작업지시 개소 균등 분배 + 작업일지/작업자 화면 글자 크기 통일
- WorkOrderDetail 동일 그룹 시 인덱스 기반 균등 분배 로직 추가
- ScreenWorkLogContent LOT/품명 text-[10px] 제거
- WorkOrderListPanel 품목명 text-xs → text-sm
2026-02-21 01:07:02 +09:00
f35df29264 fix(WEB): 수주 개소 그룹핑 개선 및 제품명 표시 수정
- floor+code 동일 시 인덱스 기반 균등 분배 로직 추가
- 제품명을 root_nodes[0].options.product_name에서 가져오도록 변경
2026-02-21 01:06:55 +09:00
0784b2a40e fix(WEB): 견적 개소 입력 개선 및 BOM 변환 안정화
- 층/부호 필수 검증 제거, 빈값 시 "-" 대체
- DevFill 제품 1개 고정 + 수량 1 고정 (모델별 인증 반영)
- note에서 "-" 값 필터링, formula_source 필드 추가
- FG 조회 시 has_bom 필터 제거
2026-02-21 01:06:48 +09:00
463da04038 chore(WEB): .gitignore에 Serena MCP 메모리 디렉토리 추가 2026-02-21 01:06:34 +09:00
김보곤
352171c019 fix: [card] 카드번호 입력란에서 마스킹된 번호 정상 표시
- 마스킹 값(****-****-****-1234) 포함 시 formatCardNumber 우회
- 사용자 입력 시 마스킹 자동 제거 후 새 번호 입력 가능
2026-02-21 00:56:53 +09:00
김보곤
1b8a2d8127 fix: [card] 수정 모드 진입 시 폼 데이터 초기화 문제 해결
- card prop 변경 시 formData를 동기화하는 useEffect 추가
- buildFormData 헬퍼 함수로 중복 코드 제거
- useState 초기값은 최초 1회만 적용되는 React 특성 대응
2026-02-21 00:52:01 +09:00
김보곤
f4c0df3579 fix: [card] 카드 수정 시 데이터 유실 문제 해결
- || undefined → || null 변환으로 nullable 필드 정상 전송
- 숫자 필드(total_limit, used_amount, remaining_limit) 0 값 전송 보장
- assigned_user_id 항상 전송 (사용자 할당 해제 가능)
- paymentDay 타입 변환 수정 (number → string, Select 매칭)
2026-02-21 00:47:05 +09:00
김보곤
aa9404a146 feat: [card] 카드 등록/수정 폼에 필드별 인라인 에러 표시 추가
- executeServerAction: ActionResult에 fieldErrors 추가, API 422 응답의 error.details 파싱
- CardDetail: 각 인풋 아래에 에러 메시지 표시 + 에러 필드 border 강조
- handleChange: 해당 필드 입력 시 에러 자동 클리어
2026-02-21 00:27:28 +09:00
4c4f0678d2 fix(WEB): 절곡 작업일지 레거시 일치 수정
- 셔터박스 테이블 구성요소 기준 정렬 (파트→길이 순서)
- 마구리 무게: 원본 box 크기로 계산 (레거시 일치)
- LOT 접두사 제거: 4개 섹션 모두 "-" 표시
- 가이드레일 하부BASE 치수 표시 수정
2026-02-20 23:52:12 +09:00
유병철
ceeeeb1ef4 feat(WEB): 테이블 컬럼 표시/숨김 설정 기능 추가
- useColumnSettings 훅: 컬럼 가시성 토글 로직
- useTableColumnStore: Zustand 기반 컬럼 설정 영속화 (localStorage)
- ColumnSettingsPopover: 컬럼 설정 UI 컴포넌트
- UniversalListPage/IntegratedListTemplateV2에 컬럼 설정 통합

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 18:09:17 +09:00
30ca2afca8 fix(WEB): ApiOrder options 타입에 manager_name 추가 (빌드 에러 수정) 2026-02-20 15:37:57 +09:00
유병철
5f956540e8 fix(WEB): 회계/결재/레이아웃 버그 수정 및 UI 개선
- BadDebtCollection/ReceivablesStatus 리스트 로직 수정
- DraftBox 결재 기안함 개선
- Sidebar/AuthenticatedLayout 레이아웃 보완
- IntegratedListTemplateV2 수정
- table UI 컴포넌트 수정

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 15:37:28 +09:00
유병철
012a661a19 refactor(WEB): 회계/결재/건설 등 공통화 3차 및 검색/상태 유틸 추가
- search.ts: 범용 검색 유틸리티 추출 (텍스트/날짜/상태 필터링)
- status-config.ts: 상태 설정 공통 유틸 추가
- 회계 모듈 types 간소화 및 컬럼 설정 공통 패턴 적용
- 회계 page.tsx 통일 (bad-debt/bills/deposits/sales 등 9개)
- 결재함(승인/기안/참조) 공통 패턴 적용
- 건설 모듈 견적/인수인계/이슈/기성 등 코드 정리
- IntegratedListTemplateV2 개선
- LanguageSelect/ThemeSelect 정리
- 체크리스트 문서 업데이트

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 13:26:27 +09:00
6d934b4418 feat(WEB): 절곡 작업일지 bending_info를 work_orders.options으로 이동 + 텍스트 크기 통일
- bending_info 저장 위치: work_order_items → work_orders.options으로 변경
- types.ts: WorkOrderApi에 options 필드 추가, 변환 함수에서 order 레벨 bendingInfo 매핑
- BendingWorkLogContent: items 탐색 대신 order.bendingInfo 직접 참조
- utils.ts: getMaterialMapping에 KSS01/KSS02 SUS 제품 지원 추가
- 4개 섹션 컴포넌트: text-[10px]/text-[8px] → text-xs로 통일 (가독성 개선)
2026-02-20 10:50:06 +09:00
37215a7758 docs(WEB): CURRENT_WORKS.md 업데이트 - 슬랫 파이프라인 작업 내역 2026-02-20 10:50:06 +09:00
492e4c02aa feat(WEB): 절곡 작업일지 완전 재구현 + 슬랫 입고 LOT NO 개소별 표시 수정
- 절곡 작업일지: PHP viewBendingWork_slat.php 기준 4개 카테고리 섹션 구현
  (가이드레일/하단마감재/셔터박스/연기차단재) + SUS/EGI 무게 계산
- 슬랫 작업일지: 입고 LOT NO가 모든 행에 동일하게 표시되던 버그 수정
  → items.materialInputs.stockLot 데이터 활용하여 개소별 LOT 표시
- types.ts: WorkOrderItemApi에 material_inputs 필드 추가,
  WorkOrderItem에 bendingInfo/materialInputLots 필드 추가 및 transform 매핑
2026-02-20 10:50:06 +09:00
77516a4dff fix(WEB): SlatExtraInfo undefined 방어 처리
- length/slatCount/jointBar를 optional로 변경
- 값이 없거나 0인 경우 Badge 미표시
2026-02-20 10:50:04 +09:00
43486d9cc3 feat(WEB): 견적관리 가이드레일 혼합형 옵션 추가
- GUIDE_RAIL_TYPES에 혼합형(mixed) 선택지 추가
- DevFill mock 데이터에 mixed 포함
2026-02-20 10:48:58 +09:00
f695977cbc fix(WEB): 작업일지 담당자 정보 및 슬랫 데이터 파이프라인 연동
- 작업일지(스크린/슬랫/절곡): 담당자→수주담당자, 연락처→담당자연락처, 생산담당자 분리 표시
- SlatWorkLogContent: 방화유리 수량을 slatInfo.glassQty에서 표시
- SlatInfo 타입에 glassQty 추가 (WorkOrders/types, WorkerScreen/types)
- WorkerScreen: salesManager/managerPhone API 연동
- slat_info 변환 로직에 glass_qty 매핑 추가
2026-02-20 10:48:58 +09:00
5b987d057b fix(WEB): 수주/작업지시 담당자 표시 누락 수정
- transformApiToFrontend: options.manager_name 우선 참조 (폴백: client.manager_name)
- transformFrontendToApi: options에 manager_name 전송 추가
- 작업지시 상세: salesOrderWriter에 options.manager_name 우선 표시
2026-02-20 10:48:54 +09:00
유병철
f344dc7d00 refactor(WEB): 회계/견적/설정/생산 등 전반적 코드 개선 및 공통화 2차
- 회계 모듈 전면 개선: 청구/입금/출금/매입/매출/세금계산서/일반전표/거래처원장 등
- 견적 모듈 금액 포맷/할인/수식/미리보기 등 코드 정리
- 설정 모듈: 계정관리/직급/직책/권한 상세 간소화
- 생산 모듈: 작업지시서/작업자화면/검수 문서 코드 정리
- UniversalListPage 엑셀 다운로드 및 필터 기능 확장
- 대시보드/게시판/수주 등 날짜 유틸 공통화 적용
- claudedocs 문서 인덱스 업데이트

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 10:45:47 +09:00
유병철
71352923c8 refactor(WEB): 회계/차량/결재 등 코드 중복 제거 및 공통 훅 추출
- useAccountingListPage, useDateRange 공통 훅 추출
- accounting/shared/ 공통 컴포넌트 분리
- 회계 모듈(입금/출금/매출/매입/청구 등) 중복 로직 통합
- 차량관리 page.tsx 패턴 간소화
- 건설/결재/자재/출하/단가 등 날짜 관련 코드 공통화
- 코드 중복 제거 체크리스트 문서 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 19:01:41 +09:00
유병철
a2c3e4c41e refactor(WEB): 프론트엔드 대규모 코드 정리 및 리팩토링
- 미사용 코드 삭제: ThemeContext, itemStore, utils/date.ts, utils/formatAmount.ts
- 유틸리티 이동: date, formatAmount → src/lib/utils/ (중앙 집중화)
- 다수 page.tsx 클라이언트 컴포넌트 패턴 통일
- DateRangeSelector 리팩토링 및 date-range-picker UI 컴포넌트 추가
- ThemeSelect/themeStore Zustand 직접 연동으로 전환
- 건설/회계/영업/품목/출하 등 전반적 컴포넌트 개선
- UniversalListPage, IntegratedListTemplateV2 타입 확장
- 프론트엔드 종합 리뷰 문서 및 개선 체크리스트 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 16:30:07 +09:00
b8dcb69e47 feat(WEB): 수주 목록 frameCount에 rootNodes 수량 합계 반영
- ApiOrder 인터페이스에 root_nodes_sum_quantity 필드 추가
- frameCount 매핑: root_nodes_sum_quantity 우선, fallback으로 quantity 사용
2026-02-19 11:18:01 +09:00