Commit Graph

4466 Commits

Author SHA1 Message Date
chpark 223cf55f5c 메신저 사용자 검색 undefined 가드
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>
2026-05-07 16:51:28 +09:00
chpark 97b333dd2e Amaranth(Wehago) ERP REST API 연계 + 배치 시스템 강화
부팅 시 자동 시드:
- 외부 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>
2026-05-07 09:48:28 +09:00
chpark 36e232ba00 사이드바 메뉴 펼침/접힘 무한 루프 수정 + 사용자 메뉴 데이터/아이콘 정비
- 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>
2026-04-30 14:34:36 +09:00
chpark 9a8196a395 RPS 브랜딩 · COMPANY_16 단독 운영 · Pipeline 디자인 채용
주요 변경:
- 회사 라우트 정리: 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>
2026-04-30 10:36:21 +09:00
jskim 2cd32e312e Merge pull request 'jskim-node' (#39) from jskim-node into main
Reviewed-on: https://g.wace.me/jskim/vexplor_dev/pulls/39
2026-04-28 11:20:32 +00:00
jskim 86ad6690a6 Merge branch 'main' into jskim-node 2026-04-28 11:20:27 +00:00
kjs bb17cd0c33 Merge branch 'jskim-node' of https://g.wace.me/jskim/vexplor_dev into jskim-node 2026-04-28 20:20:11 +09:00
kjs 5dfae5e6b6 Refactor analytics report data retrieval and enhance equipment report logic
- 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.
2026-04-28 20:20:10 +09:00
jskim 0452b03a1c Merge pull request 'jskim-node' (#38) from jskim-node into main
Reviewed-on: https://g.wace.me/jskim/vexplor_dev/pulls/38
2026-04-28 09:43:25 +00:00
jskim c383a18705 Merge branch 'main' into jskim-node 2026-04-28 09:43:20 +00:00
kjs 562b0daa5c Merge branch 'jskim-node' of https://g.wace.me/jskim/vexplor_dev into jskim-node 2026-04-28 18:42:26 +09:00
kjs 310f644508 Implement item inspection information feature with server-side pagination
- Added a new controller for item inspection information to handle grouped data retrieval with pagination.
- Created routes for accessing item inspection data, specifically for grouped item codes.
- Updated frontend components to support server-side pagination, including total count display and page navigation.
- Enhanced the item inspection info page to utilize the new API for fetching data, ensuring a smooth user experience.

This implementation improves the management of item inspection data and enhances usability in the quality module.
2026-04-28 18:42:25 +09:00
kjs 0b7c967f56 Refactor analytics report data retrieval and improve logistics info page loading logic
- Updated the analytics report controller to correctly join work_order_process and work_order_process_result for accurate production data retrieval.
- Enhanced the logistics info page to load all tabs on mount for immediate count accuracy, while ensuring only the active tab is reloaded on subsequent changes to prevent race conditions.

This refactor improves data accuracy and user experience in the logistics module.
2026-04-28 18:15:22 +09:00
jskim d2a806279b Merge pull request 'jskim-node' (#37) from jskim-node into main
Reviewed-on: https://g.wace.me/jskim/vexplor_dev/pulls/37
2026-04-28 07:15:00 +00:00
jskim 1f7b210be9 Merge branch 'main' into jskim-node 2026-04-28 07:14:53 +00:00
kjs bf8d99ccf5 Implement KPI daily production feature
- 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.
2026-04-28 16:14:27 +09:00
kjs 4afb0f5ca4 Implement server-side pagination for order summaries, plans, and shipping orders
- 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.
2026-04-28 13:59:34 +09:00
jskim 4fd2325f9d Merge pull request 'jskim-node' (#36) from jskim-node into main
Reviewed-on: https://g.wace.me/jskim/vexplor_dev/pulls/36
2026-04-28 00:24:51 +00:00
kjs 8bfa1f9838 Merge branch 'mhkim-node' of https://g.wace.me/jskim/vexplor_dev into jskim-node 2026-04-28 09:21:19 +09:00
kjs a74bdc7389 Merge branch 'main' of https://g.wace.me/jskim/vexplor_dev into jskim-node 2026-04-28 09:21:06 +09:00
kmh 9ed9915c98 refactor(pop): keep mhkim WIP popProductionController over gbpark merge
gbpark-node(ee8f274f) 머지 시 popProductionController.ts 충돌. 작업 중이던
mhkim 워킹트리 변경분(앞공정 양품 헬퍼/work_instruction 헤더 헬퍼/wi_*
커스텀 템플릿 우선 처리/CTE 기반 getProcessList 등)을 통째로 채택.
2026-04-27 16:49:56 +09:00
DDD1542 ee8f274feb 매미킴 2026-04-27 16:15:42 +09:00
DDD1542 34a44e0d9c Merge branch 'mhkim-node' of https://g.wace.me/jskim/vexplor_dev into gbpark-node 2026-04-27 14:46:26 +09:00
kmh e18a62f56f refactor(pop): trim main page widgets, drop layout auto-clone
- 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>
2026-04-27 14:45:00 +09:00
kjs a2fec8b69c Merge branch 'main' of https://g.wace.me/jskim/vexplor_dev into jskim-node 2026-04-26 18:35:20 +09:00
kjs 4befcab2ad Merge branch 'mhkim-node' of https://g.wace.me/jskim/vexplor_dev into jskim-node 2026-04-26 18:35:10 +09:00
kjs 346a1314a2 Merge branch 'mhkim-node' of https://g.wace.me/jskim/vexplor_dev into jskim-node 2026-04-26 18:33:52 +09:00
kjs c551804f11 Merge branch 'mhkim-node' of https://g.wace.me/jskim/vexplor_dev into jskim-node 2026-04-26 18:33:33 +09:00
kmh dcbcdb2f52 refactor(pop): isolate new shell, add super-admin entry, drop /pop fallback
- 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>
2026-04-26 15:07:44 +09:00
kjs 5f4838cb19 feat(pop): implement process list and result retrieval endpoints
- Added `getProcessList` to retrieve the list of work order processes along with their results, grouped by process ID.
- Implemented `getProcessResult` to fetch details of a specific work order process result by its ID.
- Updated `popProductionRoutes` to enable the new endpoints for accessing process data.

These additions enhance the functionality of the POP production module, allowing for better tracking and management of work order processes and their results.
2026-04-24 18:48:43 +09:00
kjs 5518288f18 refactor(pop): update popProductionController and routes
- Changed the `copyChecklistToSplit` function to be exported for better accessibility.
- Temporarily commented out the `getProcessList` and `getProcessResult` routes in `popProductionRoutes` due to missing implementations, with a note for future restoration.
- Updated the loop in `salesOrderBulkService` to use `Array.from()` for better clarity in iterating over entries.

These changes aim to improve code organization and maintainability while addressing current implementation gaps.
2026-04-24 18:23:32 +09:00
kjs 3d339f4846 Merge branch 'mhkim-node' of https://g.wace.me/jskim/vexplor_dev into jskim-node 2026-04-24 17:59:56 +09:00
kjs d854819f03 Merge branch 'mhkim-node' of https://g.wace.me/jskim/vexplor_dev into jskim-node 2026-04-24 17:59:45 +09:00
kjs f922841d8d Merge branch 'mhkim-node' of https://g.wace.me/jskim/vexplor_dev into jskim-node 2026-04-24 17:59:00 +09:00
kjs 88acd85fe6 Merge branch 'gbpark-node' of https://g.wace.me/jskim/vexplor_dev into jskim-node 2026-04-24 17:58:38 +09:00
kjs 7972740ad7 Merge branch 'jskim-node' of https://g.wace.me/jskim/vexplor_dev into jskim-node 2026-04-24 17:58:12 +09:00
kjs 7e3a503adc feat: Add sales order bulk upload functionality
- Introduced a new controller for handling bulk uploads of sales orders via Excel, allowing users to efficiently manage large volumes of sales data.
- Implemented validation to ensure required fields are present and provided appropriate error messages for missing data.
- Enhanced the service layer to support item creation and master data management during the upload process.
- Updated routes to include a new endpoint for the bulk upload feature, ensuring secure access through token authentication.

These changes aim to streamline the sales order management process and improve user experience when handling bulk data uploads.
2026-04-24 17:58:11 +09:00
kmh 5ba8901a33 feat(pop): replicate COMPANY_7 pop to COMPANY_8/9/10/16/29/30
Copy the POP terminal screens from COMPANY_7/pop to the other six
company folders (POP.md excluded). URLs are already companyCode-aware
via usePopCompanyPath, so the replicated code works per-company with
no further edits.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 16:25:55 +09:00
kmh 28bdaedac6 refactor(pop): extract company path via usePopCompanyPath hook
Replace hardcoded /COMPANY_7/ URL prefixes across POP pages and
components with usePopCompanyPath() so navigation derives the company
code from the authenticated user.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 15:29:57 +09:00
kmh cb5331778f chore(ops): allow skipping AI assistant boot via env, drop stale peer flag 2026-04-24 15:00:50 +09:00
kmh d8209f85c2 feat(pop): unify theme with COLOR_MAP and introduce accepted_results multi-accept flow 2026-04-24 15:00:47 +09:00
kmh de660679ca feat(frontend/logistics): render remark via category label map 2026-04-24 15:00:42 +09:00
kmh 6656a525a2 feat(backend/work-instruction): re-project master checklist snapshot on wi edit 2026-04-24 15:00:38 +09:00
kmh 450f1fe9f5 feat(backend/receiving): normalize type via category resolver, rollback source on qty edit, aggregate production received_qty 2026-04-24 15:00:34 +09:00
jskim a21eb49fef Merge pull request 'jskim-node' (#35) from jskim-node into main
Reviewed-on: https://g.wace.me/jskim/vexplor_dev/pulls/35
2026-04-24 02:12:55 +00:00
jskim f283196637 Merge branch 'main' into jskim-node 2026-04-24 02:12:50 +00:00
kjs 37ca354af9 feat: Implement cutting plan management and work instruction modal
- 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.
2026-04-24 11:12:32 +09:00
kjs c01166263b feat: Implement sorting functionality in inspection management page
- Added sorting capabilities for equipment listings, allowing users to sort by various columns such as equipment code, name, type, and more.
- Introduced visual indicators for sort direction using icons (ArrowUp, ArrowDown, ArrowUpDown).
- Enhanced filtering logic to accommodate sorting, improving data retrieval and user experience.

These changes aim to provide users with better control over equipment data presentation and enhance overall usability in the inspection management workflow.
2026-04-24 09:29:41 +09:00
jskim 6834166fdd Merge pull request 'jskim-node' (#34) from jskim-node into main
Reviewed-on: https://g.wace.me/jskim/vexplor_dev/pulls/34
2026-04-23 09:25:20 +00:00
kjs 4a9e3768a9 feat: Optimize batch management and improve performance
- Reduced timeout for RestApiConnector to 20 seconds to ensure timely feedback for previews.
- Implemented caching for external DB metadata to minimize connection overhead and improve response times.
- Enhanced internal DB table and column retrieval with TTL caching to prevent database pool exhaustion.
- Introduced error handling for external DB timeouts, providing clearer feedback to users.
- Updated batch management UI to improve user experience with better error messages and streamlined data handling.

These changes aim to enhance the efficiency and reliability of batch management processes.
2026-04-23 18:24:32 +09:00