Commit Graph

4082 Commits

Author SHA1 Message Date
545b206f4c [RAPID-micro] 메일관리 IMAP 서비스 프리셋 추가 (Gmail, Naver, Outlook 등)
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 15:28:59 +09:00
8ddb7319ab [RAPID-micro] 메일관리 계정 추가 버튼을 계정 목록 패널로 이동
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 15:28:59 +09:00
1b92c283fb [RAPID-micro] 메신저 ESC 키로 닫기 기능 추가
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 13:57:11 +09:00
2b237446dd [RAPID-micro] 메신저 입력창 상단 가로선 제거
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 12:28:42 +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
3661b469cd [RAPID-fix] 채팅방 스크롤 점프 제거: useEffect → useLayoutEffect (페인트 전 처리)
[RAPID-fix] 스크롤 sentinel 방식으로 교체: scrollIntoView useLayoutEffect (페인트 전 보장)

[RAPID-fix] 스크롤 근본 원인 수정: isOpen deps 추가로 메신저 열릴 때마다 하단 스크롤

[RAPID-fix] 스크롤 ResizeObserver 추가: 이미지 로드 후 높이 변화 감지해 자동 하단 스크롤
2026-04-01 12:20:43 +09:00
0fa7b792dd [RAPID-fix] 캡처 이미지 크기 수정: CSS 픽셀 기준 scale factor로 정확한 영역 크롭
[RAPID-fix] 캡처 속도/화질 개선 + 드래그 커서 4방향 화살표로 변경

- 오버레이 마운트 시점에 미리 캡처 시작 → mouseup 즉시 크롭
- scale: max(dpr, 2)로 화질 2배 향상
- 캡처 준비 중 wait 커서 표시
- 메신저 헤더 드래그 커서 cursor-grab → cursor-move (4방향 화살표)

[RAPID-micro] 캡처 버튼 헤더 → 입력창 첨부파일 좌측으로 이동

[RAPID-micro] 채팅방 선택 시 스크롤 하단 이동 수정

[RAPID] 메신저 3가지 수정: 스크롤 버튼, DM 상대방 이름, 캡처 속도 개선

[RAPID-fix] 스크롤/캡처 3가지 수정

- 스크롤 하단 이동: useLayoutEffect → useEffect+rAF (이미지 레이아웃 완료 후 스크롤)
- 스크롤 버튼: 리스너 deps를 room.id로 변경 (room 없을 때 미연결 문제 해결)
- 캡처 속도: domToPng(느림) → getDisplayMedia 네이티브 API(즉시 캡처)

[RAPID-fix] 메신저 3가지 수정

- 최신 메시지 버튼: 스크롤 컨테이너 밖으로 이동, 입력창 위 중앙 고정
- 스크롤 하단: rAF + 600ms 지연 2회 (이미지 비동기 로드 대응)
- 캡처: 버튼 클릭 즉시 오버레이 + domToPng 병렬 실행, mouseup에서 await (font:false 최적화)

[RAPID-micro] 채팅방 열 때 스크롤 점프 제거

[RAPID-fix] 캡처 오버레이 렌더 후 domToPng 시작으로 mousedown 딜레이 개선

[RAPID-fix] 캡처 프리캐싱: 메신저 열릴 때 백그라운드 domToPng → 버튼 클릭 즉시 오버레이

[RAPID-fix] 캡처 worker 추가: 리소스 fetch를 Web Worker로 오프로드

[RAPID-fix] 캡처 방식 변경: domToPng 제거 → getDisplayMedia (즉시 캡처, 프리캐싱 제거)

[RAPID-micro] 화면 캡처 버튼 제거 (Cmd+V 붙여넣기로 대체)
2026-04-01 12:20:42 +09:00
b08d337a33 [RAPID] PCC: SCR 2026-04-01 12:20:41 +09:00
20b82dc57b [RAPID] 메신저 화면 캡처 기능 구현
- modern-screenshot 패키지 추가
- ScreenCapture: 전체화면 오버레이 + 드래그 영역 선택 + DOM 캡처
- MessengerModal: 캡처 버튼(Scissors) 추가, 캡처 중 모달 숨김
- MessageInput: forwardRef로 addFiles 메서드 외부 노출
- ChatPanel: messageInputRef prop 추가 및 전달

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 12:20:41 +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
c9d04f3018 [RAPID] PCC 체크리스트 업데이트 (공정 90%)
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
b1b10f5e27 Merge branch 'kwshin-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-31 11:20:49 +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
kjs
2bd99849b4 Merge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-31 10:34:10 +09:00
kjs
c903ace628 Update SalesOrderPage to include order_date in master form initialization
- Added order_date to the master form state in SalesOrderPage for both COMPANY_29 and COMPANY_7.
- The order_date is set to the current date in ISO format, enhancing the order management functionality by automatically capturing the order date upon form initialization.

