Commit Graph

1487 Commits

Author SHA1 Message Date
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
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
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