Commit Graph

1584 Commits

Author SHA1 Message Date
kjs 5e6261f51a feat: enhance V2 process work standard configuration panel
- Introduced a new TableCombobox component for selecting tables, improving user experience by allowing table searches and selections.
- Added a ColumnCombobox component to facilitate column selection based on the chosen table, enhancing the configurability of the process work standard settings.
- Updated the V2ProcessWorkStandardConfigPanel to utilize the new combobox components, streamlining the configuration process for item tables and columns.
- Removed the deprecated mcp.json file and updated .gitignore to reflect recent changes.

These enhancements aim to improve the usability and flexibility of the configuration panel, making it easier for users to manage their process work standards.
2026-03-17 18:19:08 +09:00
DDD1542 ad48b22770 [agent-pipeline] rollback to d3acf391 2026-03-17 18:17:51 +09:00
DDD1542 9dc2959601 [agent-pipeline] pipe-20260317084014-ydap round-2 2026-03-17 18:17:51 +09:00
DDD1542 d3acf391a4 [agent-pipeline] pipe-20260317084014-ydap round-1 2026-03-17 18:05:10 +09:00
kjs ae4fe7a66e chore: update .gitignore and remove quick insert options from button configurations
- Added new entries to .gitignore for multi-agent MCP task queue and related rules.
- Removed "즉시 저장" (quick insert) options from the ScreenSettingModal and BasicTab components to streamline button configurations.
- Cleaned up unused event options in the V2ButtonConfigPanel to enhance clarity and maintainability.

These changes aim to improve project organization and simplify the user interface by eliminating redundant options.
2026-03-17 17:37:40 +09:00
DDD1542 9409f1308f [agent-pipeline] pipe-20260317063830-0nfs round-3 2026-03-17 17:12:54 +09:00
kjs 2976cad0a5 feat: enhance item routing modal configuration
- Added new properties for configuring the item addition modal's maximum width and list height in the ItemRoutingConfig interface.
- Updated the ColumnEditor component to include additional content for modal size settings, allowing users to specify width and height in pixels.
- Adjusted the ItemRoutingComponent to apply the new configuration settings for the modal's dimensions, improving the user experience by providing more control over modal appearance.

These changes aim to enhance the flexibility and usability of the item routing modal within the application.
2026-03-17 16:54:56 +09:00
DDD1542 265f46f8d4 [agent-pipeline] pipe-20260317063830-0nfs round-2 2026-03-17 16:47:12 +09:00
kmh ab98c655b5 feat: enhance EditModal and input components for improved layout and functionality
- Updated EditModal to prioritize screen resolution settings from layout data, ensuring accurate dimension calculations.
- Refined modal styling for better responsiveness and consistency with ScreenModal.
- Adjusted V2Input and V2Select components to remove unnecessary gap styling, streamlining their layout.
- Enhanced DynamicComponentRenderer to handle horizontal labels more effectively with an external wrapper.

These changes aim to improve the user experience and visual consistency across the application.
2026-03-17 16:25:42 +09:00
DDD1542 128872b766 [agent-pipeline] pipe-20260317063830-0nfs round-1 2026-03-17 16:20:24 +09:00
DDD1542 80cd95e683 [agent-pipeline] pipe-20260317054958-cypk round-6 2026-03-17 15:18:41 +09:00
DDD1542 d8a542b253 [agent-pipeline] pipe-20260317054958-cypk round-5 2026-03-17 15:13:42 +09:00
DDD1542 c55520f01c [agent-pipeline] rollback to 87a7431e 2026-03-17 15:09:53 +09:00
DDD1542 c3fae741ae [agent-pipeline] pipe-20260317054958-cypk round-4 2026-03-17 15:09:53 +09:00
kjs 7c96461f59 feat: enhance audit log functionality and file upload components
- Updated the audit log controller to determine super admin status based on user type instead of company code.
- Added detailed logging for column settings updates and batch updates in the table management controller, capturing user actions and changes made.
- Implemented security measures in the audit log service to mask sensitive data for non-super admin users.
- Introduced a new TableCellFile component to handle file attachments, supporting both objid and JSON array formats for file information.
- Enhanced the file upload component to manage file states more effectively during record changes and mode transitions.

These updates aim to improve the audit logging capabilities and file management features within the ERP system, ensuring better security and user experience.
2026-03-17 11:31:54 +09:00
kjs 4e65af4919 Merge branch 'gbpark-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-17 09:55:51 +09:00
DDD1542 4ba931dc70 2026-03-17 09:54:44 +09:00
kjs e8dc1a287a Merge branch 'mhkim-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-17 09:46:07 +09:00
kmh cf4296b020 feat: implement pagination settings in split panel layout
- Added pagination configuration options for both left and right panels in the SplitPanelLayoutComponent, allowing for server-side data retrieval in pages.
- Introduced a new PaginationConfig interface to manage pagination settings, including page size.
- Enhanced data loading functions to support pagination, improving data management and user experience.

Made-with: Cursor
2026-03-17 09:44:41 +09:00
SeongHyun Kim 06c52b422f feat: BLOCK DETAIL Phase 4 + 안정화 - 그룹별 타이머, 터치 최적화 UI, DB 저장 버그 수정
pop-work-detail 컴포넌트에 그룹별 타이머 시스템과 터치 최적화 UI를 추가하고,
체크리스트 결과가 DB에 저장되지 않던 버그를 수정하여 안정화를 완료한다.
[그룹별 타이머]
- group-timer API 신규: start/pause/resume/complete 액션 (popProductionController)
- process_work_result에 group_started_at/paused_at/total_paused_time/completed_at 활용
- GroupTimerHeader UI: 순수 작업시간 + 경과시간 이중 표시
- 첫 그룹 "시작" 시 work_order_process.started_at 자동 기록 (공정 시작 자동 감지)
- 공정 완료 시 actual_work_time을 그룹 타이머 합산으로 백엔드 자동 계산
[터치 최적화 UI]
- 12개 영역 전면 스케일업: 버튼 h-11~h-12, 입력 h-11, 체크박스 h-6 w-6
- 사이드바 w-[180px], InfoBar text-sm, 최소 터치 영역 40~44px 확보
- 산업 현장 태블릿 터치 사용 최적화
[DB 저장 버그 수정]
- saveResultValue/handleQuantityRegister: execute-action task 형식 수정
  (fixedValue + lookupMode:"manual" + manualItemField/manualPkColumn:"id")
