Commit Graph

1189 Commits

Author SHA1 Message Date
kjs
3dacd15a92 refactor: 비밀번호 검증 로직 및 암호화 방식 개선
- 비밀번호 길이 검증 로직 제거: 비밀번호 길이 검증을 서버에서 처리하지 않도록 변경하여 클라이언트 측에서 유효성 검사를 수행하도록 함.
- 암호화 방식 변경: 기존의 암호화 로직을 EncryptUtil을 사용하여 간소화하고 일관성을 유지함.
- 사용자 비밀번호 재설정 시 알림 상태 초기화: 비밀번호 재설정 모달에서 알림 상태를 초기화하여 사용자 경험 개선.
2026-04-02 16:00:50 +09:00
kjs
710486cf2f Merge conflict resolution in app.ts: combine both branches' route imports
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 15:34:43 +09:00
kjs
ce99001970 Add quote management functionality with API and UI integration
- Introduced a new `quote` module, including routes, controllers, and services for managing quotes.
- Implemented API endpoints for listing, creating, updating, and deleting quotes, ensuring proper company code filtering for data access.
- Developed a comprehensive UI for quote management, allowing users to create, edit, and view quotes seamlessly.
- Enhanced the admin layout to include the new quote management page, improving navigation and accessibility for users.

These additions significantly enhance the application's capabilities in managing quotes, providing users with essential tools for their sales processes.
2026-04-02 15:30:44 +09:00
SeongHyun Kim
ac5b497afd merge: pop-screen → main (충돌 해결 - PC 코드 기준) 2026-04-02 13:15:24 +09:00
SeongHyun Kim
70b555b5bd fix: work_order_process + process_work_result id NOT NULL 수정
feat: MES 공정실행 구버전 기반 재구현 (타임라인+체크리스트+실적)

- popProductionController: INSERT 3곳 gen_random_uuid() 추가
- WorkOrderList: 공정 타임라인, 탭 카운트, 그룹핑
- ProcessWork: 사이드바+체크리스트+실적+생산입고 (PopWorkDetail 참고)
- 공정 3건 + 체크리스트 3건 생성 성공 (cmux+psql 검증)
2026-04-02 12:04:37 +09:00
SeongHyun Kim
19733df2da fix: outbound_mng id NOT NULL 버그 수정 (gen_random_uuid) 2026-04-02 10:08:47 +09:00
kjs
d8aaacb8f7 Enhance SUPER_ADMIN middleware and permission utility for improved access control
- Updated the `requireSuperAdmin` middleware to allow users with `userType` as 'SUPER_ADMIN' to access management functionalities, even if their `companyCode` is not '*'.
- Modified the `isSuperAdmin` utility function to recognize users as SUPER_ADMIN based solely on their `userType`, simplifying the access validation logic.
- These changes ensure that SUPER_ADMIN users maintain their management capabilities across company transitions, enhancing the flexibility and security of the application.
2026-04-02 10:05:38 +09:00
SeongHyun Kim
b6c1b08049 fix: 구매입고 전체 프로세스 완성 (E2E 16/16 통과)
- backend: inventory_stock INSERT 시 id 누락 버그 수정
- frontend: 거래처 API supplier_mng으로 수정
- frontend: cart_items 실제 컬럼 구조 맞춤
- frontend: InboundCart 확정 로직 PC와 동일하게 정렬
- 검증: 발주→장바구니→입고등록→재고증가→발주상태변경 전체 확인
2026-04-01 18:53:32 +09:00
kjs
4276b33e37 Merge branch 'ycshin-node' of https://g.wace.me/jskim/vexplor_dev into jskim-node 2026-04-01 16:38:36 +09:00
kjs
2ff01456dc Enhance user management with SUPER_ADMIN access control
- Updated the user list retrieval logic to ensure proper filtering based on company codes, enhancing security for user data access.
- Implemented checks to restrict access to company management APIs, allowing only SUPER_ADMIN users to perform actions related to company data.
- Adjusted the user interface to reflect access restrictions for non-SUPER_ADMIN users, providing clear feedback when access is denied.

