Commit Graph

2195 Commits

Author SHA1 Message Date
SeongHyun Kim f6461ae563 feat(pop-string-list): 오버플로우 시스템 개편 - 더보기 점진 확장 + 페이지네이션 모드
- "전체보기" 토글을 "더보기" 점진 확장으로 변경 (loadMoreCount씩 추가, maxExpandRows 상한)
- 페이지네이션 모드 추가: bottom(하단 페이지 표시) / side(좌우 화살표) 스타일 선택
- StepOverflow 설정 UI에 오버플로우 방식 Select + 모드별 분기 설정 추가
- PopRenderer viewer 모드에서 gridTemplateRows minmax(auto) 적용으로 동적 높이 확장 지원

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 15:08:52 +09:00
SeongHyun Kim fc0e913b8a fix(pop-modal): 중첩 모달 닫기 시 모든 모달이 한꺼번에 닫히는 버그 수정
- handleCloseModal(index) -> handleCloseTopModal()로 변경 (최상위 1개만 닫기)
- onOpenChange에 isTopModal 가드 추가 (하위 모달 연쇄 반응 방지)
- onInteractOutside/onEscapeKeyDown에 isTopModal 가드 추가

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 14:03:55 +09:00
SeongHyun Kim df8cbb3e80 feat(pop): 액션 아키텍처 + 모달 시스템 구현 (STEP 0~7)
- executePopAction / usePopAction 훅 신규 생성
- pop-button을 usePopAction 기반으로 리팩토링
- PopModalDefinition 타입 + MODAL_SIZE_PRESETS 정의
- PopDesignerContext 신규 생성 (모달 탭 상태 공유)
- PopDesigner에 모달 탭 UI 추가 (메인 캔버스 / 모달 캔버스 전환)
- PopCanvas에 접이식 ModalSizeSettingsPanel + ModalThumbnailPreview 구현
- PopViewerWithModals 신규 생성 (뷰어 모달 렌더링 + 스택 관리)
- FULL 모달 전체화면 지원 (h-dvh, w-screen, rounded-none)
- pop-string-list 카드 버튼 액션 연동
- pop-icon / SelectedItemsDetailInput lucide import 최적화
- tsconfig skipLibCheck 설정 추가

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 13:54:49 +09:00
kjs 9cc93b88ff Merge branch 'feature/v2-renewal' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-02-23 10:53:55 +09:00
kjs bfdf061ead refactor: Clean up and enhance component structure in V2Media and ComponentsPanel
- Removed redundant comments and improved clarity in the `ComponentsPanel` for better maintainability.
- Refactored the `V2Media` component to streamline the file handling logic and ensure consistent state management.
- Merged default configurations in `UniversalFormModalConfigPanel` to enhance safety and prevent potential issues with incomplete configurations.
- Updated file upload handling in `FileManagerModal` to improve user experience and maintain consistent styling across components.
2026-02-23 10:53:10 +09:00
DDD1542 9614ce3973 feat: Enhance EditModal and V2Repeater functionality
- Implemented zone offset adjustments for conditional components in EditModal to ensure correct rendering positions.
- Added repeaterSave event dispatching in EditModal after saving data, improving integration with V2Repeater.
- Updated V2Repeater to handle existing detail data loading based on foreign key relationships, enhancing data management.
- Improved calculation rules handling in V2RepeaterConfigPanel, allowing for dynamic updates and better user experience.
- Enhanced SplitPanelLayoutComponent to conditionally load data based on selected items and tab changes, improving performance and usability.
2026-02-23 09:16:44 +09:00
DDD1542 5af41ad90b 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-02-22 20:54:59 +09:00
DDD1542 bfd90792f8 feat: Enhance ScreenModal and InteractiveScreenViewer with improved resolution handling
- Added detailed console logging in ScreenModal for debugging screen resolution, including final resolution and dimensions applied.
- Updated getModalStyle in ScreenModal to handle null screen dimensions gracefully, ensuring default styles are applied when necessary.
- Modified InteractiveScreenViewer's DialogContent to dynamically adjust width based on popupScreenResolution, improving responsiveness and user experience.
- Ensured maximum width constraints are respected in both components, enhancing layout consistency across different screen sizes.
2026-02-13 15:12:54 +09:00
kjs 5eab4669f0 feat: Update screen management service and UI components for main table handling
- Enhanced the `ScreenManagementService` to update the main table name in the database when saving layout data, improving data integrity and tracking.
- Modified the `ScreenDesigner` component to include the main table name in the save request, ensuring the correct table is referenced.
- Updated the `TablesPanel` to generate unique keys for join tables based on source columns, preventing key collisions and improving rendering performance.
- Refactored the `TabsWidget` to streamline screen information loading and removed redundant screen info loading logic, enhancing efficiency and user experience.
2026-02-13 14:25:12 +09:00
DDD1542 a466e523d9 refactor: Remove password masking functionality from data services
- Deleted the `maskPasswordColumns` function from `dataService.ts` and its usage in data responses, simplifying the data handling process.
- Removed password handling logic from `DynamicFormService`, ensuring that password management is streamlined and centralized.
- Updated related components to reflect the removal of password masking, improving code clarity and maintainability.
2026-02-13 11:51:59 +09:00
SeongHyun Kim 51e1392640 feat(pop-string-list): 컬럼 관리 개선 및 런타임 컬럼 전환 구현
[Config 패널]
- STEP 6 리스트 레이아웃에 컬럼 추가/삭제 기능 추가
- 메인 + 조인 컬럼을 전환 후보로 확장 (기존: 조인만)
- 독립 헤더로 추가된 컬럼은 전환 후보에서 자동 제외
- STEP 3 체크 변경 시 STEP 6 순서/조인컬럼/alternateColumns 보존
- STEP 4 조인 삭제 시 listColumns/alternateColumns에서 고아 참조 자동 정리

