Commit Graph

1646 Commits

Author SHA1 Message Date
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
1747119345 fix: 출고 고객사-출하지시 매칭 (partner_id=customer_name 대응) 2026-04-02 09:47:17 +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
d56e46b17c refactor: Update TabBar and EditModal components for improved styling and validation
- Removed unnecessary box shadow from active tab in TabBar for a cleaner look.
- Updated TabBar background to use the main background color for better consistency.
- Enhanced SaveModal to include validation for required fields, providing user feedback for missing inputs.
- Removed unused master data loading function in EditModal to streamline the component.

These changes improve the overall user interface and ensure that required fields are validated before submission, enhancing user experience.
2026-03-10 15:19:50 +09:00
kjs
7ff76741af Merge branch 'ycshin-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-10 14:52:33 +09:00
kjs
28ef7e1226 fix: Enhance error handling and validation messages in form data operations
- Integrated `formatPgError` utility to provide user-friendly error messages based on PostgreSQL error codes during form data operations.
- Updated error responses in `saveFormData`, `saveFormDataEnhanced`, `updateFormData`, and `updateFormDataPartial` to include specific messages based on the company context.
- Improved error handling in the frontend components to display relevant error messages from the server response, ensuring users receive clear feedback on save operations.
- Enhanced the required field validation by incorporating NOT NULL metadata checks across various components, improving the accuracy of form submissions.

These changes improve the overall user experience by providing clearer error messages and ensuring that required fields are properly validated based on both manual settings and database constraints.
2026-03-10 14:47:05 +09:00
kjs
43523a0bba feat: Implement NOT NULL validation for form fields based on table metadata
- Added a new function `isColumnRequired` to determine if a column is required based on its NOT NULL status from the table schema.
- Updated the `SaveModal` and `InteractiveScreenViewer` components to incorporate this validation, ensuring that required fields are accurately assessed during form submission.
- Enhanced the `DynamicComponentRenderer` to reflect the NOT NULL requirement in the component's required state.
- Improved user feedback by marking required fields with an asterisk based on both manual settings and database constraints.

These changes enhance the form validation process, ensuring that users are prompted for all necessary information based on the underlying data structure.
2026-03-10 14:16:02 +09:00
kjs
f565b2d119 fix: Merge form data with group data in EditModal
- Updated the logic in EditModal to merge the existing form data with the first item in groupData if available. This change ensures that relevant data from groupData is incorporated into the form, improving data accuracy and user experience during editing.
2026-03-10 10:53:25 +09:00
kjs
52f25030a4 feat: Implement automatic master data loading for detail rows in EditModal
- Added a new function `loadMasterDataForDetailRow` to automatically fetch master table data based on foreign key relationships when editing detail rows.
- Integrated this functionality to merge master data into the form data after it is set, enhancing the user experience by ensuring relevant data is pre-filled.
- Included error handling and logging for the data loading process to improve debugging and user feedback.

These changes significantly enhance the EditModal by streamlining the data entry process and reducing manual input errors.
2026-03-09 23:25:17 +09:00
kjs
316ce30663 feat: Enhance Excel upload modals with category validation and error handling
- Added category validation functionality to both ExcelUploadModal and MultiTableExcelUploadModal components, allowing for the detection of invalid category values in uploaded Excel data.
- Implemented state management for category validation, including tracking mismatches and user interactions for replacements.
- Updated the handleNext function to incorporate category validation checks before proceeding to the next step in the upload process.
- Enhanced user feedback with toast notifications for category replacements and validation errors.

These changes significantly improve the robustness of the Excel upload process by ensuring data integrity and providing users with clear guidance on category-related issues.
2026-03-09 22:20:54 +09:00
kjs
4d6783e508 feat: Implement automatic serial number generation and reference handling in mold management
- Enhanced the `createMoldSerial` function to automatically generate serial numbers based on defined numbering rules when the serial number is not provided.
- Integrated error handling for the automatic numbering process, ensuring robust logging for success and failure cases.
- Updated the `NumberingRuleService` to support reference column handling, allowing for dynamic prefix generation based on related data.
- Modified the frontend components to accommodate new reference configurations, improving user experience in managing numbering rules.