These changes strengthen the integrity of user management and ensure that sensitive company information is only accessible to authorized personnel.
2026-04-01 15:49:49 +09:00
a085b8149d [RAPID-micro] 메일 작성 다이얼로그에 보내는 사람 계정 선택 추가
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 15:29:00 +09:00
kjs
369a201832 Implement SUPER_ADMIN permission checks in user management
- Added validation to ensure that only existing SUPER_ADMIN users can grant or modify SUPER_ADMIN permissions.
- Updated the user management page to reflect that both SUPER_ADMIN and COMPANY_ADMIN can access the user permissions, while COMPANY_ADMIN cannot grant SUPER_ADMIN rights.
- Enhanced the user authorization modal to prevent COMPANY_ADMIN from changing SUPER_ADMIN permissions, ensuring proper access control.

These changes improve the security and integrity of user role management within the application.
2026-04-01 14:17:43 +09:00
SeongHyun Kim
603df15946 feat: ERP-node POP/MES 백엔드 API 이전
ERP-node에서 개발한 POP/MES 관련 백엔드 API를 vexplor_dev로 이전.
컨트롤러 16개, 라우트 16개, 서비스 2개 복사 + app.ts 라우트 등록 + cheerio 의존성 추가.

이전 대상:
- POP 생산관리 (popProduction, inspectionResult)
- 작업지시, 공정정보, 생산계획
- 입고, 출고, 출하지시, 출하계획
- 분석리포트, 영업리포트, 설계모듈
- 자재현황, 포장/적재, 크롤링, 시스템공지

tsc 검증: 기존 에러 1건 외 신규 에러 없음
2026-04-01 14:16:17 +09:00
a477295afd Merge branch 'jskim-node' of https://g.wace.me/jskim/vexplor_dev into ycshin-node 2026-04-01 12:27:59 +09:00
403e5cae40 [RAPID] 메신저 기능 구현 및 UI/UX 개선
- 사용자 온라인 상태 표시 (온라인/자리비움/오프라인) 디스코드 스타일
- 채팅방별 알림 ON/OFF 토글 (Bell 아이콘, localStorage 저장)
- 파일 업로드 실시간 소켓 브로드캐스트 및 한글 파일명 깨짐 수정
- FAB 읽지않음 배지 버그 수정 (메신저 닫혀있을 때 markAsRead 차단)
- 타이핑 도트 애니메이션, 날짜 오늘/어제 표시
- 입력창 bordered box, DM 편집 버튼 숨김
- 메신저 설정 버튼 제거, 새 대화 시작하기 Empty state CTA
- useMessengerSocket 소켓 중복 생성 방지 (MessengerModal로 이동)

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>

[RAPID-micro] 추적 파일 정리 및 메신저 소소한 변경

- .omc/state/ 파일 git 추적 제거 (.gitignore 이미 설정됨)
- db/checkpoints/ gitignore 추가
- globals.css: 메신저 메시지 시간 폰트 스타일 추가
- useMessenger.ts: fileMimeType 필드 및 API_BASE_URL import 추가

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 12:20:43 +09:00
6b3e6cce5e [RAPID-micro] 새 대화 모달 z-index 메신저 위로 상향 (10000/10001)
[RAPID-fix] 메신저 사용자 목록 회사 전환 시 캐시 격리

- useRooms/useCompanyUsers queryKey에 companyCode 포함
- 회사 전환 시 다른 회사 사용자가 캐시에서 노출되던 문제 수정

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

[RAPID-fix] 메신저 버그 수정 (8건)

- 방 생성 후 자동 입장 + 커서 포커스
- DM 헤더 상대방 이름, 그룹 "이름1, 이름2 외 N명" 표시
- 채팅방 이름 인라인 수정 기능 추가
- Socket.IO join_rooms 누락 수정 → 실시간 메시지 수신 정상화
- new_message 이벤트 수신 시 React Query 캐시 무효화
- 토스트 알림 stale closure 수정 (ref 패턴 적용)
- 타이핑 이벤트명 백엔드 일치 (user_typing/user_stop_typing)
- 메시지 순서 역전 수정 (.reverse())
- unread queryKey 불일치 수정

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

[RAPID-fix] REST API 메시지 전송 시 Socket.IO broadcast 추가