- 원인: 백엔드가 __cart_row_key를 찾는데 프론트에서 id만 전송하여 lookup 실패
[디자이너 설정 확장]
- displayMode: list/step 전환 설정 추가
- PopWorkDetailConfig: 표시 모드 Select 드롭다운
- types.ts: PopWorkDetailConfig 인터페이스 displayMode 추가
- PopCardListV2Component: parentRow.__processFlow__ 전달 보강
2026-03-17 09:32:59 +09:00
kjs b4a5fb9aa3 feat: enhance ButtonConfigPanel and V2ButtonConfigPanel with improved data handling
- Updated the ButtonConfigPanel to fetch a larger set of screens by modifying the API call to include a size parameter.
- Enhanced the V2ButtonConfigPanel with new state variables and effects for managing data transfer field mappings, including loading available tables and their columns.
- Implemented multi-table mapping logic to support complex data transfer actions, improving the flexibility and usability of the component.
- Added a dedicated section for field mapping in the UI, allowing users to configure data transfer settings more effectively.

These updates aim to enhance the functionality and user experience of the button configuration panels within the ERP system, enabling better data management and transfer capabilities.

Made-with: Cursor
2026-03-16 16:47:33 +09:00
DDD1542 7bb74ec449 Merge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into gbpark-node
Made-with: Cursor

; Conflicts:
;	backend-node/src/services/numberingRuleService.ts
2026-03-16 16:39:02 +09:00
SeongHyun Kim 230d35b03a fix: PopFieldConfig JsonKeySelect - 데이터 없을 때도 Combobox UI 유지
테이블에 데이터가 0건일 때 JsonKeySelect가 plain Input으로 폴백되어
설계 단계에서 Select 박스가 표시되지 않는 문제를 수정한다.
[JsonKeySelect 개선]
- 항상 Combobox(Popover + Command) UI로 렌더링
- keys 있을 때: 기존과 동일한 자동완성 목록 + 검색
- keys 없을 때: "테이블에 데이터가 없습니다" 안내 + Enter로 직접 입력 확정
- 검색 결과 없을 때도 Enter로 자유 입력 가능
[updateSaveMapping 경합 조건 수정]
- onUpdateConfig 두 번 연속 호출 시 React batching으로 첫 번째 호출이
  덮어쓰여지는 문제 수정
- syncAndUpdateSaveMappings에 extraPartial 파라미터 추가하여
  한 번의 onUpdateConfig 호출로 병합
2026-03-16 16:24:27 +09:00
kjs ec3cb8155f Merge branch 'ycshin-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-16 14:51:51 +09:00
kjs 1a319d1785 feat: enhance V2TimelineSchedulerConfigPanel with filter and view mode options
- Added new filter and linking settings section to the V2TimelineSchedulerConfigPanel, allowing users to manage static filters and linked filters more effectively.
- Introduced view mode options to switch between different display modes in the timeline scheduler.
- Updated the configuration types and added new toolbar action settings to support custom actions in the timeline toolbar.
- Enhanced the overall user experience by providing more flexible filtering and display options.

These updates aim to improve the functionality and usability of the timeline scheduler within the ERP system, enabling better data management and visualization.

Made-with: Cursor
2026-03-16 14:51:34 +09:00
kjs 64c9f25f63 feat: add schedule preview functionality for production plans
- Implemented previewSchedule and previewSemiSchedule functions in the production controller to allow users to preview schedule changes without making actual database modifications.
- Added corresponding routes for schedule preview in productionRoutes.
- Enhanced productionPlanService with logic to generate schedule previews based on provided items and plan IDs.
- Introduced SchedulePreviewDialog component to display the preview results in the frontend, including summary and detailed views of planned schedules.

These updates improve the user experience by providing a way to visualize scheduling changes before applying them, ensuring better planning and decision-making.

Made-with: Cursor
2026-03-16 14:00:07 +09:00
DDD1542 e305e78155 Implement Comma Value Resolution in Entity Join Service
- Added a new method `resolveCommaValues` in `EntityJoinService` to handle comma-separated values for entity joins, allowing for individual code resolution and label conversion.
- Integrated the new method into `TableManagementService` to process data after executing join queries.
- Enhanced the `DynamicComponentRenderer` to maintain entity label columns based on existing configurations.

Made-with: Cursor
2026-03-16 11:43:26 +09:00
syc0123 7e02fff717 fix: update default button size in V2ButtonPrimary component
- Changed the default width of the V2ButtonPrimary component from 140 to 100 pixels to improve UI consistency and responsiveness.
- This adjustment aligns the button size with design specifications for better user experience.
2026-03-16 11:28:03 +09:00
syc0123 a5890bbd67 Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node into ycshin-node 2026-03-16 10:45:00 +09:00
kjs 6505df8555 feat: enhance v2-timeline-scheduler component functionality
- Updated the v2-timeline-scheduler documentation to reflect the latest implementation status and enhancements.
- Improved the TimelineSchedulerComponent by integrating conflict detection and milestone rendering features.
- Refactored ResourceRow and ScheduleBar components to support new props for handling conflicts and milestones.
- Added visual indicators for conflicts and milestones to enhance user experience and clarity in scheduling.

