- 사용자 온라인 상태 표시 (온라인/자리비움/오프라인) 디스코드 스타일
- 채팅방별 알림 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>
[RAPID-fix] 스크롤 sentinel 방식으로 교체: scrollIntoView useLayoutEffect (페인트 전 보장)
[RAPID-fix] 스크롤 근본 원인 수정: isOpen deps 추가로 메신저 열릴 때마다 하단 스크롤
[RAPID-fix] 스크롤 ResizeObserver 추가: 이미지 로드 후 높이 변화 감지해 자동 하단 스크롤
[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 붙여넣기로 대체)
- modern-screenshot 패키지 추가
- ScreenCapture: 전체화면 오버레이 + 드래그 영역 선택 + DOM 캡처
- MessengerModal: 캡처 버튼(Scissors) 추가, 캡처 중 모달 숨김
- MessageInput: forwardRef로 addFiles 메서드 외부 노출
- ChatPanel: messageInputRef prop 추가 및 전달
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
[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>
- 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>
- 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.
- 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.
- 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.
- 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.
- 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.
- IMAP 계정 등록/수정/삭제/연결테스트
- SSE 스트리밍으로 메일 목록 로드 (폴더별 지원)
- 메일 상세 조회, 읽음 처리, 삭제(휴지통 이동), 폴더 이동
- 첨부파일 다운로드 (ReadableStream 진행바)
- SMTP 발송, 답장, 전달
- imapConnectionPool, mailCache 서비스
- encryptionService Node 22+ 호환 수정
- authMiddleware query token 지원 추가
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 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.
- 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>
- 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.
- 부서 등록 시 부서코드 자동 생성 로직 수정
- 고객 관리 페이지에서 거래처 담당자 및 사내 담당자 컬럼 추가
- 고객 관리 페이지에서 사원 목록 로드 기능 추가
- 다중 선택 기능을 위한 포털 구현 및 외부 클릭 시 저장 기능 추가
- 테이블 컴포넌트에서 다중 선택 컬럼 자동 감지 기능 추가
이 커밋은 부서 및 고객 관리 기능을 개선하고, 사용자 경험을 향상시키기 위한 여러 변경 사항을 포함합니다.
- 부서 등록 시 자동 생성 부서코드 기능 추가
- 사용자 관리에서 부서 필수 입력 검증 추가
- 품목 정보 페이지에서 입력 필드에 placeholder 추가
- 고객 관리 페이지에서 원본 카테고리 코드 보관 및 빈 문자열을 null로 변환하는 로직 추가
- 판매 주문 페이지에서 품목 검색 필터에 관리품목 선택 기능 추가
이 커밋은 부서 및 사용자 관리 기능을 개선하고, 사용자 경험을 향상시키기 위한 여러 변경 사항을 포함합니다.