- socketManager.ts 모듈 생성 (io 전역 공유)
- sendMessage 컨트롤러에서 io.to(room).emit('new_message') broadcast
- 상대방 말풍선 너비 고정 수정 (items-start 추가)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 12:20:41 +09:00
f558073ef8 [RAPID] feat: 메신저 기능 구현 (Socket.IO 실시간 채팅)
- DB: messenger_rooms/participants/messages/reactions/files 테이블 생성
- Backend: REST API 9개 엔드포인트 + Socket.IO 실시간 핸들러
- Frontend: Gmail 스타일 FAB + 모달, 채팅방 목록, 채팅 패널
- 기능: DM/그룹/채널, 파일 첨부, 이모지 리액션, 멘션, 스레드
- 알림: 토스트 on/off 토글, FAB 읽지 않은 배지

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

[RAPID-fix] 메신저 API snake_case→camelCase 변환 및 Socket.IO URL 수정

- useRooms/useMessages/useCompanyUsers 훅에서 DB 응답 camelCase 변환
- Socket.IO 기본 연결 URL 3001 → 8080 수정
- runMigration.ts 마이그레이션 파일 경로 수정 (../../ → ../../../)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

[RAPID-fix] 방 생성 API camelCase/snake_case 호환 처리

- createRoom 컨트롤러에서 participantIds/type/name (camelCase) fallback 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

[RAPID-fix] 메시지 전송 API 추가 (sendMessage 라우트/컨트롤러 누락)

- POST /api/messenger/rooms/:roomId/messages 라우트 등록
- MessengerController.sendMessage 메서드 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 12:20:40 +09:00
kjs
ccb0c8df4c Add environment variable example and update .gitignore
- Created a new .env.example file to provide a template for environment variables, including database connection details, JWT settings, encryption keys, and external API keys.
- Updated .gitignore to include additional test output directories and archive files, ensuring that unnecessary files are not tracked by Git.
- Removed outdated approval test reports and scripts that are no longer needed, streamlining the project structure.

These changes improve the clarity of environment configuration and maintain a cleaner repository.
2026-04-01 12:12:15 +09:00
kjs
250a83b581 Merge branch 'mhkim-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-31 14:37:07 +09:00
kjs
18f78a6702 Enhance receiving and sales management functionality
- Updated the getItems function in receivingController to include a division filter, allowing for more refined item retrieval based on division.
- Added state management for continuous input in EquipmentInfoPage, enabling users to clear forms after saving or keep them open for further entries.
- Implemented deletion functionality for selected customer mappings in SalesItemPage, improving data management capabilities.
- Enhanced ShippingOrderPage to visually indicate selected orders, improving user interaction and experience.

These changes collectively improve the efficiency and usability of the receiving and sales management features.
2026-03-31 14:34:43 +09:00
kmh
0aec60f3d9 fix: 입고 생성 시 balance_qty(잔량) 자동 계산 추가
- 발주 수량에서 기존 입고수량과 신규 입고수량을 차감하여 잔량 업데이트

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 13:37:33 +09:00
kjs
2d8d78b0b9 Merge branch 'kwshin-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-31 11:19:55 +09:00
kjs
efed63a6cb Enhance dynamic form service error handling and add pagination to DataGrid component
- Added error handling in DynamicFormService to throw an error if the record to be updated is not found, improving robustness.
- Enhanced DataGrid component with pagination features, including page size input and navigation buttons, to improve data management and user experience.
- Introduced state management for current page and page size, ensuring that data is displayed in a paginated format, making it easier for users to navigate through large datasets.
2026-03-31 11:18:41 +09:00
4c42cc7b53 feat: 사용자 메일 관리 IMAP 구현
- IMAP 계정 등록/수정/삭제/연결테스트
- SSE 스트리밍으로 메일 목록 로드 (폴더별 지원)
- 메일 상세 조회, 읽음 처리, 삭제(휴지통 이동), 폴더 이동
- 첨부파일 다운로드 (ReadableStream 진행바)
- SMTP 발송, 답장, 전달
- imapConnectionPool, mailCache 서비스
- encryptionService Node 22+ 호환 수정
- authMiddleware query token 지원 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 17:17:20 +09:00
kmh
4e4088eb71 feat: 입고/자재현황/분석리포트 컨트롤러 및 프론트엔드 개선
- receivingController: 헤더-디테일 JOIN 구조로 변경, 검색/조회 로직 개선
- materialStatusController: work_instruction 테이블 기반으로 쿼리 수정
- analyticsReportController: 구매 리포트 company_code 필터링 로직 개선
- material-status 페이지: COMPANY_29/COMPANY_7 프론트엔드 업데이트

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 17:01:26 +09:00
kjs
f980bffed4 Merge branch 'mhkim-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-30 11:58:19 +09:00
kmh
b97ca1a1c5 Enhance backend controllers, frontend pages, and V2 components
- Fix department, receiving, shippingOrder, shippingPlan controllers
- Update admin pages (company management, disk usage)
- Improve sales/logistics pages (order, shipping, outbound, receiving)
- Enhance V2 components (file-upload, split-panel-layout, table-list)
- Add SmartSelect common component
- Update DataGrid, FullscreenDialog common components
- Add gitignore rules for personal pipeline tools

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 11:52:03 +09:00
kjs
3c25466c3e Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-30 11:51:45 +09:00
kjs
08a095a8e5 feat: COMPANY_29 및 COMPANY_7 고객 관리 및 부서 관리 페이지 개선
- 부서 등록 시 부서코드 자동 생성 로직 수정
- 고객 관리 페이지에서 거래처 담당자 및 사내 담당자 컬럼 추가
- 고객 관리 페이지에서 사원 목록 로드 기능 추가
- 다중 선택 기능을 위한 포털 구현 및 외부 클릭 시 저장 기능 추가
- 테이블 컴포넌트에서 다중 선택 컬럼 자동 감지 기능 추가