These changes aim to improve the functionality and usability of the timeline scheduler within the ERP system.

Made-with: Cursor
2026-03-16 10:40:10 +09:00
kjs d3e62912e7 Merge branch 'gbpark-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-16 10:39:52 +09:00
syc0123 3225a7bb21 feat: add bulk update script for COMPANY_7 button styles
- Introduced a new script `btn-bulk-update-company7.ts` to facilitate bulk updates of button styles for COMPANY_7.
- The script includes functionalities for testing, running updates, creating backups, and restoring from backups.
- Implemented logic to dynamically apply button styles based on action types, ensuring consistent UI across the application.
- Updated documentation to reflect changes in button icon mapping and dynamic loading of icons.

This addition enhances the maintainability and consistency of button styles for COMPANY_7, streamlining the update process.
2026-03-16 10:38:12 +09:00
SeongHyun Kim 224338d75f Merge branch 'ksh-v2-work' into main
POP 디자이너 GRID-V6 + BLOCK DETAIL Phase 2~3 + 낙관적 잠금 기능을 main에 통합한다.
주요 병합 내용:
- GRID-V6 정사각형 블록 그리드 시스템 (842ac27d)
- POP 그리드 명칭 통일 + Dead Code 제거 (320100c4)
- BLOCK DETAIL Phase 2: 생산 공정 백엔드 API (create-work-processes, timer)
- BLOCK DETAIL Phase 3: pop-work-detail 컴포넌트 + 모달 캔버스 시스템
- 낙관적 잠금 + 소유자 기반 액션 제어 + 디자이너 설정 UI
- LOCK-OWNER 카드 비활성화 UI 보완
충돌 해결: 0건 (자동 병합 완료)
2026-03-16 10:37:31 +09:00
SeongHyun Kim 3bd0eff82e feat: BLOCK DETAIL Phase 3 - pop-work-detail 컴포넌트 + 모달 캔버스 시스템
세부진행화면(4502)의 프론트엔드 구현: pop-work-detail 컴포넌트 신규 생성과
디자이너 모달 캔버스 편집을 통해, 카드 클릭 시 공정별 체크리스트/검사/실적 상세
작업 화면을 내부 모달로 표시할 수 있게 한다.
[신규] pop-work-detail 컴포넌트 (4파일)
- PopWorkDetailComponent: parentRow → 현재 공정 추출 → process_work_result 조회,
  좌측 사이드바(PRE/IN/POST 3단계 작업항목 그룹) + 우측 체크리스트(5종: check/inspect/
  input/procedure/material) + 타이머 제어(start/pause/resume) + 수량 등록 + 공정 완료
- PopWorkDetailConfig: showTimer/showQuantityInput/phaseLabels 설정 패널
- PopWorkDetailPreview: 디자이너 프리뷰
- index.tsx: PopComponentRegistry 등록 (category: display, touchOptimized)
[모달 캔버스 시스템] PopDesigner.tsx 대규모 리팩토링
- handleMoveComponent/handleResizeComponent/handleRequestResize:
  layout 직접 참조 → setLayout(prev => ...) 함수형 업데이트로 전환
  + activeCanvasId 분기: main이면 기존 로직, modal-*이면 modals 배열 내 해당 모달 수정
- PopCardListV2Config: 모달 캔버스 생성/열기 버튼 (usePopDesignerContext 연동)
- PopCardListV2Component: modal-* screenId → setSharedData + __pop_modal_open__ 이벤트
- PopViewerWithModals: parentRow prop + fullscreen 모달 지원 + flex 레이아웃
[기타]
- ComponentPalette: pop-work-detail 팔레트 항목 + ClipboardCheck 아이콘
- pop-layout.ts: PopComponentType에 pop-work-detail 추가, 기본 크기 38x26
- PopRenderer: COMPONENT_TYPE_LABELS에 pop-work-detail 추가
- types.ts: PopWorkDetailConfig 인터페이스
- PopCanvas.tsx: activeLayout.components 참조 수정 (모달 캔버스 호환)
DB 변경 0건. 백엔드 변경 0건.
2026-03-16 10:32:58 +09:00
kjs 79e3420ff3 refactor: update production controller to use AuthenticatedRequest
- Modified the production controller to replace the generic Request type with AuthenticatedRequest for better type safety and to ensure user authentication is handled correctly.
- This change enhances the security and clarity of the API endpoints related to production plan management, ensuring that user-specific data is accessed appropriately.

Made-with: Cursor
2026-03-16 09:35:23 +09:00
kjs ba39ebf341 Merge branch 'mhkim-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-16 09:28:46 +09:00
kjs 17a5d2ff9b feat: implement production plan management functionality
- Added production plan management routes and controller to handle various operations including order summary retrieval, stock shortage checks, and CRUD operations for production plans.
- Introduced service layer for production plan management, encapsulating business logic for handling production-related data.
- Created API client for production plan management, enabling frontend interaction with the new backend endpoints.
- Enhanced button actions to support API calls for production scheduling and management tasks.

These changes aim to improve the management of production plans, enhancing usability and functionality within the ERP system.

Made-with: Cursor
2026-03-16 09:28:22 +09:00
kmh 8c12caf936 chore: update .gitignore and remove unused images
- Added support for ignoring PNG files in .gitignore to streamline file management.
- Deleted unused image files from the .playwright-mcp directory to reduce clutter and improve project organization.
- Enhanced column visibility handling in TableListComponent to include width adjustments and localStorage synchronization for better user experience.

Made-with: Cursor
2026-03-16 09:26:04 +09:00
DDD1542 c3a43179e3 refactor: update color schemes and improve component styling
- Changed color schemes for various screen types and roles to align with the new design guidelines, enhancing visual consistency across the application.
- Updated background colors for components based on their types, such as changing 'bg-slate-400' to 'bg-muted-foreground' and adjusting other color mappings for better clarity.
- Improved the styling of the ScreenNode and V2PropertiesPanel components to ensure a more cohesive user experience.
- Enhanced the DynamicComponentRenderer to support dynamic loading of column metadata with cache invalidation for better performance.

