Commit Graph

4122 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
368090e9c6 fix: next-themes 패키지 설치 (ThemeProvider 의존성) 2026-04-02 13:20:46 +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
86926e18af refactor: 작업지시/생산실적 아이콘 홈에서 제거 (생산관리 메뉴 안으로 이동) 2026-04-02 11:44:32 +09:00
SeongHyun Kim
0f6f652bed feat: 생산관리 메인 메뉴 (입고/출고와 동일 패턴)
- /pop/production → ProductionMain (아이콘 메뉴: 공정실행/작업지시/생산현황/불량관리/실적조회)
- /pop/production/process → WorkOrderList (기존 공정 목록 이동)
- KPI 실데이터 연동 (작업지시 목록 API)
- amber gradient 테마, 최근 생산활동
- cmux 검증 완료
2026-04-02 11:28:55 +09:00
SeongHyun Kim
b644961c60 fix: cart_items DELETE → status 변경 (이력 보존)
- 확정: status "in_cart" → "confirmed" (이력 추적 가능)
- 취소: status "in_cart" → "cancelled"
- 조회: status="in_cart"만 표시 (confirmed/cancelled는 안 보임)
- DELETE 제거 → updateRecord로 변경 (3곳)
2026-04-02 11:03:03 +09:00
SeongHyun Kim
8776405a1b fix: 장바구니 확정 후 cart_items DELETE + 품목 이미지 지원
- useCartSync: 삭제 시 deleteRecord 사용 (cancelled 업데이트 대신)
- InboundCartPage: 확정 후 직접 DELETE 호출 (이중 안전장치)
- OutboundCartPage: 동일 수정
- 품목 카드: item_info.image 있으면 표시, 없으면 📦
- cmux 검증: 확정 후 cart_items 0건 확인
2026-04-02 10:59:23 +09:00
SeongHyun Kim
a322f9e596 feat: 장바구니 카드 = 발주/출하 카드 UI 통일
- InboundCartPage: 발주 카드와 동일 레이아웃 (이미지좌+정보중+수량우)
- OutboundCartPage: 출하 카드와 동일 레이아웃 (green 테마)
- 삭제 버튼: 텍스트 포함 빨간 버튼
- 포장/검사 정보 위치 통일
- cmux 검증 완료
2026-04-02 10:13:53 +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
1747119345 fix: 출고 고객사-출하지시 매칭 (partner_id=customer_name 대응) 2026-04-02 09:47:17 +09:00
kjs
775d698d06 Add new pages for design management, including change management, design requests, my work, project management, task management, equipment info, and material status
- Introduced multiple new pages to enhance design management functionalities, allowing users to manage design requests, track their work, and oversee project and task statuses.
- Implemented UI components such as tables, dialogs, and forms to facilitate user interactions and data management.
- Integrated necessary API calls for fetching and manipulating design-related data, ensuring a seamless user experience across the new pages.

These additions significantly expand the design management capabilities of the application, providing users with comprehensive tools for managing their design workflows.
2026-04-02 09:43:59 +09:00
SeongHyun Kim
089f1e4b4c feat: MES 공정 화면 (작업지시목록 + 공정작업상세 + 타이머 + 실적 + 입고)
- WorkOrderList: 탭 필터(전체/접수가능/진행중/대기/완료), 공정카드, 접수
- ProcessWork: 타이머(시작/정지/재개/종료), 실적입력(양품/불량), 확정, 생산입고
- ProcessTimer: HH:MM:SS 실시간, 상태별 색상
- DefectTypeModal: 불량유형 선택 + 수량 + 처리방법
- AcceptProcessModal: 접수 수량 키패드
- cmux 검증: 화면 표시 OK, 탭 필터 OK, API 연동 OK
2026-04-02 09:33:53 +09:00
SeongHyun Kim
25d4a211d6 feat: 출고 화면 세트 (유형선택 + 판매출고 + 장바구니)
- OutboundTypeSelect: 외부 5종 + 내부 2종, KPI 실데이터, 최근출고
- SalesOutbound: 고객사 선택 + 출하지시 품목 + useCartSync 연동
- OutboundCartPage: 출고일자/창고/번호 + 확정 + 결과모달
- CustomerModal: customer_mng 실데이터 + 초성검색
- 입고와 동일 UI 통일감, green gradient
- cmux 검증: 화면 표시 OK, 고객사 모달 실데이터 OK
2026-04-02 09:23:32 +09:00
SeongHyun Kim
2a30ab33f6 fix: 미입고 수량 갱신 — 담기 후 remain_qty 차감 표시 2026-04-02 09:11:19 +09:00
SeongHyun Kim
6566b7fd84 feat: 입고 확정 결과 모달 (입고번호 + 처리 품목 표시)
- 확정 후 모달: 입고번호, 창고, 날짜, 처리된 품목 목록
- 확인 클릭 → 입고유형선택으로 이동
- cmux+psql로 전체 흐름 검증 완료:
  RCV-2026-0002 생성, 재고 +100, cart cancelled