These changes significantly enhance the mold management functionality by automating serial number generation and improving the flexibility of numbering rules.
2026-03-09 15:34:31 +09:00
kjs
2b4b7819c5 feat: Add Numbering Rule APIs and Frontend Integration
- Implemented a new API endpoint to retrieve numbering rules based on table and column names, enhancing the flexibility of numbering rule management.
- Added a new service method to handle the retrieval of numbering columns specific to a company, ensuring proper company code filtering.
- Updated the frontend to load and display numbering columns, allowing users to select and manage numbering rules effectively.
- Refactored existing logic to improve the handling of numbering rules, including fallback mechanisms for legacy data.

These changes enhance the functionality and user experience in managing numbering rules within the application.
2026-03-09 14:10:08 +09:00
kjs
f6a02b5182 refactor: Update references from table_column_category_values to category_values
- Changed all occurrences of `table_column_category_values` to `category_values` in the backend services and controllers to standardize the terminology.
- Updated SQL queries to reflect the new table name, ensuring proper data retrieval and management.
- Adjusted comments and documentation to clarify the purpose of the `category_values` table in the context of category management.

These changes enhance code clarity and maintain consistency across the application.
2026-03-09 13:46:38 +09:00
b4f4011603 refactor: Update ButtonConfigPanel to conditionally display table history option
- Removed the temporary exposure of the "테이블 이력 보기" (View Table History) option in the ButtonConfigPanel for better compatibility with the existing system.
- The option is now commented out to maintain UI consistency while ensuring it remains available for future use if needed.
2026-03-09 10:41:55 +09:00
kjs
27558787b0 feat: Enhance CategoryValueManagerTree with input focus management and modal improvements
- Added refs for input fields in the CategoryValueManagerTree component to manage focus transitions between the name and description inputs.
- Updated the modal behavior to reset form data without closing the modal, allowing for continuous input.
- Changed the button label from "취소" to "닫기" for better clarity in the modal interface.
- Included debug logging for cascading roles in the SelectBasicComponent to assist with troubleshooting.

These enhancements improve user experience and maintainability of the component.
2026-03-05 23:32:40 +09:00
kjs
ee1760da2f Merge branch 'main' into barcode 2026-03-05 21:46:12 +09:00
7ab05aea72 바코드 업그레이드드 2026-03-05 21:45:26 +09:00
kjs
c56f434ff1 Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-05 19:27:33 +09:00
kjs
536982dd71 Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node 2026-03-05 19:21:50 +09:00
kjs
0e8c68a9ff feat: Add multi-table Excel upload functionality
- Implemented new API endpoints for multi-table Excel upload and auto-detection of table chains.
- The GET endpoint `/api/data/multi-table/auto-detect` allows automatic detection of foreign key relationships based on the provided root table.
- The POST endpoint `/api/data/multi-table/upload` handles the upload of multi-table data, including validation and logging of the upload process.
- Updated the frontend to include options for multi-table Excel upload in the button configuration panel and integrated the corresponding action handler.

This feature enhances the data management capabilities by allowing users to upload and manage data across multiple related tables efficiently.
2026-03-05 19:17:35 +09:00
bfd97c9717 바코드 업데이트 및 AI LLm 적용용 2026-03-05 19:08:08 +09:00
SeongHyun Kim
a81cb7ca19 Merge branch 'ksh-v2-work' 2026-03-05 19:04:54 +09:00
DDD1542
4b8f2b7839 feat: Update screen reference handling in V2 layouts
- Enhanced the `ScreenManagementService` to include updates for V2 layouts in the `screen_layouts_v2` table.
- Implemented logic to remap `screenId`, `targetScreenId`, `modalScreenId`, and other related IDs in layout data.
- Added logging for the number of layouts updated in both V1 and V2, improving traceability of the update process.
- This update ensures that screen references are correctly maintained across different layout versions, enhancing the overall functionality of the screen management system.
2026-03-05 11:30:31 +09:00
7853aeede9 Merge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into ycshin-node 2026-03-05 09:03:24 +09:00
DDD1542
3a3e4e8926 Merge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into gbpark-node
; Please enter a commit message to explain why this merge is necessary,
; especially if it merges an updated upstream into a topic branch.
;
; Lines starting with ';' will be ignored, and an empty message aborts
; the commit.
2026-03-04 22:45:40 +09:00
kjs
95c42a971c Merge branch 'main' into jskim-node 2026-03-04 21:09:55 +09:00
kjs
ac2da7a1d7 feat: Implement entity join functionality in V2Repeater and configuration panel
- Added support for entity joins in the V2Repeater component, allowing for automatic resolution of foreign key references to display data from related tables.
- Introduced a new `resolveEntityJoins` function to handle the fetching and mapping of reference data based on configured entity joins.
- Enhanced the V2RepeaterConfigPanel to manage entity join configurations, including loading available columns and toggling join settings.
- Updated the data handling logic to incorporate mapping rules for incoming data, ensuring that only necessary fields are retained during processing.
- Improved user experience by providing clear logging and feedback during entity join resolution and data mapping operations.
2026-03-04 21:08:45 +09:00
kjs
5f3b144b12 Merge branch 'main' into barcode 2026-03-04 20:54:46 +09:00
b9c0a0f243 바코드 기능 커밋밋 2026-03-04 20:51:00 +09:00
SeongHyun Kim
a6c0ab5664 feat(pop): 입고 확정 시 자동 채번 실행 + 결과 모달 UX + 셀렉트 높이 통일
입고 확정(inbound-confirm) 실행 시 채번 규칙이 설정되어 있어도
inbound_number가 null로 저장되던 문제를 해결한다.
[채번 실행 (FIX-1)]
- types.ts: SaveMapping에 autoGenMappings 필드 추가 (numberingRuleId,
  targetColumn, showResultModal)