These changes aim to refine the UI and improve the overall aesthetic of the application, ensuring a more modern and user-friendly interface.
2026-03-15 15:15:44 +09:00
kjs 28b7f196e0 docs: add production plan management screen implementation guide
- Introduced a comprehensive implementation guide for the production plan management screen, detailing the overall structure, table mappings, and V2 component capabilities.
- Included specific information on the main tables used, their columns, and how they relate to the screen's functionality.
- Provided an analysis of existing V2 components that can be utilized, along with those that require further development or customization.
- This guide aims to facilitate the development process and ensure adherence to established standards for screen implementation.

Made-with: Cursor
2026-03-13 17:22:27 +09:00
SeongHyun Kim ed0f3393f6 Merge branch 'ksh-v2-work' into ksh-partial-quantity-flow
ksh-v2-work의 최신 변경사항을 동기화한다.
주요 병합 내용:
- GRID-V6 정사각형 블록 그리드 시스템 (842ac27d)
- POP 그리드 시스템 명칭 통일 + Dead Code 제거 (320100c4)
- 다수 PC 화면 config-panel 리팩토링 (jskim/mhkim/gbpark)
- V2 컴포넌트 config-panel 신규 18종
- 감사 로그 기능 강화
충돌 해결: 0건 (자동 병합 완료)
2026-03-13 16:58:58 +09:00
SeongHyun Kim 320100c4e2 refactor: POP 그리드 시스템 명칭 통일 + Dead Code 제거
V5→V6 전환 과정에서 누적된 버전 접미사, 미사용 함수, 레거시 잔재를
정리하여 코드 관리성을 확보한다. 14개 파일 수정, 365줄 순감.
[타입 리네이밍] (14개 파일)
- PopLayoutDataV5 → PopLayoutData
- PopComponentDefinitionV5 → PopComponentDefinition
- PopGlobalSettingsV5 → PopGlobalSettings
- PopModeOverrideV5 → PopModeOverride
- createEmptyPopLayoutV5 → createEmptyLayout
- isV5Layout → isPopLayout
- addComponentToV5Layout → addComponentToLayout
- createComponentDefinitionV5 → createComponentDefinition
- 구 이름은 deprecated 별칭으로 유지 (하위 호환)
[Dead Code 삭제] (gridUtils.ts -350줄)
- getAdjustedBreakpoint, convertPositionToMode, isOutOfBounds,
  mouseToGridPosition, gridToPixelPosition, isValidPosition,
  clampPosition, autoLayoutComponents (전부 외부 사용 0건)
- needsReview + ReviewPanel/ReviewItem (항상 false, 미사용)
- getEffectiveComponentPosition export → 내부 함수로 전환
[레거시 로더 분리] (신규 legacyLoader.ts)
- convertV5LayoutToV6 → loadLegacyLayout (legacyLoader.ts)
- V5 변환 상수/함수를 gridUtils에서 분리
[주석 정리]
- "v5 그리드" → "POP 블록 그리드"
- "하위 호환용" → "뷰포트 프리셋" / "레이아웃 설정용"
- 파일 헤더, 섹션 구분, 함수 JSDoc 정리
기능 변경 0건. DB 변경 0건. 백엔드 변경 0건.
2026-03-13 16:39:51 +09:00
SeongHyun Kim 842ac27d60 feat: V6 정사각형 블록 그리드 시스템 실험 구현
고정 칸 수(4/6/8/12) 기반의 V5 그리드를 24px 정사각형 블록 기반의
동적 칸 수 시스템으로 교체한다. 뷰포트 너비에 따라 블록 수가 자동
계산되며(375px=13칸, 1024px=38칸), 작은 화면에서는 행 그룹 리플로우
(CSS Flexbox wrap 원리)로 자동 재배치된다.
[그리드 코어]
- pop-layout.ts: BLOCK_SIZE=24, BLOCK_GAP=2, BLOCK_PADDING=8,
  getBlockColumns() 동적 칸 수 계산, GRID_BREAKPOINTS V6 값
- gridUtils.ts: 행 그룹 리플로우(방식 F) - 같은 행 묶음 처리,
  최소 2x2칸 터치 보장, 메인 컨텐츠 전체 너비 확장
- PopRenderer.tsx: repeat(N, 1fr) 블록 렌더링, 동적 칸 수
- PopCanvas.tsx: 뷰포트 프리셋 동적 칸 수, 블록 좌표 변환
[V5→V6 런타임 변환]
- convertV5LayoutToV6: DB 미수정, 로드 시 메모리 변환
  12칸 좌표 → 38칸 블록 변환, V5 overrides 제거
- PopDesigner/page.tsx: 로드 지점에 변환 함수 삽입
[충돌 해결]
- ComponentEditorPanel: 높이 표시/모드 라벨 V6 수치
- PopCardListConfig: 카드 추천 threshold V6 기준
- PopDesigner: handleHideComponent 기본 모드 제한 해제
[기본 사이즈]
- 소형(2x2): 아이콘, 프로필, 스캐너
- 중형(8x4): 검색, 버튼, 텍스트
- 대형(19x6~10): 카드, 대시보드, 필드
DB 변경 0건, 백엔드 변경 0건, 컴포넌트 코드 변경 0건.
2026-03-13 16:03:24 +09:00
kjs 7a65ab0f85 docs: update full-screen analysis and V2 component usage guide
- Revised the full-screen analysis document to reflect the latest updates, including the purpose and core rules for screen development.
- Expanded the V2 component usage guide to include a comprehensive catalog of components, their configurations, and usage guidelines for LLM and chatbot applications.
- Added a summary of the system architecture and clarified the implementation methods for user business screens and admin menus.
- Enhanced the documentation to serve as a reference for AI agents and screen designers, ensuring adherence to the established guidelines.