2026-04-01 22:49:40 +09:00
SeongHyun Kim
3e268ca637 fix: useCartSync id 자동생성 + cart_items DB 저장 완전 해결
- useCartSync: createRecord 시 crypto.randomUUID()로 id 생성
- cart_items NOT NULL id 제약 해결
- cmux browser로 실제 검증 완료:
  - 담기 → DB 저장 확인 (in_cart status)
  - 장바구니 페이지 이동 + 품목 표시 확인
  - 배지 숫자 표시 + isDirty 애니메이션
  - 하단 큰 확정 버튼 제거 (우상단만)
2026-04-01 22:37:14 +09:00
SeongHyun Kim
4b5bccb86a fix: cart_items DB 저장 + 입고번호 확정시점 채번 + 장바구니 조회
- cart_items: id를 crypto.randomUUID()로 생성 (NOT NULL 대응)
- cart_items: row_data에 품목 정보 JSON 저장
- 입고번호: 장바구니에서 미리 표시 안 함 → 확정 시 생성
- 장바구니 조회: 올바른 API 파라미터로 수정
- 담기 취소 시 dbId로 정확한 cart_items DELETE
2026-04-01 22:03:37 +09:00
SeongHyun Kim
d20b65bd12 feat: 입고 장바구니 독립 페이지 (/pop/inbound/cart)
- InboundCartPage: cart_items DB 영속 저장, 탭 이동해도 유지
- 상단: 입고일자(날짜피커) + 창고(터치선택) + 입고번호(자동채번)
- 품목: 체크박스, 수량수정(키패드), 삭제, 포장정보
- 검사: 필수→완료필수, 비필수→패스버튼, 미완료시 확정차단
- 전량 입고 원칙: 불량 포함 전체 입고 (팀장 규칙)
- PurchaseInbound: 장바구니 아이콘→독립페이지 이동 (모달 제거)
2026-04-01 21:46:22 +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
SeongHyun Kim
4b9b26d957 fix: PC 프로필에 POP 모드 추가 (AppLayout.tsx — 실제 렌더링 위치) 2026-04-01 18:25:12 +09:00
SeongHyun Kim
f706556228 feat: PC 프로필에 POP 모드 전환 + PC전환 시 전체화면 해제
- PC UserDropdown에 "POP 모드" 메뉴 추가 (결재함↔로그아웃 사이)
- POP→PC 전환 시 전체화면 자동 해제
2026-04-01 18:17:10 +09:00
SeongHyun Kim
0232b1ed2c feat: 프로필 드롭다운 메뉴 (PC모드/앱모드/홈/로그아웃) 2026-04-01 18:03:03 +09:00
SeongHyun Kim
07db35c2e6 feat: 입고 KPI 실데이터 + 장바구니 헤더 이동 + 거래처 모달 복원
- 입고유형선택: KPI/최근입고 실데이터 연동 (더미 제거)
- 장바구니 아이콘: 본문 → 헤더 프로필 왼쪽으로 이동
- PopShell: headerRight prop 추가
- 거래처: 인라인 드롭다운 제거, 클릭→모달 방식 복원
2026-04-01 17:41:01 +09:00
SeongHyun Kim
f03f35e744 feat: 실데이터 연동 + UI 개선 + 바코드 스캔
- 홈 KPI: 실제 입고/출고 건수 API 연동
- 홈 최근활동: 실제 입고+출고 이벤트 표시
- 구매입고 cart_items DB 연동 (cart-save → data-save)
- 입고 확정: 입고번호 자동생성 + 창고 선택 + cart 정리
- 거래처: 클릭→모달 방식으로 변경
- QR/바코드 스캔: BarcodeScanModal 이식 + glossy v3 버튼
- 수량 입력: 단계별 흐름 (포장→개수→수량→확인)
- 발주품목: 거래처 미선택 시 빈 화면 안내
- 돋보기 아이콘 제거
2026-04-01 17:33:16 +09:00
SeongHyun Kim
ecf79c9e50 feat: POP v2 하드코딩 화면 — 홈 + 입고 프로세스
- 홈 화면: KPI 캐러셀, 메뉴 아이콘, 최근 활동, 공지 배너
- 입고유형선택: 외부 7개 + 내부 3개 아이콘, 금일 입고 KPI
- 구매입고: 거래처 선택, 발주 품목 카드, 담기/취소
- 장바구니: 체크박스, 포장 정보, 검사 상태, 확정
- 숫자 키패드: 터치 입력, MAX, 포장등록
- 포장 선택: 6종 단위 (박스/포대/팩/묶음/롤/통)
- 검사 모달: 마스터 기반 체크리스트, 측정값, 양품/불량
- 공통 PopShell: 헤더(시계+프로필), 배너, 푸터
- 반응형 4모드 (태블릿/핸드폰 가로세로)
2026-04-01 17:19:12 +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
948ddbe832 Refactor Dashboard Management to Use Tab Store for Navigation
- Removed the useRouter hook and replaced it with the useTabStore for managing tab navigation in the Dashboard List and Dashboard Designer pages.
- Updated button and row click handlers to utilize the openTab function, enhancing the user experience by allowing for tabbed navigation instead of direct routing.
- This change improves the overall structure and maintainability of the dashboard management functionality, aligning with the new tab management system.
2026-04-01 16:37:21 +09:00
kjs
7c402532b4 Update Barcode Label Management Page UI for Consistency
- Changed background color of the main container from white to card style for better visual consistency with the overall design.
- Updated the CardHeader background to a muted style, enhancing the aesthetic appeal and aligning with the new design guidelines.