[런타임 컴포넌트]
- 리스트 헤더에 alternateColumns 전환 UI 추가 (Popover 드롭다운)
- 조인 컬럼명 resolveColumnName 유틸 추가 ("테이블.컬럼" -> "컬럼")
- 카드 모드 텍스트 잘림 수정 (gridTemplateRows: minmax 적용)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 11:27:40 +09:00
kjs 97165ab007 Merge branch 'feature/v2-renewal' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-02-13 09:59:07 +09:00
kjs f35ba75966 feat: Enhance dynamic form service and tabs widget functionality
- Added error handling in DynamicFormService to throw an error when a record is not found during deletion, improving robustness.
- Updated TabsWidget to load screen information in parallel with layout data, enhancing performance and user experience.
- Implemented logic to supplement missing screen information for tabs, ensuring all relevant data is available for rendering.
- Enhanced component rendering functions to pass additional screen information, improving data flow and interaction within the widget.
2026-02-13 09:58:36 +09:00
SeongHyun Kim 6842a00890 feat(pop-string-list): 리스트 목록 컴포넌트 MVP 구현
테이블 데이터를 리스트/카드 두 가지 모드로 표시하는 pop-string-list 컴포넌트 전체 구현

- 6단계 Stepper 설정 패널 (모드 선택, 헤더/오버플로우, 데이터+컬럼 선택, 조인 설정, 카드/리스트 레이아웃, 필터/정렬)
- 카드 모드: 시각적 그리드 편집기 (드래그 너비/높이 조절, 셀 병합, 셀별 컬럼/스타일 설정)
- 리스트 모드: 드래그앤드롭 컬럼 순서 변경, 너비 조절, 런타임 컬럼 전환 설정
- 조인 설정: Combobox 테이블 검색, 자동 연결 가능 컬럼 발견, 타입 기반 필터링, 가져올 컬럼 선택
- CardColumnJoin에 selectedTargetColumns 필드 추가
- 디자이너 팔레트/에디터/렌더러에 pop-string-list 등록

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 09:03:52 +09:00
DDD1542 95f668d40d 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-02-12 16:33:00 +09:00
DDD1542 b1ec674fa9 feat: Implement password masking and encryption in data services
- Added a new function `maskPasswordColumns` to mask password fields in data responses, ensuring sensitive information is not exposed.
- Integrated password handling in `DynamicFormService` to encrypt new passwords and maintain existing ones when empty values are provided.
- Enhanced logging for better tracking of password field updates and masking failures, improving overall security and debugging capabilities.
2026-02-12 16:32:23 +09:00
DDD1542 df04afa5de feat: Refactor EditModal for improved INSERT/UPDATE handling
- Introduced a new state flag `isCreateModeFlag` to determine the mode (INSERT or UPDATE) directly from the event, enhancing clarity in the modal's behavior.
- Updated the logic for initializing `originalData` and determining the mode, ensuring that the modal correctly identifies whether to create or update based on the provided data.
- Refactored the update logic to send the entire `formData` without relying on `originalData`, streamlining the update process.
- Enhanced logging for better debugging and understanding of the modal's state during operations.
2026-02-12 16:20:26 +09:00
kjs d0ebb82f90 fix: Improve number and slider input handling in V2Input and SplitPanelLayoutComponent
- Enhanced V2Input to convert string values from the database to numbers for number and slider inputs, ensuring correct display and functionality.
- Updated primary key retrieval logic in SplitPanelLayoutComponent to prioritize actual DB id values, improving data integrity.
- Simplified primary key handling by removing unnecessary checks and ensuring consistent usage of id fields.
- Improved user feedback in the SplitPanelLayoutComponent with clearer console logs for save operations and item selections.
2026-02-12 16:07:36 +09:00
kjs 505930b3ec feat: Implement custom right panel save functionality in SplitPanelLayoutComponent
- Added a new save handler for the custom right panel, allowing users to save inline edit data.
- Implemented validation checks to ensure data integrity before saving, including checks for selected items and primary keys.
- Enhanced user feedback with toast notifications for success and error states during the save process.
- Integrated company_code automatically into the saved data to maintain multi-tenancy compliance.
- Updated the UI to include a save button in the custom mode, improving user interaction and data management.
2026-02-12 15:03:56 +09:00
kjs fb02e5b389 feat: Enhance SplitPanelLayout with modal support for add and edit buttons
- Implemented modal configuration for add and edit buttons in the SplitPanelLayoutComponent, allowing for custom modal screens based on user interactions.
- Added settings for button visibility and modes (auto or modal) in the SplitPanelLayoutConfigPanel, improving flexibility in UI configuration.
- Enhanced data handling by storing selected left panel items in modalDataStore for use in modal screens, ensuring seamless data flow.
- Updated types to include new properties for add and edit button configurations, facilitating better type safety and clarity in component usage.
2026-02-12 14:54:14 +09:00
SeongHyun Kim 84426b82cf feat(pop-button): pop-button 컴포넌트 MVP 구현
- PopButtonComponent: 5가지 액션 타입(save/delete/api/modal/event) + 후속 액션 체이닝
- PopButtonConfigPanel: 프리셋 기반 설정(save/delete/logout/menu/modal-open/custom)
- 확인 다이얼로그(ConfirmConfig) 선택 기능
- usePopEvent/useDataSource 훅 연동
- PopComponentType에 pop-button 추가, 팔레트 등록

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 14:23:44 +09:00
kjs 5d391f0cee Merge branch 'feature/v2-renewal' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-02-12 14:19:31 +09:00
kjs 70cb50e446 feat: Update SplitPanelLayoutComponent to manage custom left selected data
- Initialized custom left selected data to an empty object when deselecting an item, ensuring a clean state for the right form.
- Passed the selected item to the custom left selected data when an item is selected, improving data handling in custom mode.
- Enhanced overall data management within the SplitPanelLayoutComponent for better user experience.
2026-02-12 14:18:46 +09:00
DDD1542 4294e6206b feat: Add express-async-errors for improved error handling
- Integrated express-async-errors to automatically handle errors in async route handlers, enhancing the overall error management in the application.
- Updated app.ts to include the express-async-errors import for global error handling.
- Removed redundant logging statements in admin and user menu retrieval functions to streamline the code and improve readability.
- Adjusted logging levels from info to debug for less critical logs, ensuring that important information is logged appropriately without cluttering the logs.
2026-02-12 11:42:52 +09:00
kjs 4473743d5f Merge branch 'feature/v2-renewal' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-02-12 11:42:39 +09:00
kjs 14d6406a61 feat: Improve selected rows data management in TabsWidget and SplitPanelLayoutComponent
- Refactored TabsWidget to manage local selected rows data, enhancing responsiveness to user interactions.
- Introduced a new callback for handling selected rows changes, ensuring updates are reflected in both local and parent states.
- Updated SplitPanelLayoutComponent to share selected rows data between tabs and buttons, improving data consistency across components.
- Enhanced overall user experience by ensuring immediate recognition of selection changes within the tabbed interface.
2026-02-12 11:42:32 +09:00
shin 6b8d437a22 feat(pop-card-list): PopCardList 컴포넌트 추가
- PopCardListComponent: 카드 리스트 렌더링 컴포넌트 구현
- PopCardListConfig: 카드 리스트 설정 패널 구현
- types.ts: PopCardListProps 타입 정의 추가
- ComponentPalette: 카드 리스트 컴포넌트 팔레트에 등록
- pop-layout.ts: cardList 타입 추가

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 11:09:02 +09:00
kjs 5c6efa861d feat: Add support for selected rows data handling in TabsWidget
- Introduced new props for managing selected rows data, enabling better interaction with tab components.
- Added `selectedRowsData` and `onSelectedRowsChange` callbacks to facilitate row selection and updates.
- Enhanced the TabsWidget functionality to improve user experience when interacting with tabbed content.
2026-02-12 10:30:37 +09:00
SeongHyun Kim 8c08e7f8e9 fix(pop-dashboard): 집계 함수 설정 유효성 검증 강화 - 문자열 컬럼에 SUM 적용 방지
팀원 pull 후 대시보드 500 에러 발생 원인 해결:
- subType별 허용 집계 함수 제한 (stat-card는 COUNT만)
- SUM/AVG 선택 시 숫자 타입 컬럼만 표시
- 비호환 집계 함수 선택 시 컬럼 자동 초기화
- subType 변경 시 비호환 aggregation 자동 전환 (STEP 7.5)
- chart 모드 groupBy 미설정 경고 추가

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 09:19:17 +09:00
kjs 56d069f853 feat: Enhance master-detail Excel upload functionality with detail update tracking
- Added support for tracking updated detail records during the Excel upload process, improving feedback to users on the number of records inserted and updated.
- Updated response messages to provide clearer information about the processing results, including the number of newly inserted and updated detail records.
- Refactored related components to ensure consistency in handling detail updates and improve overall user experience during uploads.
2026-02-11 18:29:36 +09:00
DDD1542 0512a3214c Merge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into gbpark-node 2026-02-11 18:05:32 +09:00
DDD1542 4e12f93da4 feat: Enhance SplitPanelLayoutComponent with delete modal improvements
- Added a new state to manage the table name for the delete modal, allowing for more specific deletion handling based on the context of the item being deleted.
- Updated the delete button handler to accept an optional table name parameter, improving the flexibility of the delete functionality.
- Enhanced the delete confirmation logic to prioritize the specified table name when available, ensuring accurate deletion operations.
- Refactored related logic to maintain clarity and improve the overall user experience during item deletion in the split panel layout.
2026-02-11 17:45:43 +09:00
DDD1542 c551e82eee 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-02-11 17:45:26 +09:00
SeongHyun Kim 300542d922 feat(pop): usePopEvent, useDataSource 공통 훅 구현
- usePopEvent: screenId 기반 이벤트 버스 (publish/subscribe/sharedData)
- useDataSource: DataSourceConfig 기반 데이터 CRUD 통합 훅
  - 집계/조인 → SQL 빌더 경로 (대시보드 로직 재사용)
  - 단순 조회 → dataApi 경로
  - save/update/remove CRUD 래핑