This change improves the user experience by ensuring that the order date is readily available for new sales orders.
2026-03-31 10:34:09 +09:00
kjs
378b8e7e7a Merge branch 'main' into jskim-node 2026-03-30 18:29:48 +09:00
kjs
a9e496ce0b Enhance division filtering in sales pages for better data retrieval
- Updated the division filter logic in CustomerManagementPage, SalesOrderPage, and SalesItemPage to use 'contains' operator for multi-value matching.
- This change allows for more flexible filtering of sales items based on the division, improving the accuracy of displayed data.
- The division filter now consistently uses the same value across different components, ensuring uniformity in data handling.

This commit enhances the functionality of the sales management pages by refining the filtering process, leading to a better user experience in managing sales data.
2026-03-30 18:25:46 +09:00
kjs
b1d82a2384 Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-30 18:10:58 +09:00
e763249342 [RAPID] PCC: MSN 2026-03-30 17:52:57 +09:00
8169420e61 [RAPID-micro] 메일 관리 타이틀에서 (IMAP) 제거 2026-03-30 17:25:07 +09:00
37e553a460 chore: .omc 캐시 추적 제거 2026-03-30 17:19:18 +09:00
ea20f5b333 docs: user-mail PCC 및 체크리스트 작성 (IMAP 기능 완료 반영)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 17:17:30 +09:00
cbf75ad05a chore: .omc 디렉토리 git 추적 제외
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 17:17:25 +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
kjs
767863b6d6 Merge pull request 'jskim-node' (#434) from jskim-node into main
Reviewed-on: http://39.117.244.52:3000/kjs/ERP-node/pulls/434
2026-03-30 17:03:42 +09:00
kjs
078f6b921e Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-30 17:03:23 +09:00
kjs
615687328f Merge branch 'mhkim-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-30 17:03:12 +09:00
kjs
d25a9ce898 Merge branch 'mhkim-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-30 17:02:59 +09:00
kjs
5849074b9f Merge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-30 17:02:49 +09:00
kjs
f2f18db449 Refactor customer management page to improve price item handling
- Update the logic for retrieving and processing customer item prices.
- Replace the previous price mapping with a grouping mechanism based on item_id and today's date.
- Enhance the handling of customer item codes and names to ensure proper aggregation.
- Improve overall readability and maintainability of the code.

This commit enhances the functionality of the customer management page by ensuring accurate price data is displayed based on the current date, improving user experience in managing customer items.
2026-03-30 17:02:48 +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
45a92de60b Merge pull request 'Implement pagination for source data in Outbound, Receiving, and Shipping Order pages' (#433) from jskim-node into main
Reviewed-on: http://39.117.244.52:3000/kjs/ERP-node/pulls/433
2026-03-30 12:15:05 +09:00
kjs
022ed64274 Merge branch 'main' into jskim-node 2026-03-30 12:14:58 +09:00
kjs
42bb3a18fb Implement pagination for source data in Outbound, Receiving, and Shipping Order pages
- Add pagination state management for source data in OutboundPage and ReceivingPage.
- Introduce pagination controls with navigation buttons for better user experience.
- Update data loading functions to accommodate pagination parameters.
- Enhance SalesItemPage to include isDefault property in category options.

This commit improves the usability of logistics and sales item management by allowing users to navigate through large sets of data more efficiently.
2026-03-30 12:14:46 +09:00
kjs
21c507d9f7 Merge pull request 'jskim-node' (#432) from jskim-node into main
Reviewed-on: http://39.117.244.52:3000/kjs/ERP-node/pulls/432
2026-03-30 11:59:14 +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
b9ce5f199d Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-30 11:51:53 +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