이 커밋은 부서 및 고객 관리 기능을 개선하고, 사용자 경험을 향상시키기 위한 여러 변경 사항을 포함합니다.
2026-03-30 11:51:12 +09:00
SeongHyun Kim
768219046b Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node 2026-03-30 10:27:41 +09:00
SeongHyun Kim
1532184065 feat: field-only INSERT + pop-field key 수정 + 모달 접근성 개선
- popActionRoutes.ts: 카드리스트 없이 필드만으로 INSERT 가능 (field-only 분기)
- PopFieldComponent.tsx: React duplicate key 에러 수정 (staticOptions 문자열 변환 + key fallback)
- pop-field/index.tsx: preview nested map key fallback
- PopViewerWithModals.tsx: 모달 제목 없을 때 sr-only 접근성 처리
- PopWorkDetailComponent.tsx: 모달 내부 헤더 중복 제거 + isInModal 자동 감지
2026-03-30 10:16:27 +09:00
kjs
ac5292f9b0 feat: COMPANY_29 부서 등록 및 사용자 관리 페이지 개선
- 부서 등록 시 자동 생성 부서코드 기능 추가
- 사용자 관리에서 부서 필수 입력 검증 추가
- 품목 정보 페이지에서 입력 필드에 placeholder 추가
- 고객 관리 페이지에서 원본 카테고리 코드 보관 및 빈 문자열을 null로 변환하는 로직 추가
- 판매 주문 페이지에서 품목 검색 필터에 관리품목 선택 기능 추가