- popSqlBuilder: dataFetcher.ts에서 SQL 빌더 로직 추출 (순수 유틸)
- index.ts: 배럴 파일 (재export)

기존 대시보드(dataFetcher.ts) 미수정, 향후 통합 예정

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-11 16:48:56 +09:00
kjs e065835c4d feat: Add PK and index management APIs for table management
- Implemented new API endpoints for managing primary keys and indexes in the table management system.
- Added functionality to retrieve table constraints, set primary keys, toggle indexes, and manage NOT NULL constraints.
- Enhanced the frontend to support PK and index management, including loading constraints and handling user interactions for toggling indexes and setting primary keys.
- Improved error handling and logging for better debugging and user feedback during these operations.
2026-02-11 16:07:44 +09:00
kjs 2bbb5d7013 feat: Enhance Excel upload functionality with automatic numbering column detection
- Implemented automatic detection of numbering columns in the Excel upload modal, improving user experience by streamlining the upload process.
- Updated the master-detail Excel upload configuration to reflect changes in how numbering rules are applied, ensuring consistency across uploads.
- Refactored related components to remove deprecated properties and improve clarity in the configuration settings.
- Enhanced error handling and logging for better debugging during the upload process.
2026-02-11 15:43:50 +09:00
SeongHyun Kim 0ef0332e08 merge: ksh-dashboard를 ksh-v2-work에 병합 (pop-icon + pop-dashboard 통합)
- pop-icon (아이콘 네비게이션) + pop-dashboard (KPI/차트/게이지) 양쪽 기능 통합
- PopComponentType에 pop-icon, pop-dashboard 모두 등록
- PopRenderer: currentScreenId(아이콘) + previewPageIndex(대시보드) 양쪽 props 공존
- ComponentEditorPanel: previewPageIndex/onPreviewPage props 추가 + 스크롤 CSS 개선 유지
- pop-text: isRealtime 조건부 타이머 로직 적용 (ksh-dashboard 개선 채택)
- COMPONENT_TYPE_LABELS에 pop-icon 라벨 추가 (타입 안전성 보정)