These changes improve the user interface of the Barcode Label Management page, ensuring a cohesive look and feel across the application.
2026-04-01 16:28:59 +09:00
kjs
540b6290c4 Implement multi-language support in audit log, system notices, collection management, and common code management pages
- Integrated multi-language functionality across the audit log, system notices, collection management, and common code management components, enhancing accessibility for diverse users.
- Updated UI elements to utilize translation keys, ensuring that all text is dynamically translated based on user preferences.
- Improved error handling messages to be localized, providing a better user experience in case of issues.

These changes significantly enhance the usability and internationalization of the management features, making the application more inclusive.
2026-04-01 16:16:40 +09:00
kjs
1d49fc7ac7 Implement multi-language support in user management and system management pages
- Integrated multi-language functionality across various user management components, including user list, roles list, and user authorization pages, enhancing accessibility for diverse users.
- Updated UI elements to utilize translation keys, ensuring that all text is dynamically translated based on user preferences.
- Improved error handling messages to be localized, providing a better user experience in case of issues.

These changes significantly enhance the usability and internationalization of the user management features, making the application more inclusive.
2026-04-01 15:57:12 +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
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
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
1b92c283fb [RAPID-micro] 메신저 ESC 키로 닫기 기능 추가
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 13:57:11 +09:00
802482f1de Merge pull request 'jskim-node' (#1) from jskim-node into main
Reviewed-on: jskim/vexplor_dev#1
2026-04-01 03:36:17 +00:00
kjs
8be4159f17 Remove outdated documents related to the approval system and WACE system analysis
- Deleted the following files as they are no longer relevant to the current project structure:
  - 결재 시스템 구현 현황
  - 결재 시스템 v2 사용 가이드
  - WACE 시스템 문제점 분석 및 개선 계획
  - Agent Pipeline 한계점 분석
  - AI 기반 화면 자동 생성 시스템 설계서
  - WACE ERP Backend - 분석 문서 인덱스

These deletions help streamline the documentation and remove obsolete information, ensuring that only current and relevant resources are maintained.
2026-04-01 12:35:40 +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