- ECR 관리: wace 의 ecrList/Form/Detail JSP 와 동일하게 5개 필터(연도/기종/요청/작성자/상태),
변경전/후 2분할 모달, 작성중(0000100)만 삭제·수정 허용, 컬럼 순서/라벨 wace 일치
- ECR 스키마 wace 풀세트 동기화: ecr_mng 컬럼폭 확장, product_mgmt 16컬럼, part_mng 52컬럼,
user_info 22컬럼, comm_code 보강(id/code_cd/ext_val), code_name(varchar) 함수,
seq_ecr_no setval(33) 정렬
- wace_plm public.comm_code 733행 시드: src/seed/wace_comm_code.sql 추출 + 부팅 시 자동 적재
(writer='system-seed' placeholder 자동 정리, 무중단 재적재 엔드포인트 /comm-code-seed)
- wace_plm 데이터 import 풀스키마: PRODUCT(7→16), PART(6→52), USER_INFO·COMM_CODE 신규
- 공통코드 관리 화면: 제목/설명 축소, 카테고리·코드 카드 → 컴팩트 리스트, 활성 토글 점,
계층 배지 톤다운, hover 시 액션 노출
- 테이블 타입 관리 — 좌측: 한 줄 리스트 + 알파벳 인덱스 sticky 헤더
- 테이블 타입 관리 — 우측: 타입 카드 그리드 → 그룹 셀렉트(기본/참조/자동/첨부/표시변형),
표시이름 제거 + 코멘트(description) Textarea 신설(화면관리에서 기본 라벨로 활용),
시스템 자동 생성 컬럼(id/company_code/writer/created_date/updated_date) 잠금,
표시옵션/고급설정(필수·읽기·기본값·최대길이) 제거 — 화면관리로 이관
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- 검색 폼 정합성: wace JSP `<!-- 주석처리된 검색필터 -->` 블록까지 잘못 이식했던 부분 정정
- 견적: 11→7개 (제품구분/국내해외/유무상/요청납기 제거)
- 주문: 13→9개 (제품구분/국내해외/유무상/견적환종 제거)
- 매출: 10→11개 (출하지시상태 제거 + 제품구분·국내/해외 추가, JSP 순서로 재배치)
- 판매: 변경 없음 (원본 그대로 일치)
- 매출 백엔드: SaleListFilter에 productType/nation 추가, getRevenueList에 partObjId/serialNo/orderDate/productType/nation 5개 필터 처리
- 공통 UX
- 초기화 버튼을 4개 메뉴 동일하게 통일 (variant=ghost, 버튼 영역 끝)
- <Input type="date">는 빈 값 placeholder 숨김 + 캘린더 아이콘 숨김 + 영역 클릭으로 picker 자동(showPicker)
- 신규 공통 컴포넌트: CommCodeSelect/CustomerSelect/CustomerSearchDialog/PartSelect/ItemSearchDialog + backend salesCommonRoutes
- 문서: 01/02/04 검색 폼 표를 활성/비활성 분리 형식으로 정정, README에 8. 공통 UX 규칙 섹션 신설
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- RoleFormModal: 권한 코드 입력 필드 제거. 생성 시 ROLE_<base36 timestamp>
형태로 자동 부여 (시스템 내부 키, UI 비노출). 수정 모드에서도
authCode 는 기존 값 유지하고 입력 받지 않음.
- dashboard.ts getApiBaseUrl: NEXT_PUBLIC_API_URL 환경변수가 있으면 우선 사용.
fallback 포트를 8080 → 8090 (compose 외부 노출 포트)으로 정정해
'데이터를 불러올 수 없습니다 / Failed to fetch' 해결.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- 테이블 타입 관리: h-screen → h-full(min-h-0) 로 탭 영역에 정확히 맞춤,
사이드바·헤더·카드 폰트/패딩 톤다운, 헤더 입력칸 grid 레이아웃으로 빈 공간 메움
- ColumnGrid: 행 높이 56px → 36px, 한글라벨/영문명 분리 표시,
PK/NN/IDX/UQ 한 줄 nowrap 고정폭, 그룹 헤더 sticky, 액션 버튼 hover 노출
- 메뉴 관리: min-h-screen → h-full(min-h-0) overflow-hidden, 헤더 flex-shrink-0,
메인 컨텐츠 flex-1 로 탭 안에서 정확한 height
- MenuTable: max-h-[calc(100vh-350px)] 절대값 제거, flex-1 min-h-0 overflow-auto 로
부모 컨테이너 따라 내부 스크롤
- docker-compose: name=vexplor_rps 추가 — Docker Desktop 에서
pipeline 등 다른 프로젝트와 분리되어 한 그룹으로 깔끔하게 표시
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
vexplor 로코드툴의 code_category/code_info 2-테이블 구조 대신 wace_plm
원본 comm_code(847건) 위에서 직접 동작하도록 백엔드 service 전면 재작성.
영업관리 등 이미 comm_code에 의존 중인 화면들과 데이터 소스 일치.
- backend service: comm_code 단일 테이블 기반(top-level=parent_code_id 빈값)
으로 재작성. 다단계 계층은 재귀 CTE로 depth/parent_code_value 산출.
단일 테넌시라 company_code/menu_objid 필터링은 시그니처만 유지하고 무시
- comm_code에 sort_order INT 컬럼 추가(드래그 정렬 유지) — DB 마이그레이션
- frontend schema: 영문명/설명을 optional로 완화(wace 컬럼 부재)
- 카테고리/코드 폼 모달에서 영문명·설명 입력 필드 제거
- 패널 레이아웃을 화면 높이에 고정 + 좌우 패널 자체 스크롤로 분리
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
useCompanyUsers 응답 중 user_name 이 비어있는 레거시 row 가 있을 때
toLowerCase 호출에서 발생하던 Runtime TypeError 방지.
- NewRoomModal: userName/deptName ?? '' 으로 가드 후 includes
- MessageInput: 멘션 자동완성 필터에서 userName ?? '' 가드
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- rolesList/RoleFormModal/[id] 페이지에서 회사 선택 필터·라벨·SUPER_ADMIN 회사 컬럼 제거
- MessageInput/NewRoomModal에서 user.userName/deptName.toLowerCase 호출 시 옵셔널 체이닝 적용으로 null 사용자 방어
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
부팅 시 자동 시드:
- 외부 REST API 연결 6종 (부서/사원/거래처/창고/계정과목/Wehago 사용자)
- 매칭 배치 6개 + Wehago HMAC-SHA256 서명 자동 부착 (erpApiClient/erpPresetSeedService/erpBatchSeedService)
- 동기화 대상 테이블/컬럼 보장 idempotent 마이그레이션 (erpTableMigration)
배치 기능 확장:
- 조건부 매핑 (mapping_type='conditional') — when/then/default 규칙으로 값 변환 (예: enrlFg=J01→active)
- 행 단위 제외 필터 (row_filter_config) — 특정 API 필드 값 가진 행 동기화 제외 (예: loginId=wace 통합 ERP 계정 제외)
- save_mode/conflict_key 기반 UPSERT, data_array_path 응답 배열 추출
UI 정비:
- 배치/플로우/메일/REST API 목록에 페이징 + FullHD 컴팩트 레이아웃
- 배치 편집 화면 한 화면 풀 활용 — TO 패널 가로 그리드, FROM 패널 등록 연결 한 줄 요약, 응답/JSON/파라미터 details 접힘
- ResponsiveDataView/AdminPageRenderer 쿼리 파라미터(?edit=N) 파싱
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- AppLayout.tsx: 활성 탭 부모 자동 펼치기 useEffect의 의존성에서 expandedMenus를 제거.
collapse 직후 effect가 재실행되며 강제 expand가 일어나 펼침/접힘이 토글되지 않던 문제 해결.
이제 activeTab 변경 시에만 부모 메뉴 자동 펼침, 사용자 토글은 안정적으로 유지됨.
- 사용자 메뉴 데이터(DB) 재구성: waceplm 9개 화면 캡처와 1:1 매칭되는 46개 메뉴(루트 사용자 + 10 카테고리 + 35 리프) 재삽입,
URL을 `.do` 레거시 → `/COMPANY_16/<카테고리>/<리프>` React 라우트로 통일.
- 메뉴 아이콘 매핑: 영업/프로젝트/개발/구매/구매요청/자재/생산/품질/CS/ECR 카테고리 + 35개 리프 각각에
업무 성격에 맞는 lucide-react 아이콘(TrendingUp/FolderKanban/Wrench/ShoppingCart/Send/Boxes/Factory/ShieldCheck 등) 부여.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
주요 변경:
- 회사 라우트 정리: COMPANY_7/8/9/10/29/30 6개 폴더 삭제, COMPANY_16(하이큐마그)만 유지
- 모듈 수 17,470 → 16,121, /main 컴파일 시간 110s → 53s
- 브랜딩: VEXPLOR → RPS (로고/파비콘/타이틀/메타데이터/푸터 회사정보 전부 교체)
- 로그인 페이지 fito 스타일 리디자인 (다크 그라디언트 + 글래스 카드 + 격자 배경 + 하단 푸터)
- AppLayout/TabBar/ThemeToggle/ThemeProvider/Logo Pipeline 디자인 채용
- 6색 컬러 테마 시스템 (blue/teal/green/purple/red/dark) + 좌→우 커튼 전환 애니메이션
- 우상단 모드 전환 알약 버튼 (관리자만 노출)
- 시안톤 탭 + Teal 활성 탭, 130px 컴팩트 너비
- 도커 포트 충돌 회피: 백엔드 8080→8090, 프론트 9771→9781, 컨테이너명 rps_backend/rps-front
- DB: vexplor_rps 신규 생성 후 vexplor_dev 데이터 이관, DATABASE_URL 변경
- useAuth: SUPER_ADMIN userType도 isAdmin으로 인정
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Updated the `getQualityReportData` function to improve item name retrieval logic by using `NULLIF` for better handling of empty values.
- Refactored the `getEquipmentReportData` function to include company and date filters for equipment statistics, ensuring accurate data aggregation.
- Enhanced the SQL queries for both quality and equipment reports to utilize lateral joins and improve performance.
- Improved loading states in frontend components for inspection records and inspection results across multiple companies.
This refactor enhances data accuracy and user experience in the analytics module.
- Added a new KPI controller to handle daily production data retrieval.
- Created routes for accessing KPI data, specifically for daily production.
- Developed frontend components for displaying daily production metrics, including charts and summary cards.
- Implemented data fetching logic with date range filtering for production data.
- Ensured proper loading states and error handling in the UI.
This feature is part of TASK:ERP-022.
- Added pagination parameters (page and size) to the getOrderSummary and getPlans functions in the productionController.
- Updated the getList function in shippingOrderController and shippingPlanController to support server-side pagination.
- Modified frontend components to handle pagination state and display total counts for orders and plans.
- Ensured compatibility with existing functionality by maintaining behavior when pagination is not used.
- Remove KpiCarousel/RecentActivity from pop main pages (7 companies)
- Empty banner default; rename settings key home -> main
- Strip API fetch/cache from usePopSettings, return hardcoded defaults
- Drop screen_layouts_pop auto-clone/fallback for regular users
- Add SUPER_ADMIN direct-entry branch in AppLayout pop handler
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- per-company PopShell copies under (main)/COMPANY_*/pop/_components/common/
(no longer imports @/components/pop/hardcoded/PopShell)
- new components/pop/shell/CompanySwitchModal for new POP entry
- AppLayout: SUPER_ADMIN POP-mode toggle + company-select modal flow
- usePopSettings: handle /COMPANY_X/pop/<tail> URLs (extractScreenKey)
- authController + AppLayout: drop legacy /pop fallback;
use /\${companyCode}/pop/main when childMenus>1 lacks [POP_LANDING]
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Introduced a new cutting plan management page for COMPANY_9, allowing users to manage cutting plans effectively.
- Added a Work Instruction Apply Modal to facilitate the application of work instructions linked to cutting plans.
- Enhanced data handling by incorporating additional fields such as condition_unit, condition_base_value, condition_tolerance, condition_auto_collect, and condition_plc_data in relevant controllers and database interactions.
- Updated UI components to support new features, including displaying batch numbers and item sizes in the work instruction page.
These changes aim to improve the efficiency and usability of cutting plan and work instruction management processes.
- Updated SQL queries in `popProductionController` to separate work order process and result handling, ensuring batch_id is now managed in the work_order_process_result table.
- Enhanced `workInstructionController` to include id generation for work items and details, preventing NULL values during insertion.
- Implemented case-insensitive search functionality across various services, improving data retrieval accuracy.
- Added sorting functionality in the item inspection page, allowing users to sort by different columns with visual indicators for sort direction.
This refactor aims to improve data integrity and user experience across the production and inspection workflows.
- Cutting optimization (Guillotine FFDH) with mixed/homogeneous modes
- Remnant management with persistence (cutting_plan_sheet.remnants JSONB)
- Work instruction creation linked via batch_no/cutting_plan_id
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Introduced a new controller for managing outsourcing outbound processes, including automatic candidate retrieval and outbound list management.
- Implemented API routes for fetching candidates, listing outsourcing outbounds, and creating new outbound records.
- Enhanced the SQL queries to ensure proper filtering by company code and to utilize existing outbound management tables effectively.
- Added new routes for handling outsourcing outbound operations in the Express application, improving the overall functionality of the logistics module.
- Enhanced the `getProcessEquipments` function to support matching both legacy equipment codes and new IDs, improving data retrieval accuracy.
- Updated the `availableEquipments` logic in the `ProcessMasterTab` component to handle both equipment codes and IDs, ensuring a seamless user experience when adding equipment.
- Improved error handling for equipment selection, providing user feedback when a selected equipment cannot be found.
- Refactored the display of equipment names to ensure accurate representation, even when equipment codes are not available.
- Introduced state management for copy form and inspection rows to facilitate editing and copying of inspection data.
- Implemented logic to duplicate selected inspection data into a copy modal, allowing users to edit and manage copied information.
- Enhanced the copy process to include validation and user feedback, ensuring a smooth experience when copying inspection details to multiple target items.
- Updated the modal handling to support dynamic row management for copied inspection items, improving usability and flexibility.
- Introduced a new controller for managing custom input values in report cells, allowing users to retrieve and upsert values associated with specific reports and targets.
- Implemented API routes for fetching and saving report cell values, ensuring proper authentication and data handling.
- Enhanced the frontend components to support the new report cell input functionality, including the ability to edit and save input values in a modal.
- Updated inventory and equipment management pages to include new features for handling missing items and managing warehouse locations effectively.
- Added pagination support to the `getList` function in the work instruction controller, allowing for efficient data retrieval with `page` and `pageSize` parameters.
- Enhanced the keyword search functionality to include checks for item numbers in the work instruction details, improving search accuracy.
- Updated the frontend components to utilize the new `SmartSelect` component for supplier and partner selection, enhancing user experience.
- Adjusted the `EDataTable` component to support server-side pagination, ensuring better performance with large datasets.
- Updated the `update` function in the outbound controller to include detailed inventory adjustments when modifying outbound records, ensuring accurate stock management.
- Implemented rollback mechanisms for both outbound and receiving updates to maintain data integrity in case of errors.
- Enhanced the `deleteOutbound` function to include inventory recovery and historical logging for deleted outbound records.
- Introduced a new utility function `adjustInventory` to handle inventory changes consistently across different controllers.
- Improved error handling and logging for better traceability during outbound and receiving operations.
- Updated the `getRoutingDetails` function to enrich routing details with subcontractor codes, improving data retrieval for routing information.
- Implemented a mapping mechanism to associate subcontractor codes with routing details, ensuring accurate representation of outsourcing suppliers.
- Enhanced the `saveRoutingDetails` function to handle subcontractor mappings during the save operation, ensuring data integrity and consistency.
- Updated the BOM service to improve unit handling and added inventory unit information for better clarity in item representation.
- Refactored production plan management to streamline modal handling and improve error messaging for better user feedback.
- Added a modal for copying inspection information from a selected item to multiple target items.
- Implemented search and selection logic for target items to facilitate the copying process.
- Included validation to ensure a source item is selected and that target items are valid before proceeding with the copy operation.
- Enhanced user feedback with toast notifications for successful and error states during the copy process.
- Updated BOM management to include unit label handling for better clarity in item representation.
- Updated the `getMoldSerialSummary` function to dynamically retrieve category values for mold statuses and operations, allowing for more flexible data aggregation.
- Implemented a mapping mechanism to categorize status codes based on their labels, improving the clarity of the summary results.
- Adjusted SQL queries to utilize the new category mappings for more accurate counts of mold statuses.
- Refactored the packaging and loading unit deletion logic to handle company code checks more efficiently, ensuring proper data access control.
- Implemented CRUD operations for report presets in reportPresetController.
- Added routes for listing, creating, updating, and deleting report presets.
- Ensured authentication is required for all preset operations.
- Enhanced MaterialData interface to include optional width, height, and thickness properties.
- Added validation to prevent duplicate approval requests for the same target, ensuring that only one active or completed approval exists at a time.
- Implemented a check to disallow self-approval in the approval line unless the approval type is 'self'.
- Integrated the ApprovalDetailModal component into the main layout for improved user experience.
- Updated the SalesOrderPage to include approval status in the data structure, enhancing visibility of approval states.
- Enhanced BOM management modals across multiple company implementations to accommodate new UI requirements.
- Added errorStyle set to "stop" for various input validations in the template generation process.
- This enhancement ensures that users receive clear error messages when input criteria are not met, improving the overall user experience during data entry.
- These changes aim to streamline the Excel upload process and enhance data integrity across multiple company implementations.
- Introduced a new SmartExcelUploadModal component to facilitate bulk item inspection uploads via Excel.
- Implemented logic for downloading templates, validating uploaded files, and parsing data for inspection criteria.
- Enhanced the item inspection page to support dynamic loading of item process mappings and reference data for improved user experience.
- Added necessary types and utility functions for template generation and parsing, ensuring robust handling of Excel data.
- These changes aim to streamline the item inspection process and improve data management across multiple company implementations.
- Updated column visibility logic to filter based on defaultVisibleKeys, ensuring only relevant columns are displayed.
- Improved merging of saved column settings by filtering out invalid columns from the saved settings.
- Adjusted the order of visible columns to prioritize those defined in defaultVisibleKeys, enhancing user experience in table settings.
These changes aim to provide a more intuitive and efficient column management experience in the TableSettingsModal component.