충돌 해결 7개 파일, 17개 지점 - 모두 양쪽 의도 보존

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-11 14:48:59 +09:00
kjs eac2fa63b1 feat: Enhance input and select components with custom styling support
- Added support for custom border, background, and text styles in V2Input and V2Select components, allowing for greater flexibility in styling based on user-defined configurations.
- Updated the input and select components to conditionally apply styles based on the presence of custom properties, improving the overall user experience and visual consistency.
- Refactored the FileUploadComponent to handle chunked file uploads, enhancing the file upload process by allowing multiple files to be uploaded in batches, improving performance and user feedback during uploads.
2026-02-11 14:45:23 +09:00
SeongHyun Kim 960b1c9946 feat(pop-dashboard): 라벨 정렬 + 페이지 미리보기 + 차트 디자인 개선
- 라벨 정렬(좌/중/우) 기능 추가 (KPI, 차트, 게이지, 통계카드)
- 글자 크기 커스텀 제거 (컨테이너 반응형 자동 적용)
- 페이지별 미리보기 버튼 추가 (디자이너 캔버스에 즉시 반영)
- 아이템 스타일 에디터 접기/펼치기 지원
- 차트 디자인: CartesianGrid, 대각선 X축 라벨, 숫자 약어(K/M), 축 여백
- handleUpdateComponent stale closure 버그 수정 (함수적 setState)
- 디버그 console.log 전량 제거

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-11 14:23:20 +09:00
shin bae50ffda1 fix(pop-text): 시간/날짜 실시간 업데이트 자동 적용 및 라벨 수정
- 실시간 업데이트 스위치 UI 제거 (datetime 타입은 항상 실시간)
- "날짜/시간 설정" → "시간/날짜 설정" 라벨 변경

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-11 11:00:27 +09:00
DDD1542 ced25c9a54 feat: Enhance SplitPanelLayoutComponent with improved data loading and filtering logic
- Updated loadRightData function to support loading all data when no leftItem is selected, applying data filters as needed.
- Enhanced loadTabData function to handle data loading for tabs, including support for data filters and entity joins.
- Improved comments for clarity on data loading behavior based on leftItem selection.
- Refactored UI components in SplitPanelLayoutConfigPanel for better styling and organization, including updates to table selection and display settings.
2026-02-11 10:46:47 +09:00
shin 929cfb2b61 feat(pop): 아이콘 컴포넌트 추가 및 디자이너 UX 개선
- pop-icon.tsx 신규 추가: 아이콘 컴포넌트 구현
- ComponentPalette: 아이콘 컴포넌트 팔레트 추가
- ComponentEditorPanel: 아이콘 편집 패널 추가
- PopRenderer: 아이콘 렌더링 지원
- pop-layout.ts: 아이콘 타입 정의 추가
- pop-text.tsx: 텍스트 컴포넌트 개선
- next.config.mjs: 설정 업데이트

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-11 10:41:30 +09:00
kjs 308f05ca07 fix: Correct file upload configuration handling in FileUploadComponent
- Updated the file upload configuration to ensure that the safeComponentConfig is properly merged into fileConfig.
- This change enhances the reliability of file upload settings by ensuring that default values are applied correctly, improving the overall functionality of the file upload feature.
2026-02-11 09:47:59 +09:00
kjs 9785f098d8 feat: Enhance image handling in table components with improved loading and error states
- Introduced a new TableCellImage component for rendering images in table cells, supporting both object IDs and direct URLs.
- Implemented loading and error states for images, providing a better user experience when images fail to load.
- Updated CardModeRenderer and SingleTableWithSticky components to utilize the new image handling logic, ensuring consistent image rendering across the application.
- Enhanced formatCellValue function to return React nodes, allowing for more flexible cell content rendering.
2026-02-10 18:30:15 +09:00
SeongHyun Kim 1116fb350a 디자이너 캔버스 UX 개선: 헤더 제거 + 실제 데이터 렌더링 + 컴포넌트 목록
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 18:04:43 +09:00
SeongHyun Kim 6f45efef03 디자이너 캔버스 UX 개선: 헤더 제거 + 실제 데이터 렌더링 + 컴포넌트 목록
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 18:02:30 +09:00
SeongHyun Kim bd7bf69a99 fix(pop-dashboard): 아이템/모드 레이아웃 수정 및 게이지 설정 버그 수정
설정 패널 버그 수정 (PopDashboardConfig):
- gaugeConfig 스프레드 순서 수정: min/max/target 값이 기존값에 덮어씌워지는 문제 해결
- 스프레드를 먼저 적용 후 변경 필드를 뒤에 배치하여 올바르게 반영

아이템 레이아웃 개선:
- KpiCard/StatCard: items-center justify-center 추가로 셀 내 중앙 정렬
- GaugeItem: SVG를 flex-1 영역에서 반응형 렌더링 (h-full w-auto)
- GaugeItem: preserveAspectRatio로 비율 유지, 라벨/목표값 shrink-0

모드 레이아웃 개선:
- ArrowsMode: 아이템이 전체 영역 사용, 화살표/인디케이터를 overlay로 변경
- ArrowsMode: 화살표 크기 축소 (h-11 -> h-8), backdrop-blur 추가
- AutoSlideMode: 슬라이드 컨테이너를 absolute inset-0으로 전체 영역 활용
- AutoSlideMode: 인디케이터를 하단 overlay로 변경

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 17:18:00 +09:00
SeongHyun Kim 7a71fc6ca7 fix(pop-dashboard): 차트 X/Y축 자동 적용 및 데이터 처리 안정화
설정 패널 간소화:
- 차트 X축/Y축 수동 입력 필드 제거 (자동 적용 안내 문구로 대체)
- groupBy 선택 시 X축 자동, 집계 결과를 Y축(value)으로 자동 매핑

차트 렌더링 개선 (ChartItem):
- PieChart에 카테고리명+값+비율 라벨 표시
- Legend 컴포넌트 추가 (containerWidth 300px 이상 시)
- Tooltip formatter로 이름/값 쌍 표시

데이터 fetcher 안정화 (dataFetcher):
- apiClient(axios) 우선 호출, dashboardApi(fetch) 폴백 패턴 적용
- PostgreSQL bigint/numeric 문자열 -> 숫자 자동 변환 처리
- Recharts가 숫자 타입을 요구하는 문제 해결

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 16:55:34 +09:00
kjs 5b44a41651 Merge branch 'feature/v2-renewal' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-02-10 16:23:32 +09:00
kjs 86a73267cb Merge branch 'feature/v2-renewal' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-02-10 16:23:27 +09:00
SeongHyun Kim 578cca2687 feat(pop-dashboard): 4가지 아이템 모드 완성 - 설정 UI 추가 및 버그 수정
설정 패널 (PopDashboardConfig):
- groupBy(X축 분류) Combobox 설정 UI 추가
- 차트 xAxisColumn/yAxisColumn 입력 UI 추가
- 통계 카드 카테고리 추가/삭제/편집 인라인 에디터 추가
- 대상 컬럼 Select를 Combobox(검색 가능)로 개선

데이터 처리 버그 수정 (PopDashboardComponent):
- 차트: groupBy 있을 때 xAxisColumn 자동 보정 로직 추가
- 통계 카드: 카테고리별 필터 실제 적용 (기존: 모든 카테고리에 rows.length 동일 입력)
- useCallback 의존성 안정화 (visibleItemIds 문자열 키 사용)
- refreshInterval 최소 5초 강제

데이터 fetcher 방어 로직 (dataFetcher.ts):
- validateDataSourceConfig() 추가: 설정 미완료 시 SQL 전송 차단
- 빈 필터/불완전 조인 건너뜀 처리
- COUNT 컬럼 미선택 시 COUNT(*) 자동 처리
- fetchTableColumns() 이중 폴백 (tableManagementApi -> dashboardApi)