These updates aim to improve clarity and usability for developers and designers working with the WACE ERP screen composition system.

Made-with: Cursor
2026-03-13 15:02:06 +09:00
kmh 5e8572954a chore: update .gitignore and remove unused images
- Added support for ignoring PNG files in .gitignore to streamline file management.
- Deleted unused image files from the .playwright-mcp directory to reduce clutter and improve project organization.
- Enhanced column visibility handling in TableListComponent to include width adjustments and localStorage synchronization for better user experience.

Made-with: Cursor
2026-03-13 14:57:07 +09:00
SeongHyun Kim c4d7b16538 fix: LOCK-OWNER 카드 비활성화 UI 누락분 반영
a2c532c7 커밋에서 누락된 CardV2 잠금 UI를 반영한다.
- locked 계산: ownerSortColumn 값이 존재하고 현재 사용자와 불일치 시 true
- isLockedByOther prop을 CardV2에 전달
- 잠금 카드: opacity-50, cursor-not-allowed, onClick/onKeyDown 차단, tabIndex=-1
2026-03-13 14:23:26 +09:00
kjs 429f1ba6ee feat: add item list mode configuration and screen code handling
- Introduced `itemListMode` to the process work standard configuration, allowing users to select between displaying all items or only registered items.
- Added `screenCode` to automatically set the screen ID when in registered mode.
- Updated the `ProcessWorkStandardComponent` to handle the new configuration and adjust item fetching logic accordingly.
- Enhanced the `ProcessWorkStandardConfigPanel` to include a select input for item list mode, improving user experience and configurability.

These changes aim to enhance the flexibility and usability of the process work standard component.

Made-with: Cursor
2026-03-13 14:01:09 +09:00
kmh bd08b341f0 Merge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into mhkim-node 2026-03-13 11:35:07 +09:00
kmh 4fe023a813 feat: enhance column width configuration and rendering
- Updated the column width handling in various components to support percentage-based widths, improving layout flexibility.
- Adjusted input fields to enforce minimum and maximum width constraints, ensuring better user experience and preventing layout issues.
- Enhanced the SortableColumnRow and related components to dynamically display width units, allowing for clearer configuration options.

Made-with: Cursor
2026-03-13 11:29:32 +09:00
kjs 3df9a39ebe feat: implement registered items management in process work standard
- Added new endpoints for managing registered items, including retrieval, registration, and batch registration.
- Enhanced the existing processWorkStandardController to support filtering and additional columns in item queries.
- Updated the processWorkStandardRoutes to include routes for registered items management.
- Introduced a new documentation file detailing the design and structure of the POP 작업진행 관리 system.

These changes aim to improve the management of registered items within the process work standard, enhancing usability and functionality.

Made-with: Cursor
2026-03-13 11:26:59 +09:00
SeongHyun Kim a2c532c7c7 feat: 낙관적 잠금 + 소유자 기반 액션 제어 + 디자이너 설정 UI
동시 접수 충돌 방지(preCondition WHERE + 409 에러), 소유자 일치 시에만
버튼 활성화(owner-match showCondition), 본인 카드 우선 정렬(ownerSortColumn)을
구현하고 디자이너에서 설정할 수 있는 UI 3종을 추가한다.
[백엔드]
- popActionRoutes: TaskBody에 preCondition 추가, data-update WHERE 조건 삽입,
  rowCount=0 시 409 Conflict 반환 (isPreConditionFail)
[프론트엔드 - 런타임]
- types.ts: ActionPreCondition 인터페이스, owner-match 타입, ownerSortColumn 필드
- cell-renderers: evaluateShowCondition에 owner-match 분기 + currentUserId prop
- PopCardListV2Component: useAuth 연동, preCondition 전달/409 처리,
  ownerSortColumn 기반 카드 정렬, currentUserId 하위 전달
[프론트엔드 - 디자이너 설정 UI]
- PopCardListV2Config: showCondition 드롭다운에 "소유자 일치" 옵션 + 컬럼 선택,
  ImmediateActionEditor에 "사전 조건(중복 방지)" 토글 + 검증 컬럼/기대값/실패 메시지,
  TabActions에 "소유자 우선 정렬" 컬럼 드롭다운
2026-03-12 18:26:47 +09:00
syc0123 1a11b08487 feat: implement real-time numbering preview with manual input handling
- Enhanced the `previewCode` endpoint to accept a new `manualInputValue` parameter, allowing for dynamic sequence generation based on user input.
- Updated the `NumberingRuleService` to skip legacy sequence lookups when manual input is not provided, ensuring accurate initial sequence display.
- Integrated debounce functionality in the `V2Input` component to optimize API calls for real-time suffix updates as users type.
- Refactored category resolution logic into a helper function to reduce code duplication and improve maintainability.

These changes significantly improve the user experience by providing immediate feedback on numbering sequences based on manual inputs.
2026-03-12 16:07:13 +09:00
kjs 4c95e883ce Merge commit '80be7c5a7600c080f897823837890fbdef58f565' into jskim-node
Made-with: Cursor

# Conflicts:
#	.cursor/agents/pipeline-common-rules.md
#	.cursor/agents/pipeline-frontend.md
#	.cursor/agents/pipeline-ui.md
2026-03-12 15:53:20 +09:00
kjs ca390bb191 Merge branch 'gbpark-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-12 15:09:55 +09:00
DDD1542 80be7c5a76 feat: enhance component configuration and rendering
- Updated the RealtimePreviewDynamic component to display selected component information more clearly.
- Added dynamic field type labels in the RealtimePreviewDynamic component for better user understanding.
- Introduced a table refresh counter in the ScreenDesigner component to handle table column updates effectively.
- Improved the V2PropertiesPanel and V2SelectConfigPanel to support additional properties and enhance usability.
- Refactored the DynamicComponentRenderer to better handle field types and improve component configuration merging.