이 커밋은 부서 및 사용자 관리 기능을 개선하고, 사용자 경험을 향상시키기 위한 여러 변경 사항을 포함합니다.
2026-03-29 20:04:52 +09:00
kjs
de440f8d42 Merge pull request 'feat: COMPANY_9 수주관리 페이지 추가 및 생산계획/공정 개선' (#430) from jskim-node into main
Some checks failed
Build and Push Images / build-and-push (push) Failing after 48s
2026-03-27 22:35:16 +09:00
kjs
2e9b67a509 feat: COMPANY_9 수주관리 페이지 추가 및 생산계획/공정 개선
- COMPANY_9 수주관리(sales/order) 하드코딩 페이지 추가
- 생산계획 서비스 로직 정리 및 공정 컨트롤러 수정
- COMPANY_7 생산계획관리 페이지 개선
- AdminPageRenderer 기능 확장
2026-03-27 22:32:18 +09:00
SeongHyun Kim
eacfe60f89 WIP: preset + inspection (임시, 나중에 squash) 2026-03-27 17:05:36 +09:00
SeongHyun Kim
f10946ae5b fix: screen_layouts_pop 이중 감싸기(double-wrap) 자동 해제
getLayoutPop/saveLayoutPop에서 layout_data가 이중으로 감싸진 경우
(layout_data.layout_data.components) 자동 감지하여 내부 데이터를 추출.
13개 신규 POP 화면이 빈 화면으로 표시되던 문제 해결.
2026-03-27 13:44:45 +09:00
SeongHyun Kim
0aef19578a Merge remote-tracking branch 'origin/main' 2026-03-27 10:56:31 +09:00
kjs
5da134f016 feat: add web crawling management functionality
- Introduced a new crawling management feature allowing users to configure, execute, and log web crawls.
- Added CRUD operations for crawl configurations, including URL analysis and preview capabilities.
- Implemented a new service for handling crawling logic and scheduling tasks.
- Integrated cheerio for HTML parsing and axios for HTTP requests.
- Created a sample HTML page for testing crawling functionality.

This commit enhances the application's data collection capabilities from external websites.
2026-03-26 16:30:53 +09:00
kjs
1bf91bf043 Merge branch 'mhkim-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-26 09:30:17 +09:00
kjs
70e040db39 Enhance user management and token invalidation features
- Added comprehensive validation for user data during registration and updates, including email format, company code existence, user type validation, and password length checks.
- Implemented JWT token invalidation for users when their status changes or when roles are updated, ensuring security and compliance with the latest policies.
- Introduced a new TokenInvalidationService to manage token versioning and invalidation processes efficiently.
- Updated the admin controller to provide detailed error messages and success responses for user status changes and validations.
- Enhanced the authentication middleware to check token versions against the database, ensuring that invalidated tokens cannot be used.

This commit improves the overall security and user management experience within the application.
2026-03-25 18:47:50 +09:00
kjs
782ebb1b33 Merge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-25 15:18:40 +09:00
kjs
df6c479589 Update project memory and enhance table settings functionality
- Updated project memory configuration to reflect recent access counts and timestamps for various components.
- Modified SQL queries in the processInfoController to utilize the correct equipment management table for improved data retrieval.
- Enhanced the TableManagementService to automatically fill display columns for entity types during both creation and update processes.
- Introduced new TableSettingsModal components across multiple pages for better user control over table configurations.
- Improved the DynamicSearchFilter component to accept external filter configurations, enhancing the filtering capabilities for various data grids.
2026-03-25 15:18:38 +09:00
kjs
bc186111ef Merge branch 'main' into jskim-node 2026-03-25 11:45:27 +09:00
kjs
69c5a78753 Enhance packaging and department management features
- Updated SQL queries in the packaging controller to include item details and packaging unit information through LEFT JOINs for improved data retrieval.
- Enhanced the packaging page with a new search input for real-time item matching, allowing users to search by item code or name dynamically.
- Refactored department management to use a more consistent state management approach, including renaming state variables for clarity and updating the user modal functionality for better user experience.
- Improved the overall layout and responsiveness of the packaging and department pages, ensuring a more user-friendly interface.
2026-03-25 11:44:49 +09:00
kjs
d5650c5797 Merge branch 'mhkim-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-25 11:03:41 +09:00
kjs
e2f18b19bc Implement outbound management features with new routes and controller
- Added outbound management routes for listing, creating, updating, and deleting outbound records.
- Introduced a new outbound controller to handle business logic for outbound operations, including inventory updates and source data retrieval.
- Enhanced the application by integrating outbound management functionalities into the existing logistics module.
- Improved user experience with responsive design and real-time data handling for outbound operations.
2026-03-25 10:48:47 +09:00
wace
7c5e9b0c46 Merge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into mhkim-node 2026-03-25 10:08:37 +09:00
wace
0fd0a43370 feat: enhance v2 components and entity join functionality
- Add entity join controller/routes enhancements
- Improve table management and category value services
- Update v2 table list, card display, search widget components
- Improve split panel layout responsiveness

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 09:54:18 +09:00
SeongHyun Kim
cbe3242f3a fix: Docker 환경 health check package.json 경로 오류 수정
require("../../package.json")이 Docker 컨테이너(/app/src/)에서
모듈을 찾지 못해 서버가 크래시하는 문제를 try-catch로 해결한다.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 11:59:45 +09:00
SeongHyun Kim
d061240498 feat: add version info to health check endpoint
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-24 11:37:54 +09:00