아이템 UI 개선:
- KPI/차트/게이지/통계 카드 패딩 및 폰트 크기 조정
- 작은 셀에서도 라벨/단위/증감율 표시되도록 hidden 제거

기타:
- GridMode MIN_CELL_WIDTH 160 -> 80 축소
- PLAN.MD: 대시보드 4가지 아이템 모드 완성 계획으로 갱신
- STATUS.md: 프로젝트 상태 추적 파일 추가

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 16:12:29 +09:00
DDD1542 403b3da36d 123 2026-02-10 14:31:48 +09:00
SeongHyun Kim dc523d86c3 feat(pop-dashboard): 페이지 기반 구조 전환 및 설정 패널 고도화
구조 변경:
- grid 모드를 독립 displayMode에서 페이지 내부 그리드 레이아웃으로 전환
- DashboardPage 타입 추가 (각 페이지가 독립 그리드 보유)
- migrateConfig()로 기존 grid/useGridLayout 설정 자동 마이그레이션

설정 패널 (PopDashboardConfig):
- 드롭다운 기반 집계 설정 UI 전면 재작성 (+917줄)
- 테이블/컬럼 선택 Combobox, 페이지 관리, 셀 배치 편집기
- fetchTableList() 추가 (테이블 목록 조회)

컴포넌트/모드 개선:
- GridMode: 반응형 자동 열 축소 (MIN_CELL_WIDTH 기준)
- PopDashboardComponent: 페이지 기반 렌더링 로직
- PopDashboardPreview: 페이지 뱃지 표시

기타:
- ComponentEditorPanel: 탭 콘텐츠 스크롤 수정 (min-h-0 추가)
- types.ts: grid를 displayMode에서 제거, DashboardPage 타입 추가

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 14:22:30 +09:00
kjs e97fd05e75 feat: Enhance CardDisplay and SplitPanelLayout components with improved table name handling and custom selection data
- Updated CardDisplayComponent to streamline table name retrieval from props or component configuration.
- Introduced custom selection data management in SplitPanelLayoutComponent, allowing for better handling of selected items in custom mode.
- Enhanced form data handling in SplitPanelLayoutComponent to utilize selected data from the left panel, improving data flow and user experience.
2026-02-10 14:01:43 +09:00
SeongHyun Kim 73e3d56381 fix(pop-dashboard): React Hooks 규칙 위반 수정 + ConfigPanel props 정합성 + 방어 코드 강화
- PopDashboardComponent: early return을 모든 hooks 이후로 이동 (Rules of Hooks)
- PopDashboardConfigPanel: onChange -> onUpdate prop 이름 정합, 빈 객체 config 방어
- PopDashboardPreview: Array.isArray 방어 추가

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 12:20:44 +09:00
kjs 8253be0048 Merge branch 'feature/v2-renewal' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-02-10 12:17:26 +09:00
DDD1542 8894216ee8 feat: Improve entity join handling with enhanced column validation and support for complex keys
- Updated the entityJoinService to include type casting for source and reference columns, ensuring compatibility during joins.
- Implemented validation for reference columns in the TableManagementService, allowing automatic fallback to 'id' if the specified reference column does not exist.
- Enhanced logging for join configurations to provide better insights during the join setup process.
- Transitioned the SplitPanelLayoutComponent to utilize the entityJoinApi for handling single key to composite key transformations, improving data retrieval efficiency.
- Added support for displaying null or empty values as "-" in the SplitPanelLayout, enhancing user experience.
2026-02-10 12:07:25 +09:00
kjs b05a883353 Merge branch 'feature/v2-renewal' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-02-10 11:38:38 +09:00
kjs 219f7724e7 feat: Enhance MasterDetailExcelService with table alias for JOIN operations
- Added a new property `tableAlias` to distinguish between master ("m") and detail ("d") tables during JOIN operations.
- Updated the SELECT clause to include the appropriate table alias for master and detail tables.
- Improved the entity join clause construction to utilize the new table alias, ensuring clarity in SQL queries.
2026-02-10 11:38:02 +09:00
SeongHyun Kim 4f3e9ec19e feat(pop-dashboard): Phase 0 공통 타입 + Phase 1 대시보드 컴포넌트 구현
Phase 0: 공통 인프라 타입 정의
- ColumnBinding, JoinConfig, DataSourceConfig, PopActionConfig 등
- FilterOperator, AggregationType, SortConfig 타입

Phase 1: pop-dashboard 컴포넌트
- 4개 서브타입: KpiCard, ChartItem, GaugeItem, StatCard
- 4개 표시모드: ArrowsMode, AutoSlideMode, GridMode, ScrollMode
- 설정패널(PopDashboardConfig), 미리보기(PopDashboardPreview)
- 계산식 엔진(formula.ts), 데이터 조회(dataFetcher.ts)
- 팔레트/렌더러/타입 시스템 연동

fix(pop-text): DateTimeDisplay isRealtime 기본값 true로 수정
EOF
2026-02-10 11:04:18 +09:00
DDD1542 3c8c2ebcf4 feat: Enhance entity join functionality with company code support
- Updated the EntityJoinController to log the company code during entity join configuration retrieval.
- Modified the entityJoinService to accept company code as a parameter, allowing for company-specific entity join detection.
- Enhanced the TableManagementService to pass the company code when detecting entity joins and retrieving reference table columns.
- Implemented a helper function in the SplitPanelLayoutComponent to extract additional join columns based on the entity join configuration.
- Improved the SplitPanelLayoutConfigPanel to display entity join columns dynamically, enhancing user experience and functionality.
2026-02-10 10:51:23 +09:00
DDD1542 9e1a54c738 feat: Add savedIds to UPSERT response and update related components
- Enhanced the UPSERT process in DataService to include savedIds in the response, allowing tracking of newly saved record IDs.
- Updated the dataApi to reflect the new savedIds field in the Promise return type.
- Modified the SelectedItemsDetailInputComponent to handle and inject saved mapping IDs into detail records, improving data integrity and management during the save process.
- Added logging for savedIds to facilitate debugging and tracking of saved records.
2026-02-10 10:06:53 +09:00
DDD1542 45029bf5f4 feat: Enhance screen management with conditional layer and zone handling
- Updated the ScreenManagementService to allow general companies to query both their own zones and common zones.
- Improved the ScreenViewPage to include detailed logging for loaded conditional layers and zones.
- Added functionality to ignore empty targetComponentId in condition evaluations.
- Enhanced the EditModal and LayerManagerPanel to support loading conditional layers and dynamic options based on selected zones.
- Implemented additional tab configurations to manage entity join columns effectively in the SplitPanelLayout components.
2026-02-09 19:36:06 +09:00
SeongHyun Kim f825d65bfc feat(pop): 뷰어 스크롤 수정 및 컴포넌트 레지스트리 연동
- page.tsx: overflow-hidden 제거로 뷰어 스크롤 활성화,
  pop-components 레지스트리 자동 등록 import 추가