Made-with: Cursor
2026-03-12 15:01:05 +09:00
kjs dc37ad4471 Merge branch 'mhkim-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-12 14:31:31 +09:00
kjs cada8cd4b0 Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-12 14:23:34 +09:00
kjs df47c27b77 feat: enhance ResponsiveGridRenderer with row margin calculations
- Added rowMinY and rowMaxBottom properties to ProcessedRow for improved layout calculations.
- Implemented dynamic margin adjustments between rows in the ResponsiveGridRenderer to enhance visual spacing.
- Refactored TabsWidget to streamline the ResponsiveGridRenderer integration, removing unnecessary wrapper divs for cleaner structure.
- Introduced ScaledCustomPanel for better handling of component rendering in split panel layouts.

Made-with: Cursor
2026-03-12 14:19:48 +09:00
kmh 62513ad2f0 feat: enhance responsive grid rendering and filter width management
- Introduced a new ProportionalRenderer component to improve the layout of components in the ResponsiveGridRenderer based on the canvas width.
- Implemented dynamic resizing of components using ResizeObserver to ensure proper rendering across different screen sizes.
- Updated filter width handling in FilterPanel and TableSettingsModal to restrict width values between 10% and 100%, enhancing usability and consistency.
- Adjusted the TableSearchWidget to reflect the new percentage-based width for filters, improving the overall layout and responsiveness.

These changes aim to enhance the user experience by providing a more flexible and responsive design for grid layouts and filter components.
2026-03-12 13:27:01 +09:00
kjs 966191786a feat: add nested panel selection support in dynamic components
- Introduced a new callback `onNestedPanelSelect` to handle selections of components within nested split panels.
- Updated the `RealtimePreviewDynamic`, `DynamicComponentRenderer`, and `TabsDesignEditor` components to support the new nested selection functionality.
- Enhanced the layout management logic in `ScreenDesigner` to accommodate updates for nested structures, improving the overall user experience when interacting with nested components.

Made-with: Cursor
2026-03-12 11:01:18 +09:00
kjs f65b57410c feat: add createAuditLog endpoint and integrate audit logging for screen copy operations
- Implemented a new endpoint for creating audit logs directly from the frontend, allowing for detailed tracking of actions related to screen copying.
- Enhanced the existing screen management functionality by removing redundant audit logging within the copy operations and centralizing it through the new createAuditLog endpoint.
- Updated the frontend to log group copy actions, capturing relevant details such as resource type, resource ID, and changes made during the operation.

Made-with: Cursor
2026-03-12 10:41:57 +09:00
DDD1542 45740c1457 feat: add responsive tests for Option Settings and Split Panel
- Implemented responsive testing scripts for Option Settings and ResponsiveSplitPanel components.
- Added tests to verify layout behavior across various screen sizes (desktop, tablet, mobile).
- Generated screenshots and reports for visual validation of responsive designs.

Made-with: Cursor
2026-03-12 10:04:26 +09:00
kjs 014979bebf feat: enhance split panel and tab component interactions
- Improved the drop handling logic for split panels and tabs, prioritizing the innermost container during drag-and-drop operations.
- Added internal state management for selected components within split panels to enhance user experience.
- Updated the rendering logic to ensure proper data attributes are set for design mode, facilitating better component identification.
- Enhanced the dynamic component rendering to support updates and selections for nested components within tabs and split panels.

Made-with: Cursor
2026-03-12 09:49:17 +09:00
SeongHyun Kim 55063367ea Merge branch 'ksh-v2-work' into main
ksh-v2-work의 POP 화면 디자이너 기능을 main에 병합한다.
[병합 내용]
- pop-card-list-v2: 슬롯 기반 CSS Grid 카드 컴포넌트 (12종 셀 타입)
- pop-status-bar: 독립 상태 칩 컴포넌트 (카운트 순환 문제 해결)
- pop-scanner: 바코드/QR 스캐너 + 멀티필드 파싱
- pop-profile: 사용자 프로필/PC전환/로그아웃 컴포넌트
- pop-button: 설정 패널 UX 전면 개선 + 제어 실행 기능
- pop-search: 날짜 입력 타입 + 연결 탭 일관성 통합
- POP 모드 네비게이션: PC <-> POP 양방향 전환 + 로그인 POP 모드 토글
- 타임라인 범용화 + 상태 값 매핑 동적 배열 전환
- 다중 액션 체이닝 + 외부 테이블 선택 + 카드 클릭 모달
[충돌 해결 4건]
- authController.ts: 양쪽 통합 (스마트공장 로그 + POP 랜딩 경로)
- AppLayout.tsx: 양쪽 통합 (메뉴 드래그 + POP 모드 메뉴, 리디자인 UI + POP 모드 항목)
- ConnectionEditor.tsx: ksh-v2-work 선택 (하위 테이블 필터 구조) + CSS 변수 적용
- pop-button.tsx: ksh-v2-work 선택 (자연어 UX + 제어 실행) + CSS 변수 스타일 유지
2026-03-12 09:00:52 +09:00
kmh cc61ef3ff4 feat: enhance category mapping and label resolution in split panel layouts
- Added functionality to resolve unresolved category labels after data loading in SplitPanelLayout2Component.
- Implemented batch API calls to fetch missing category labels based on unresolved codes.
- Improved category mapping logic in SplitPanelLayoutComponent to handle join tables and provide fallback mappings.
- Enhanced the user experience by ensuring that category labels are correctly displayed even when they are initially unresolved.