- PopFieldComponent: collect_data 응답에 autoGenMappings 포함하여
  백엔드에 채번 규칙 정보 전달
- popActionRoutes: INSERT 전 numberingRuleService.allocateCode() 호출,
  생성된 코드를 generatedCodes 배열로 응답에 포함
[결과 모달 UX]
- pop-button: showResultModal 토글에 따라 채번 결과 모달 표시 분기
- 모달이 열려 있는 동안 followUpActions(refresh/navigate) 지연하여
  사용자가 확인 버튼을 눌러야 후속 액션 실행
[셀렉트 높이 일관성]
- SelectTrigger hasCustomHeight에 /\bh-\d/ 패턴 추가하여
  className의 h-9 등이 기본 data-size="xs"(h-6)와 충돌하지 않도록 수정
[기타 수정]
- SelectFieldInput: Set 기반 dedup으로 React key 중복 방지
- PopFieldConfig: AutoNumberEditor 제거, 채번 규칙을 저장 탭에서 관리
- PopFieldConfig: 전체 채번 규칙 보기 토글 추가
- PopCardListComponent: 장바구니 목록 모드에서 수량 자동 초기화 방지
- PopCardListConfig: 수식 필드 매핑 노출 + 누락 필드 자동 추가
2026-03-04 19:12:22 +09:00
kjs
f97edad1ea feat: Enhance screen group deletion functionality with optional numbering rules deletion
- Added a new query parameter `deleteNumberingRules` to the `deleteScreenGroup` function, allowing users to specify if numbering rules should be deleted when a root screen group is removed.
- Updated the `deleteScreenGroup` controller to handle the deletion of numbering rules conditionally based on the new parameter.
- Enhanced the frontend `ScreenGroupTreeView` component to include a checkbox for users to confirm the deletion of numbering rules when deleting a root group, improving user control and clarity during deletion operations.
- Implemented appropriate warnings and messages to inform users about the implications of deleting numbering rules, ensuring better user experience and data integrity awareness.
2026-03-04 18:42:44 +09:00
DDD1542
f6a2668bdc feat: Enhance approval request handling and user management
- Updated the approval request controller to include target_record_id in query parameters for improved filtering.
- Refactored the approval request creation logic to merge approval_mode into target_record_data, allowing for better handling of approval processes.
- Enhanced the user search functionality in the approval request modal to accommodate additional user attributes such as position and department.
- Improved error handling messages for clarity regarding required fields in the approval request modal.
- Added new menu item for accessing the approval box directly from user dropdown and app layout.

Made-with: Cursor
2026-03-04 18:26:16 +09:00
8f3231d5a1 Merge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into ycshin-node 2026-03-04 16:30:42 +09:00
6ceed2acd0 feat: Implement button iconization feature for screen designer
- Added a comprehensive plan for expanding button display modes in the screen designer, allowing for text, icon, and icon+text modes.
- Introduced a new `ButtonIconRenderer` component to handle dynamic rendering of buttons based on selected display modes and actions.
- Enhanced the `ButtonConfigPanel` to include UI for selecting display modes and managing icon settings, including size, color, and position.
- Implemented functionality for custom icon addition via lucide search and SVG paste, ensuring flexibility for users.
- Updated relevant components to utilize the new button rendering logic, improving the overall user experience and visual consistency.

Made-with: Cursor
2026-03-04 16:30:05 +09:00