- PopRenderer.tsx: 레지스트리에서 실제 컴포넌트 조회 후 렌더링,
  미등록 컴포넌트는 플레이스홀더 fallback 표시
- PLAN.MD: POP 뷰어 스크롤 수정 계획으로 업데이트
- POPUPDATE_2.md: v8.0 - 모달 화면 설계 규칙(제9조) 추가,
  버튼 modal action 스펙 확장 (inline/screen-ref 모드)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 19:31:46 +09:00
kjs 30ee36f881 refactor: Update UserFormModal to remove department code requirement
- Modified the user form validation logic to make the department code optional in edit mode.
- Removed the department code from the required fields check and adjusted the UI label accordingly.
- Ensured that the form validation still checks for email format when provided.
2026-02-09 17:24:50 +09:00
kjs 2024299c02 Merge branch 'feature/v2-renewal' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-02-09 17:16:34 +09:00
kjs c65f436009 feat: Enhance LayerManagerPanel with dynamic trigger options and improved condition handling
- Added a new Select component to allow users to choose condition values dynamically based on the selected zone's trigger component.
- Implemented logic to fetch trigger options from the base layer components, ensuring only relevant options are displayed.
- Updated the LayerManagerPanel to handle condition values more effectively, including the ability to set new condition values and manage used values.
- Refactored the ComponentsPanel to include the new V2 select component with appropriate configuration options.
- Improved the V2SelectConfigPanel to streamline option management and enhance user experience.
2026-02-09 17:13:26 +09:00
DDD1542 e29eaceeff Merge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into gbpark-node
; Conflicts:
;	frontend/components/screen/ScreenDesigner.tsx
2026-02-09 16:51:31 +09:00
DDD1542 1aacd829f2 123 2026-02-09 16:46:50 +09:00
kjs f8c0fe9499 Merge branch 'feature/v2-renewal' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-02-09 16:03:27 +09:00
DDD1542 7118a723f3 feat: Implement orphan record deletion logic based on edit mode
- Updated the DataService to conditionally delete orphan records only when in EDIT mode, controlled by the deleteOrphans flag.
- Enhanced the SelectedItemsDetailInputComponent to determine the mode (EDIT or CREATE) based on the presence of existing database IDs, ensuring that orphan records are only deleted when necessary.
- Improved data integrity by preventing unintended deletions during the CREATE process.
2026-02-09 15:50:53 +09:00
DDD1542 d7f900d8ae refactor: Remove debug logs and optimize toast animations
- Removed debug console logs from the UPSERT process in the DataService to clean up the code.
- Disabled animations for Sonner toast notifications to enhance performance and user experience.
- Simplified the alert and dialog components by removing unnecessary animation classes, ensuring a smoother transition.
- Updated the SelectedItemsDetailInputComponent to load all related table data in edit mode, improving data management and consistency.
2026-02-09 15:37:28 +09:00
DDD1542 423ef6231a Merge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into gbpark-node
; Conflicts:
;	frontend/components/screen/ScreenDesigner.tsx
2026-02-09 15:07:16 +09:00
DDD1542 2b035ce6e1 Merge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into gbpark-node 2026-02-09 15:03:29 +09:00
kjs 7dc0bbb329 feat: 조건부 레이어 관리 및 애니메이션 최적화
- 레이어 저장 로직을 개선하여 conditionConfig의 명시적 전달 여부에 따라 저장 방식을 다르게 처리하도록 변경했습니다.
- 조건부 레이어 로드 및 조건 평가 기능을 추가하여 레이어의 가시성을 동적으로 조정할 수 있도록 했습니다.
- 컴포넌트 위치 변경 시 모든 애니메이션을 제거하여 사용자 경험을 개선했습니다.
- LayerConditionPanel에서 조건 설정 시 기존 displayRegion을 보존하도록 업데이트했습니다.
- RealtimePreview 및 ScreenDesigner에서 조건부 레이어의 크기를 적절히 조정하도록 수정했습니다.
2026-02-09 15:02:53 +09:00
DDD1542 946ce1964d 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-02-09 13:28:44 +09:00
kjs 78f23ea0a9 Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-02-09 13:27:59 +09:00
DDD1542 2e500f066f feat: Add close confirmation dialog to ScreenModal and enhance SelectedItemsDetailInputComponent
- Implemented a confirmation dialog in ScreenModal to prevent accidental closure, allowing users to confirm before exiting and potentially losing unsaved data.
- Enhanced SelectedItemsDetailInputComponent by ensuring that base records are created even when detail data is absent, maintaining item-client mapping.
- Improved logging for better traceability during the UPSERT process and refined the handling of parent data mappings for more robust data management.
2026-02-09 13:22:48 +09:00
kjs 1c71b3aa83 feat: 멀티테넌시 지원을 위한 레이어 관리 기능 추가
- 레이어 목록 조회, 특정 레이어 레이아웃 조회, 레이어 삭제 및 조건 설정 업데이트 기능을 추가했습니다.
- 엔티티 참조 데이터 조회 및 공통 코드 데이터 조회에 멀티테넌시 필터를 적용하여 인증된 사용자의 회사 코드에 따라 데이터 접근을 제한했습니다.
- 레이어 관리 패널에서 기본 레이어와 조건부 레이어의 컴포넌트를 통합하여 조건부 영역의 표시를 개선했습니다.
- 레이아웃 저장 시 레이어 ID를 포함하여 레이어별로 저장할 수 있도록 변경했습니다.
2026-02-09 13:21:56 +09:00
SeongHyun Kim b85f8559e4 merge: origin/main을 ksh-v2-work-merge-test에 병합
origin/main의 feature/v2-unified-renewal(PR #386) 포함 86개 커밋을 병합.
ScreenDesigner.tsx에서 3건의 충돌을 수동 해결:

1. 함수 시그니처: isPop/defaultDevicePreview props 유지 (POP 모드 지원)
2. 저장 로직: POP/V2/Legacy 3단계 분기 유지, 디버그 로그 제거
3. 툴바 props: origin/main의 정렬/분배/크기맞춤/라벨토글/단축키 기능 채택

검증 완료: 빌드 성공, 타입 에러 없음, 시맨틱 충돌 없음

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 10:41:30 +09:00
DDD1542 bb4d90fd58 refactor: Improve label toggling functionality in ScreenDesigner and enhance SelectedItemsDetailInputComponent
- Updated the label toggling logic in ScreenDesigner to allow toggling of labels for selected components or all components based on the current selection.
- Enhanced the SelectedItemsDetailInputComponent by implementing a caching mechanism for table columns and refining the logic for loading category options based on field groups.
- Introduced a new helper function to convert category codes to labels, improving the clarity and maintainability of the price calculation logic.
- Added support for determining the source table for field groups, facilitating better data management and retrieval.
2026-02-09 10:07:07 +09:00
DDD1542 79d8f0b160 refactor: Update ComponentsPanel and SelectedItemsDetailInputComponent for improved functionality
- Updated ComponentsPanel to clarify the usage of the "selected-items-detail-input" component, indicating its application in the context of adding items for clients.
- Enhanced SelectedItemsDetailInputComponent by introducing independent editing states for group entries, allowing for better management of item edits within groups.
- Adjusted input field heights and styles for consistency and improved user experience.
- Added a new property `maxEntries` to the FieldGroup interface to support 1:1 relationships and automatic entry generation.
- Implemented overflow support for the component to handle cases with many items, ensuring a smoother user interface.
2026-02-07 17:45:44 +09:00
kjs 9d368b1864 refactor: 카테고리 매핑 로직 개선 및 valueCode 추가
- NumberingRuleService에서 카테고리 매핑 로직을 개선하여, valueCode를 사용한 매핑을 추가했습니다.
- 카테고리 값 역변환 로직을 추가하여, category_values 테이블에서 valueCode를 통해 valueId를 조회할 수 있도록 하였습니다.
- AutoConfigPanel에서 categoryValueCode를 추가하여 V2Select와의 호환성을 높였습니다.
- numbering-rule.ts 타입 정의에 categoryValueCode를 추가하여, 카테고리 값 코드에 대한 매칭을 지원합니다.
2026-02-06 17:10:24 +09:00
shin 2dfc3cc681 feat(pop-text): POP 텍스트 컴포넌트 추가
- pop-text 컴포넌트 구현 (텍스트/시간/이미지/제목 타입)
- PopComponentRegistry에 preview 속성 추가
- ComponentEditorPanel에서 configPanel 동적 렌더링
- PopRenderer에서 preview 컴포넌트 렌더링 지원
- ComponentPalette에 텍스트 컴포넌트 추가

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 17:07:56 +09:00
kjs 444c087a11 refactor: API URL 처리 및 파일 미리보기 로직 개선
- next.config.mjs에서 API 프록시 설정을 Docker 환경에 맞게 수정하여, SERVER_API_URL을 사용하도록 변경했습니다.
- InteractiveDataTable 및 TableListComponent에서 상대 경로 대신 getFilePreviewUrl 함수를 사용하여 전체 URL을 사용하도록 개선했습니다.
- FileManagerModal 및 FileUploadComponent에서 Blob 다운로드 방식을 apiClient를 통해 통일하여 Docker 환경에서의 호환성을 높였습니다.
- 불필요한 previewUrl 사용을 제거하고, 항상 apiClient를 통해 파일을 다운로드하도록 변경했습니다.
2026-02-06 16:23:38 +09:00
DDD1542 0ac2d78ad3 Merge branch 'feature/v2-unified-renewal' 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-02-06 15:59:27 +09:00
kjs da3768b7c3 refactor: FileUploadComponent에서 이전 파일 로드 스킵 로직 제거
- FileUploadComponent에서 등록 모드 시 이전 파일 로드를 스킵하는 로직을 제거하여, 불필요한 조건문을 간소화했습니다.
- 이 변경은 연속 등록 시 이전 저장의 이미지 값이 남아있어 다시 로드되는 것을 방지하기 위한 개선의 일환입니다.
2026-02-06 15:39:05 +09:00
SeongHyun Kim 40219fed08 feat(pop-designer): 반응형 그리드 시스템 고도화
- 브레이크포인트 재설계: 실제 기기 CSS 뷰포트 기반 (479/767/1023px)
- 자동 줄바꿈 시스템: col > maxCol 컴포넌트 자동 재배치, 검토 필요 알림
- Gap 프리셋: 좁게/보통/넓게 3단계 간격 조절
- 셀 크기 강제 고정: gridTemplateRows + overflow-hidden
- 세로 자동 확장: 동적 캔버스 높이 계산 (최소 600px)
- 뷰어 모드 일관성: detectGridMode() 직접 사용
- 컴포넌트 ID 충돌 방지: 로드 시 idCounter 자동 설정
- popdocs 문서 정비: ADR 2건, 레거시 문서 archive 이동

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 15:30:57 +09:00
DDD1542 f9803b0e6c feat: Enhance ScreenDesigner with alignment and distribution features
- Added new alignment, distribution, and size matching functionalities to the ScreenDesigner component.
- Implemented keyboard shortcuts for nudging components and toggling labels.
- Introduced a modal for displaying keyboard shortcuts to improve user experience.
- Updated SlimToolbar to support new alignment and distribution actions based on selected components.
- Enhanced zoom control with RAF throttling to prevent flickering during zoom operations.
2026-02-06 15:18:27 +09:00
kjs 8c3eca8129 refactor: 파일 관련 API 및 컴포넌트 개선
- deleteFile, previewFile, downloadFile, setRepresentativeFile 함수에서 objid 파라미터의 타입을 정수에서 문자열로 변경하여 일관성을 높였습니다.
- getComponentFiles 함수에 레코드의 컬럼 값으로 파일을 직접 조회하는 로직을 추가하여, 파일 로드 시 유연성을 개선했습니다.
- FileUploadComponent에서 localStorage 파일 캐시 정리 로직을 추가하여, 등록 후 재등록 시 이전 파일이 남아있지 않도록 처리했습니다.
- v2-file-upload/FileUploadComponent에서 등록 모드 시 이전 파일 로드를 스킵하도록 개선하여, 불필요한 파일 로드를 방지했습니다.
2026-02-06 14:08:20 +09:00
kjs 43541a12c9 fix: API URL 처리 로직 개선
- 프로덕션 URL에서 /api를 제거하는 로직을 수정하여, 호스트명의 /api까지 제거되는 버그를 방지하였습니다.
- API_BASE_URL 및 NEXT_PUBLIC_API_URL에서 문자열 끝의 /api만 제거하도록 정규 표현식을 사용하였습니다.
- FileViewerModal 컴포넌트에서 다운로드 URL 생성 시에도 동일한 수정이 적용되었습니다.
2026-02-06 12:10:07 +09:00
kjs 33db3933d8 Merge branch 'feature/v2-renewal' of http://39.117.244.52:3000/kjs/ERP-node into feature/v2-unified-renewal 2026-02-06 11:07:56 +09:00
kjs f2bee41336 Merge branch 'feature/v2-renewal' of http://39.117.244.52:3000/kjs/ERP-node into feature/v2-unified-renewal 2026-02-06 10:20:45 +09:00
kjs 4e2209bd5d feat: 레이어 시스템 추가 및 관리 기능 구현
- InteractiveScreenViewer 컴포넌트에 레이어 시스템을 도입하여, 레이어의 활성화 및 조건부 표시 로직을 추가하였습니다.
- ScreenDesigner 컴포넌트에서 레이어 상태 관리 및 레이어 정보 저장 기능을 구현하였습니다.
- 레이어 정의 및 조건부 표시 설정을 위한 새로운 타입과 스키마를 추가하여, 레이어 기반의 UI 구성 요소를 보다 유연하게 관리할 수 있도록 하였습니다.
- 레이어별 컴포넌트 렌더링 로직을 추가하여, 모달 및 드로어 형태의 레이어를 효과적으로 처리할 수 있도록 개선하였습니다.
- 전반적으로 레이어 시스템을 통해 사용자 경험을 향상시키고, UI 구성의 유연성을 높였습니다.
2026-02-06 09:51:29 +09:00
DDD1542 a424b3b775 feat: V2 레이아웃 동기화 및 컴포넌트 개선
- TableManagementService에서 V2 레이아웃 동기화 로직을 추가하여, 새로운 입력 타입에 따라 화면 레이아웃을 자동으로 업데이트하도록 개선하였습니다.
- syncScreenLayoutsV2InputType 메서드를 통해 V2 레이아웃의 컴포넌트 source를 동기화하는 기능을 구현하였습니다.
- EditModal에서 배열 데이터를 쉼표 구분 문자열로 변환하는 로직을 추가하여, 손상된 값을 필터링하고 데이터 저장 시 일관성을 높였습니다.
- CategorySelectComponent에서 불필요한 스타일 및 높이 관련 props를 제거하여 코드 간결성을 개선하였습니다.
- V2Select 및 관련 컴포넌트에서 height 스타일을 통일하여 사용자 경험을 향상시켰습니다.
2026-02-06 09:15:50 +09:00
SeongHyun Kim 726f6ac395 feat(pop-designer): 반응형 레이아웃 시스템 구현
모드별(4/6/8/12칸) 컴포넌트 위치/크기 오버라이드 저장
화면 밖 컴포넌트 오른쪽 패널 표시 및 드래그 재배치
컴포넌트 숨김 기능 (드래그/H키/클릭, 드래그로 해제)
리사이즈 겹침 검사 추가
드롭 위치 그리드 범위 초과 시 자동 조정
숨김 컴포넌트 드래그 안됨 버그 수정 (상태 업데이트 통합)
2026-02-05 19:16:23 +09:00
kjs e31bb970a2 refactor: 코드 정리 및 가독성 향상
- numberingRuleController.ts에서 API 엔드포인트의 코드 스타일을 일관되게 정리하여 가독성을 높였습니다.
- 불필요한 줄바꿈을 제거하고, 코드 블록을 명확하게 정리하여 유지보수성을 개선했습니다.
- tableManagementService.ts와 ButtonConfigPanel.tsx에서 코드 정리를 통해 일관성을 유지하고, 가독성을 향상시켰습니다.
- 전반적으로 코드의 깔끔함을 유지하고, 향후 개발 시 이해하기 쉽게 개선했습니다.
2026-02-05 17:38:06 +09:00
kjs 73d05b991c refactor: 코드 정리 및 불필요한 로그 제거
- scheduleService.ts에서 스케줄 생성 로직을 간소화하고, 불필요한 줄바꿈을 제거하여 가독성을 향상시켰습니다.
- v2-sales-order-modal-layout.json에서 JSON 포맷을 정리하여 일관성을 유지했습니다.
- page.tsx, ScreenModal.tsx, ScreenDesigner.tsx, V2Input.tsx, V2Select.tsx, V2SelectConfigPanel.tsx, SimpleRepeaterTableComponent.tsx, ButtonPrimaryComponent.tsx, FileUploadComponent.tsx 등 여러 파일에서 디버깅 로그를 제거하여 코드의 깔끔함을 유지했습니다.
- 전반적으로 코드의 가독성을 높이고, 불필요한 로그를 제거하여 유지보수성을 개선했습니다.
2026-02-05 17:35:13 +09:00
kjs 34202be843 feat: NumberingRuleDesigner에서 파트 업데이트 및 삭제 로직 개선
- 파트 업데이트 및 삭제 시 id 대신 order를 사용하여 로직을 개선하였습니다.
- savedRules 상태 업데이트 시 깊은 복사를 통해 객체 참조를 분리하여 클로저 문제를 방지하였습니다.
- 규칙 선택 시 깊은 복사를 통해 좌측 목록과 편집 영역의 객체가 공유되지 않도록 하여 데이터 무결성을 강화하였습니다.
- 관련 로깅을 추가하여 상태 변경 시 디버깅을 용이하게 하였습니다.
2026-02-05 16:31:39 +09:00
kjs d28e703cd2 feat: EditModal에서 채번 규칙 할당 로직 병렬 처리 최적화
- allocateCode 호출 시 Promise.all을 사용하여 여러 채번 필드를 병렬로 처리하도록 개선하였습니다.
- 채번 규칙 할당 실패 시 사용자에게 명확한 오류 메시지를 제공하도록 로깅을 강화하였습니다.
- 코드 할당 결과를 보다 효율적으로 처리하여 성능을 향상시켰습니다.
2026-02-05 15:55:32 +09:00