These changes aim to improve the robustness of category handling across the split panel components.
2026-03-12 07:54:12 +09:00
kmh 20c85569b0 fix: update filter handling in data filtering logic
- Refactored the handling of "in" and "not_in" operators to ensure proper array handling and prevent errors when values are not provided.
- Enhanced the InteractiveDataTable component to re-fetch data when filters are applied, improving user experience.
- Updated DataFilterConfigPanel to correctly manage filter values based on selected operators.
- Adjusted SplitPanelLayoutComponent to apply client-side data filtering based on defined conditions.

These changes aim to improve the robustness and usability of the data filtering features across the application.
2026-03-12 07:02:22 +09:00
DDD1542 5093863e08 [agent-pipeline] pipe-20260311204151-c4wy round-2 2026-03-12 06:00:48 +09:00
DDD1542 08ed6b0b53 [agent-pipeline] pipe-20260311204151-c4wy round-1 2026-03-12 05:51:39 +09:00
kjs b1e50f2e0a feat: enhance audit logging and add company name to audit entries
- Integrated detailed audit logging for update and delete actions in the CommonCodeController and DDLController.
- Added company name retrieval to the audit log entries for better traceability.
- Updated the audit log service to include company name in the log entries.
- Modified the frontend audit log page to display company names alongside company codes for improved clarity.

Made-with: Cursor
2026-03-12 05:14:27 +09:00
DDD1542 5eb794177e [agent-pipeline] pipe-20260311155325-udmh round-5 2026-03-12 01:40:47 +09:00
DDD1542 a3ebed48d0 [agent-pipeline] rollback to 0277b6ba 2026-03-12 01:29:07 +09:00
DDD1542 950518431a [agent-pipeline] pipe-20260311155325-udmh round-4 2026-03-12 01:29:07 +09:00
kmh 9ef7652946 Merge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into mhkim-node 2026-03-12 01:18:18 +09:00
kjs 09c3fa4708 feat: implement packaging unit and item management APIs
- Added CRUD operations for packaging units and their associated items in the new `packagingController.ts`.
- Implemented routes for managing packaging units and items in `packagingRoutes.ts`.
- Enhanced error handling and logging for better traceability.
- Ensured company code filtering for data access based on user roles.

Made-with: Cursor
2026-03-12 01:18:09 +09:00
DDD1542 0277b6ba69 [agent-pipeline] pipe-20260311155325-udmh round-3 2026-03-12 01:17:51 +09:00
DDD1542 e1508e9087 [agent-pipeline] pipe-20260311155325-udmh round-2 2026-03-12 01:06:01 +09:00
kmh 31ecf900ce Resolve merge conflicts in v2-rack-structure
Made-with: Cursor
2026-03-12 01:04:32 +09:00
DDD1542 52a73e8cda [agent-pipeline] pipe-20260311155325-udmh round-1 2026-03-12 01:00:03 +09:00
DDD1542 d6c7900e00 [agent-pipeline] pipe-20260311151253-nyk7 round-10 2026-03-12 00:49:11 +09:00
DDD1542 33e8f6e8f1 [agent-pipeline] pipe-20260311151253-nyk7 round-9 2026-03-12 00:45:49 +09:00
DDD1542 fcae946a3f [agent-pipeline] pipe-20260311151253-nyk7 round-8 2026-03-12 00:41:59 +09:00
DDD1542 baa1d40bc4 [agent-pipeline] pipe-20260311151253-nyk7 round-7 2026-03-12 00:37:17 +09:00
DDD1542 b4aec05512 [agent-pipeline] pipe-20260311151253-nyk7 round-6 2026-03-12 00:34:36 +09:00
DDD1542 2feab9cde8 [agent-pipeline] pipe-20260311151253-nyk7 round-5 2026-03-12 00:31:29 +09:00
DDD1542 460776b48e [agent-pipeline] pipe-20260311151253-nyk7 round-4 2026-03-12 00:27:35 +09:00
DDD1542 08402bf730 [agent-pipeline] pipe-20260311151253-nyk7 round-3 2026-03-12 00:24:05 +09:00
DDD1542 5eb10fd9a9 [agent-pipeline] pipe-20260311151253-nyk7 round-2 2026-03-12 00:19:59 +09:00
DDD1542 0bb024ca05 [agent-pipeline] pipe-20260311151253-nyk7 round-1 2026-03-12 00:16:20 +09:00
kjs 41d58cbb62 feat: implement smart factory log transmission and enhance rack structure patterns
- Added a new utility function `sendSmartFactoryLog` to transmit user access logs to the smart factory logging service upon successful login, ensuring non-blocking behavior.
- Integrated the smart factory log transmission into the `AuthController` to log user access asynchronously.
- Introduced pattern utilities for generating location codes and names based on configurable patterns in the rack structure components, improving flexibility and maintainability.
- Enhanced the `RackStructureConfigPanel` to allow users to define custom patterns for location codes and names, with real-time previews and a list of available variables.

Made-with: Cursor
2026-03-11 18:34:58 +09:00
SeongHyun Kim e1188027ed feat(pop): 다중 액션 체이닝 + 외부 테이블 선택 + 카드 클릭 모달 + 필터 전 비표시
버튼 규칙 하나에 여러 액션을 순차 실행하는 다중 액션 체이닝,
DB 직접 선택으로 외부 테이블에 값을 변경하는 기능,
카드 클릭 시 조건부 모달 열기, 필터 전 데이터 비표시 옵션을 추가한다.
[다중 액션 체이닝]
- types.ts: ActionButtonDef.clickActions 배열 추가 (하위호환 유지)
- PopCardListV2Config: 액션 목록 UI (추가/삭제/순서)
- cell-renderers: __allActions 배열로 config 전달
- PopCardListV2Component: actionsToRun 순차 실행, 실패 시 스킵
[외부 테이블 선택]
- ActionButtonClickAction.joinConfig (sourceColumn, targetColumn) 추가
- ImmediateActionEditor: "DB에서 직접 선택..." 옵션 + 조인키 설정 UI
- DbTableCombobox: 테이블명(영어)+설명(한글) 검색 가능
- Component: joinConfig 기반 lookupValue/lookupColumn 처리
[카드 클릭 모달]
- types.ts: V2CardClickAction에 "modal-open", V2CardClickModalConfig 추가
- PopCardListV2Config: 동작 탭에 모달 설정 (화면 ID, 조건, 제목)
- PopCardListV2Component: handleCardSelect 조건 체크 후 openPopModal
[필터 전 데이터 비표시]
- PopCardListV2Config.hideUntilFiltered Switch
- Component: externalFilters 없을 때 안내 메시지
[버그 수정]
- availableTableOptions: dataSource.table -> dataSource.tableName 수정
- popActionRoutes: INSERT 시 created_date/updated_date/writer 자동 추가,
  UPDATE 시 updated_date 자동 갱신
[액션 버튼 구조 개선]
- evaluateShowCondition: 버튼별 조건 평가 (visible/disabled/hidden)
- ActionButtonsEditor: 아코디언 UI + sessionStorage 상태 유지
- 1셀 1버튼 렌더링: 조건 맞는 버튼 1개만 표시
2026-03-11 18:20:02 +09:00
kjs 62a5ae5f4b feat: enhance category value retrieval with company code filtering
- Updated the `getCategoryValues` function to allow filtering based on a specified company code when requested by a super admin.
- Modified the service layer to ensure that super admins can retrieve common category values while preventing data mixing from different companies.
- Adjusted the frontend component to include the filter parameter in API requests, ensuring that the correct company-specific categories are displayed.

Made-with: Cursor
2026-03-11 17:53:41 +09:00
kjs d890155354 feat: implement packaging routes and enhance table configuration UI
- Added a new `packagingRoutes.ts` file to manage packaging and loading information APIs, with authentication middleware applied.
- Enhanced the `TableListConfigPanel` and `ColumnsConfigPanel` components to include editable column locking functionality, allowing users to toggle editability with visual feedback.
- Improved user experience by providing clear indications of column editability status through lock/unlock icons.

Made-with: Cursor
2026-03-11 16:56:36 +09:00
SeongHyun Kim c7b8acbac3 refactor(pop): status-chip을 pop-status-bar 독립 컴포넌트로 분리 + 카운트 순환 문제 수정
pop-search에 내장되어 있던 status-chip 기능을 pop-status-bar라는
독립 컴포넌트로 분리하여 재사용성과 설정 유연성을 높인다.
상태 칩 클릭 시 카운트가 왜곡되던 순환 의존 문제를 해결한다.
[pop-status-bar 신규 컴포넌트]
- types.ts: StatusBarConfig, StatusChipOption, hiddenMessage 등 타입 정의
- PopStatusBarComponent: all_rows 구독 + 카운트 집계 + filter_value 발행
  _source: "status-bar" 마커로 자신의 필터를 식별
  hideUntilSubFilter: 하위 필터 선택 전 칩 숨김 + 설정 가능 안내 문구
- PopStatusBarConfig: 설정 패널 (DB 자동 채우기, 고유값 클릭 추가,
  숨김 문구 설정, 하위 필터 가상 컬럼 안내)
- index.tsx: 레지스트리 등록, connectionMeta(filter_value/all_rows/set_value)
[카운트 순환 문제 수정]
- PopCardListV2Component: externalFilters에 _source 필드 저장
  all_rows 발행 시 status-bar 소스 필터를 제외한 rowsForStatusCount 계산
  상태 칩 클릭해도 전체 카운트가 유지됨
[pop-search에서 status-chip 제거]
- PopSearchComponent: StatusChipInput, allRows 구독, autoSubStatusColumn 제거
- PopSearchConfig: StatusChipDetailSettings 제거, 분리 안내 메시지로 대체
- index.tsx: receivable에서 all_rows 제거
- types.ts: StatusChipStyle, StatusChipConfig에 @deprecated 주석 추가
[설정 UX 개선]
- "전체 칩 자동 추가" → "전체 보기 칩 표시" + 설명 문구 추가
- hiddenMessage: 숨김 상태 안내 문구 설정 가능 (하드코딩 제거)
- useSubCount 활성 시 가상 컬럼 안내 경고 표시
2026-03-11 16:35:49 +09:00
DDD1542 0eba11e047 [agent-pipeline] pipe-20260311064710-y8yf round-9 2026-03-11 16:04:46 +09:00
kmh 09d16e6672 Merge branch 'ycshin-node' of http://39.117.244.52:3000/kjs/ERP-node into mhkim-node 2026-03-11 15:54:11 +09:00
syc0123 65026f14e4 docs: Add documentation for category dropdown depth separation
- Introduced new documents detailing the implementation of visual separation for three-level category dropdowns.
- Updated the `flattenTree` function in both `V2Select.tsx` and `UnifiedSelect.tsx` to use Non-Breaking Space (`\u00A0`) for indentation, ensuring proper visual hierarchy.
- Included a checklist to track the implementation progress and verification of the changes.
- Documented the rationale behind the changes, including the issues with HTML whitespace collapsing and the decisions made to enhance user experience.

These updates aim to improve the clarity and usability of the category selection interface in the application.
2026-03-11 15:53:01 +09:00
DDD1542 f071777131 [agent-pipeline] pipe-20260311052455-y968 round-4 2026-03-11 14:50:02 +09:00
DDD1542 834c52a2b2 [agent-pipeline] pipe-20260311052455-y968 round-3 2026-03-11 14:46:07 +09:00
DDD1542 d358de60d6 [agent-pipeline] pipe-20260311052455-y968 round-2 2026-03-11 14:41:14 +09:00
DDD1542 b329b52036 [agent-pipeline] pipe-20260311052455-y968 round-1 2026-03-11 14:35:02 +09:00