Commit Graph

2472 Commits

Author SHA1 Message Date
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
kmh 238a7d1db4 feat: Enhance V2RepeaterConfigPanel with entity join column management
- Updated the toggleEntityJoinColumn function to include an optional columnType parameter for better flexibility in handling join columns.
- Improved the logic for managing entity joins and columns, ensuring that columns are correctly added or removed based on user interactions.
- Introduced a new section in the UI to display entity join columns in a read-only format, providing users with clear visibility of the join configurations.
- Added loading states and messages to enhance user experience during data retrieval for entity joins.

These changes aim to improve the functionality and usability of the V2RepeaterConfigPanel in managing entity relationships.
2026-03-11 23:38:42 +09:00
kjs 7269867d91 revert: 파이프라인 커밋 롤백 (직접 구현으로 전환)
- 1b2d42ff: packagingController.ts, packagingRoutes.ts 롤백
- 4f603bd4: pipeline rules 강화, AdminPageRenderer 롤백

Made-with: Cursor
2026-03-11 23:11:07 +09:00
DDD1542 6f311148a5 [agent-pipeline] pipe-20260311130333-zqic round-3 2026-03-11 22:26:52 +09:00
DDD1542 d2c8f5f8f5 [agent-pipeline] pipe-20260311130333-zqic round-2 2026-03-11 22:20:59 +09:00
DDD1542 ae852ed4ad [agent-pipeline] pipe-20260311130333-zqic round-1 2026-03-11 22:13:58 +09:00
kjs 4f603bd41e docs: update pipeline rules for user menu implementation
- Added critical guidelines prohibiting the direct creation of user menu screens in React (.tsx) files, emphasizing that user menus must be implemented through database registration methods (screen_definitions, screen_layouts_v2, menu_info).
- Clarified that backend agents should not request or suggest the creation of frontend pages for user menus.
- Reinforced the importance of adhering to the established rendering system to prevent hardcoding UI components.

Made-with: Cursor
2026-03-11 22:06:22 +09:00
DDD1542 1d9ed6b36b [agent-pipeline] pipe-20260311124806-lfrk round-3 2026-03-11 21:58:53 +09:00
DDD1542 f72649291c [agent-pipeline] pipe-20260311124806-lfrk round-2 2026-03-11 21:55:21 +09:00
DDD1542 1bbce43ec1 [agent-pipeline] pipe-20260311124806-lfrk round-1 2026-03-11 21:51:37 +09:00
DDD1542 24630dd60b [agent-pipeline] pipe-20260311122226-4dkx round-5 2026-03-11 21:44:12 +09:00
DDD1542 eaa893a01a [agent-pipeline] pipe-20260311122226-4dkx round-4 2026-03-11 21:40:33 +09:00
DDD1542 a36bcceef3 [agent-pipeline] pipe-20260311122226-4dkx round-3 2026-03-11 21:37:01 +09:00
DDD1542 b2d3c6c688 [agent-pipeline] pipe-20260311122226-4dkx round-2 2026-03-11 21:29:28 +09:00
DDD1542 49f7bb9937 [agent-pipeline] pipe-20260311122226-4dkx round-1 2026-03-11 21:25:37 +09:00
DDD1542 5f6f2203ae [agent-pipeline] pipe-20260311115150-4sye round-1 2026-03-11 20:54:38 +09:00
DDD1542 2da5cd9637 [agent-pipeline] pipe-20260311104251-xw7c round-2 2026-03-11 19:49:17 +09:00
DDD1542 6be07e5e88 [agent-pipeline] pipe-20260311104251-xw7c round-1 2026-03-11 19:46:44 +09:00
DDD1542 44c5dc87b4 [agent-pipeline] pipe-20260311102309-26hg round-2 2026-03-11 19:30:01 +09:00
DDD1542 175c19a79a [agent-pipeline] pipe-20260311102309-26hg round-1 2026-03-11 19:26:17 +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 000484349b feat: enhance dynamic form service and interactive screen viewer
- Updated the `DynamicFormService` to allow retrieval of both 'component' and 'v2-button-primary' types in screen layouts, improving flexibility in component handling.
- Introduced a new variable to streamline button component identification, enhancing code readability and maintainability.
- Modified the `InteractiveScreenViewer` to pass the `screenInfo.id` when deleting form data, ensuring accurate context during deletion operations.

Made-with: Cursor
2026-03-11 18:06:40 +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
DDD1542 ff54e48ede [agent-pipeline] pipe-20260311080625-8a1t round-1 2026-03-11 17:15:15 +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
DDD1542 615bd8e2bf [agent-pipeline] pipe-20260311071246-rhvz round-7 2026-03-11 16:49:44 +09:00
DDD1542 f3eca6b02c [agent-pipeline] pipe-20260311071246-rhvz round-6 2026-03-11 16:42:06 +09:00
SeongHyun Kim cae1622ac2 fix(pop): pop-status-bar 디자이너 팔레트 및 타입 등록 누락 수정
pop-status-bar 컴포넌트가 디자이너 컴포넌트 목록에 표시되지 않던
문제를 수정한다. 타입 유니온, 팔레트, 라벨, 기본 그리드 크기 4곳에
등록을 추가한다.
- pop-layout.ts: PopComponentType에 "pop-status-bar" 추가,
  DEFAULT_COMPONENT_GRID_SIZE에 6칸x1행 기본 크기 추가
- ComponentPalette.tsx: PALETTE_ITEMS에 "상태 바" 항목 추가
- PopRenderer.tsx: COMPONENT_TYPE_LABELS에 "상태 바" 추가
- ComponentEditorPanel.tsx: COMPONENT_TYPE_LABELS에 "상태 바" 추가
2026-03-11 16:41:18 +09:00
DDD1542 ca001408f8 [agent-pipeline] pipe-20260311071246-rhvz round-5 2026-03-11 16:36:06 +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 506475e5cc [agent-pipeline] pipe-20260311071246-rhvz round-4 2026-03-11 16:31:52 +09:00
DDD1542 d1d5f651cc [agent-pipeline] pipe-20260311071246-rhvz round-3 2026-03-11 16:27:18 +09:00
DDD1542 d4f2a3cf04 [agent-pipeline] pipe-20260311071246-rhvz round-1 2026-03-11 16:17:32 +09:00
DDD1542 0eba11e047 [agent-pipeline] pipe-20260311064710-y8yf round-9 2026-03-11 16:04:46 +09:00
DDD1542 3f8e995c87 [agent-pipeline] pipe-20260311064710-y8yf round-8 2026-03-11 15:57:02 +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 040c746334 [agent-pipeline] pipe-20260311052455-y968 round-6 2026-03-11 15:10:14 +09:00
DDD1542 9125d04345 [agent-pipeline] pipe-20260311052455-y968 round-5 2026-03-11 14:54:47 +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
syc0123 634f0cae18 docs: Add documentation for category tree modal updates with continuous registration mode
- Introduced new documents detailing the modifications made to the category tree modal for continuous registration mode.
- Updated the functionality to allow the modal to close after saving or remain open based on user preference via a checkbox.
- Enhanced the user experience by aligning the modal behavior with existing patterns in the project.
- Included a checklist to track implementation progress and ensure thorough testing.

These changes aim to improve the usability and consistency of the category management feature in the application.
2026-03-11 14:44:34 +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
kjs fa97b361ed feat: add Excel data validation functionality
- Implemented a new API endpoint for validating Excel data before upload, ensuring that required fields are not null and that unique constraints are respected.
- Added frontend integration to handle validation results, displaying errors for missing required fields and duplicates within the Excel file and against existing database records.
- Enhanced user experience by providing immediate feedback on data validity during the upload process.

Made-with: Cursor
2026-03-11 14:16:50 +09:00
kmh 98c0945508 Resolve merge conflict in TableListComponent.tsx from ycshin-node
Made-with: Cursor
2026-03-11 14:09:15 +09:00
syc0123 d9611f234e docs: Update pagination navigation documentation and remove obsolete components
- Deleted the outdated `PageGroupNav` component and its related documentation.
- Introduced a new document for the direct input navigation feature in pagination, detailing the rationale for the change and the new user experience.
- Updated the checklist to reflect the completion of the new pagination input feature and its implementation steps.

These changes enhance the clarity and usability of the pagination system in the project.
2026-03-11 14:05:38 +09:00
syc0123 51e1abee2b Merge branch 'jskim-node' into ycshin-node
- 충돌 해결: TableListComponent.tsx
- 양쪽 import 유지 (useTabId + getAdaptiveLabelColor)
- buttonColor에 다크모드 대응 함수 적용

Made-with: Cursor
2026-03-11 12:49:03 +09:00
kmh 4d313008c1 Merge branch 'jskim-node' into mhkim-node
Made-with: Cursor
2026-03-11 12:48:22 +09:00
syc0123 9c128cc52c docs: Add project conventions and guidelines for ERP/PLM project
- Introduced a comprehensive document outlining project conventions for the WACE ERP/PLM project.
- Included sections on project structure, backend practices, frontend practices, and specific implementation patterns.
- Established guidelines for file creation order, controller and service patterns, pagination handling, and caching strategies.
- Enhanced documentation to improve consistency and maintainability across the codebase.

These additions serve as a reference for developers to follow best practices and ensure uniformity in the project's development process.
2026-03-11 12:42:25 +09:00
kjs afd936ff67 chore: remove unnecessary peer dependencies from package-lock.json files
- Cleaned up package-lock.json in both backend and frontend by removing redundant "peer" fields.
- This change helps streamline the dependency management and reduces potential confusion.

Made-with: Cursor
2026-03-11 12:32:34 +09:00
kjs 5a8c6df550 Merge branch 'gbpark-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-11 12:23:52 +09:00
SeongHyun Kim 12ccb85308 feat(pop): 공정 상태 자동 계산 + 하위 필터 연동 + 타임라인 연동 상태배지
공정 필터 선택 시 상태 뱃지/카운트/버튼이 공정 상태 기준으로 동작하도록
파생 상태 자동 계산, 하위 필터 __subStatus__ 주입, 접수 버튼 공정 행 특정
로직을 구현한다.
[파생 상태 자동 계산]
- types.ts: StatusValueMapping.isDerived 필드 추가
  isDerived=true면 DB에 없는 상태로, 이전 공정 완료 시 자동 변환
- PopCardListV2Component: injectProcessFlow에 derivedRules 기반 변환 로직
  같은 semantic의 원본 상태를 자동 추론 (waiting → acceptable)
- TimelineProcessStep에 processId, rawData 필드 추가
[하위 필터 __subStatus__ 주입]
- PopCardListV2Component: filteredRows를 2단계로 분리
  1단계: 하위 테이블(work_order_process) 필터 → 매칭 공정의 상태를
  VIRTUAL_SUB_STATUS/SEMANTIC/PROCESS/SEQ 가상 컬럼으로 주입
  2단계: 메인 필터에서 status 컬럼을 __subStatus__로 자동 대체
- cell-renderers: StatusBadgeCell/ActionButtonsCell이 __subStatus__ 우선 참조
  하드코딩된 접수가능 판별 로직(isAcceptable) 제거 → 설정 기반으로 전환
- all_rows 발행: { rows, subStatusColumn } envelope 구조로 메타 포함
[타임라인 강조(isCurrent) 개선]
- "기준" 상태(isDerived) 기반 강조 + 공정 필터 시 매칭 공정 강조
- 폴백: active → pending 순서로 자동 결정
[접수 버튼 공정 행 특정]
- cell-renderers: ActionButtonsCell에서 현재 공정의 processId를 __processId로 전달
- PopCardListV2Component: onActionButtonClick에서 __processId로 공정 행 UPDATE
[상태배지 타임라인 연동]
- PopCardListV2Config: StatusMappingEditor에 "타임라인 연동" 버튼 추가
  같은 카드의 타임라인 statusMappings에서 값/라벨/색상/컬럼 자동 가져옴
[타임라인 설정 UI]
- PopCardListV2Config: StatusMappingsEditor에 "기준" 라디오 버튼 추가
  하나만 선택 가능, 재클릭 시 해제
[연결 탭 하위 테이블 필터 설정]
- ConnectionEditor: isSubTable 체크박스 + targetColumn/filterMode 설정 UI
- pop-layout.ts: filterConfig.isSubTable 필드 추가
[status-chip 하위 필터 자동 전환]
- PopSearchComponent: 카드가 전달한 subStatusColumn 자동 감지
  useSubCount 활성 시 집계/필터 컬럼 자동 전환
- PopSearchConfig: useSubCount 체크박스 설정 UI
- types.ts: StatusChipConfig.useSubCount 필드 추가
[디자이너 라벨]
- ComponentEditorPanel: comp.label || comp.id 패턴으로 통일
2026-03-11 12:07:11 +09:00
DDD1542 e231052d9f fix: 반응형 렌더링 근본 수정 - DesktopCanvasRenderer 제거, 런타임 고정 픽셀 제거
- ResponsiveGridRenderer: DesktopCanvasRenderer(transform:scale) 제거, 모든 화면 flex 퍼센트 레이아웃 강제
- ResponsiveGridRenderer: useMemo Hook 제거로 Hook 순서 에러 해결
- ResponsiveGridRenderer: 모든 비-버튼 컴포넌트 flexGrow:1 적용 (수주관리처럼 남는 공간 채움)
- ResponsiveGridRenderer: 캔버스 높이 80% 이상 컴포넌트는 flex:1로 세로 공간도 채움
- DynamicComponentRenderer: 런타임 모드에서 size.width/height를 고정 픽셀 대신 100% 사용
- ResponsiveSplitPanel: 3단계 브레이크포인트 (데스크톱 1280+, 태블릿 768-1279, 모바일 <768)

Made-with: Cursor
2026-03-11 11:53:29 +09:00
syc0123 2406052742 refactor: Enhance rack structure component with format configuration and segment handling
- Introduced `FormatSegment` and `LocationFormatConfig` types to manage the formatting of location codes and names.
- Added `defaultFormatConfig` to provide default segment configurations for location codes and names.
- Implemented `buildFormattedString` function to generate formatted strings based on active segments and their configurations.
- Updated `RackStructureComponent` to utilize the new formatting logic for generating location codes and names.
- Enhanced `RackStructureConfigPanel` to allow users to edit format settings for location codes and names using `FormatSegmentEditor`.

These changes improve the flexibility and usability of the rack structure component by allowing dynamic formatting of location identifiers.
2026-03-11 10:15:17 +09:00
DDD1542 f3bbe4af7f [agent-pipeline] pipe-20260310142919-l9ae round-2 2026-03-11 00:12:03 +09:00
DDD1542 53ac875915 [agent-pipeline] pipe-20260310142919-l9ae round-1 2026-03-10 23:51:42 +09:00
DDD1542 b14e862cc3 feat: add ResponsiveSplitPanel component and establish responsive strategy
- Create ResponsiveSplitPanel: universal left-right split layout with
  desktop resizer and mobile collapsible stack
- Migrate V2CategoryManagerComponent to use ResponsiveSplitPanel
- Delete unused ResponsiveContainer (dead code)
- Document responsive component strategy (3 primitives + 1 hook)

Made-with: Cursor
2026-03-10 23:25:22 +09:00
DDD1542 58e958829c feat: update color handling for dark mode compatibility
- Updated various components to utilize `getAdaptiveLabelColor` for dynamic label color adjustments based on the current theme.
- Enhanced dark mode styles in `globals.css` for better visual consistency across components.

Made-with: Cursor
2026-03-10 21:16:01 +09:00
SeongHyun Kim c17dd86859 feat(pop): pop-search status-chip 입력 타입 추가 + all_rows 이벤트 연동
pop-search 컴포넌트에 status-chip 입력 타입을 추가하여 연결된 카드의
전체 데이터를 구독하고 상태별 건수를 집계/표시한다. 칩 클릭 시
filter_value를 발행하여 카드 목록을 필터링한다.
[status-chip 입력 타입]
- types.ts: StatusChipStyle, StatusChipConfig, STATUS_CHIP_STYLE_LABELS
- PopSearchComponent: StatusChipInput 컴포넌트 (allRows 구독 + 건수 집계)
- PopSearchConfig: StatusChipDetailSettings 설정 패널 (칩 옵션/스타일)
- index.tsx: receivable에 all_rows 이벤트 등록
[all_rows 이벤트]
- pop-card-list-v2: 데이터 로드 시 all_rows publish + sendable 등록
- pop-card-list: 데이터 로드 시 all_rows publish + sendable 등록
- useConnectionResolver: all_rows 타입 자동 매칭 로직 추가
[pop-card-list-v2 개선]
- 하위 테이블 필터 적용 시 __subStatus__ 가상 컬럼 주입
- externalFilters에 하위 테이블 조건 분리 처리
2026-03-10 18:51:22 +09:00
SeongHyun Kim ed3707a681 refactor(pop): 타임라인 라벨 범용화 + 상태 값 매핑 동적 배열 전환
설정 패널의 도메인 특화 라벨("공정")을 범용 라벨("하위 데이터/표시명")로
교체하고, 상태 값 매핑을 고정 4키 객체에서 동적 배열(statusMappings)로
전환하여 임의 개수의 워크플로우 상태를 지원한다.
[라벨 범용화]
- "공정 데이터 소스" → "하위 데이터 소스"
- "공정 테이블" → "하위 테이블"
- "공정명" → "표시명"
- "현재 공정 강조" → "현재 항목 강조"
- "전체 공정 모달" → "전체 목록 모달"
- cell-renderers 내 "공정" 텍스트 전부 범용 교체
[상태 값 매핑 동적 배열]
- types.ts: statusValues(고정 4키) → statusMappings(StatusValueMapping[])
  TimelineStatusSemantic("pending"|"active"|"done"), StatusValueMapping 타입 추가
  TimelineProcessStep에 semantic? 필드 추가
- PopCardListV2Config: StatusMappingsEditor 컴포넌트 신규
  (행 추가/삭제 + 시맨틱 Select + 기본값 적용 버튼)
- PopCardListV2Component: resolveStatusMappings() 레거시 자동 변환 함수
  injectProcessFlow 동적 맵 기반 정규화로 전환
- cell-renderers: TIMELINE_STATUS_STYLES → TIMELINE_SEMANTIC_STYLES
  getTimelineStyle() + LEGACY_STATUS_TO_SEMANTIC 레거시 호환
  completedCount/statusLabel/isAcceptable 모두 semantic 기반으로 전환
2026-03-10 17:33:25 +09:00
SeongHyun Kim 599b5a4426 feat(pop): pop-card-list-v2 슬롯 기반 카드 컴포넌트 신규 + 타임라인 범용화 + 액션 인라인 설정
CSS Grid 기반 슬롯 구조의 pop-card-list-v2 컴포넌트를 추가한다.
기존 pop-card-list의 데이터 로딩/필터링/장바구니 로직을 재활용하되,
카드 내부는 12종 셀 타입(text/field/image/badge/button/number-input/
cart-button/package-summary/status-badge/timeline/action-buttons/
footer-status)의 조합으로 자유롭게 구성할 수 있다.
[신규 컴포넌트: pop-card-list-v2]
- PopCardListV2Component: 런타임 렌더링 (데이터 조회 + CSS Grid 카드)
- PopCardListV2Config: 3탭 설정 패널 (데이터/카드 디자인/동작)
- PopCardListV2Preview: 디자이너 미리보기
- cell-renderers: 셀 타입별 독립 렌더러 12종
- migrate: v1 -> v2 설정 마이그레이션 함수
- index: PopComponentRegistry 자동 등록
[타임라인 데이터 소스 범용화]
- TimelineDataSource 인터페이스로 공정 테이블/FK/컬럼/상태값 매핑 설정
- 하드코딩(work_orders+work_order_process) 제거 -> 설정 기반 동적 조회
- injectProcessFlow: 설정 기반 공정 데이터 조회 + __processFlow__ 가상 컬럼 주입
- 상태값 정규화(DB값 -> waiting/accepted/in_progress/completed)
[액션 버튼 인라인 설정]
- actionRules 내 updates 배열로 동작 정의 (별도 DB 테이블 불필요)
- execute-action API 재활용 (targetTable/column/valueType)
- 백엔드 __CURRENT_USER__/__CURRENT_TIME__ 특수값 치환
[디자이너 통합]
- PopComponentType에 "pop-card-list-v2" 추가
- ComponentEditorPanel/ComponentPalette/PopRenderer 등록
- PopDesigner loadLayout: components 존재 확인 null 체크 추가
[기타]
- .gitignore: .gradle/ 추가
2026-03-10 16:56:14 +09:00
kmh ee94de4709 Merge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into mhkim-node 2026-03-10 16:20:57 +09:00
kmh 6d2cdc1782 :Qrge branch 'jskim-node' of http://39.117.244.52:3000/kjs/ERP-node into jskim-node 2026-03-10 16:16:52 +09:00
kjs 3982aabc24 refactor: Enhance unique constraint validation across data operations
- Integrated `TableManagementService` to validate unique constraints before insert, update, and upsert actions in various controllers, including `dataflowExecutionController`, `dynamicFormController`, and `tableManagementController`.
- Improved error handling in `errorHandler` to provide detailed messages indicating which field has a unique constraint violation.
- Updated the `formatPgError` utility to extract and display specific column labels for unique constraint violations, enhancing user feedback.
- Adjusted the table schema retrieval to include company-specific nullable and unique constraints, ensuring accurate representation of database rules.

These changes improve data integrity by preventing duplicate entries and enhance user experience through clearer error messages related to unique constraints.
2026-03-10 16:15:20 +09:00
DDD1542 fa6f76bff1 feat: add next-themes package and update styles
- Added `next-themes` package for theme management.
- Updated various components to use `hsl(var(--foreground))` for color consistency.
- Changed background colors from `bg-white` to `bg-card` in multiple components for better theming support.

Made-with: Cursor
2026-03-10 15:24:05 +09:00
kjs d56e46b17c refactor: Update TabBar and EditModal components for improved styling and validation
- Removed unnecessary box shadow from active tab in TabBar for a cleaner look.
- Updated TabBar background to use the main background color for better consistency.
- Enhanced SaveModal to include validation for required fields, providing user feedback for missing inputs.
- Removed unused master data loading function in EditModal to streamline the component.

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

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

These changes enhance the form validation process, ensuring that users are prompted for all necessary information based on the underlying data structure.
2026-03-10 14:16:02 +09:00
kjs c0eab878a1 refactor: Update table schema retrieval to prioritize company-specific labels
- Modified the `getTableSchema` function in `adminController.ts` to use company-specific column labels when available, falling back to common labels if not.
- Adjusted the SQL query to join `table_type_columns` for both company-specific and common labels, ensuring the correct display order is maintained.
- Removed unnecessary component count display in the `TabsDesignEditor` to streamline the UI.

These changes enhance the accuracy of the table schema representation based on company context and improve the overall user interface by simplifying tab displays.
2026-03-10 11:49:02 +09:00
DDD1542 42673f57a0 [agent-pipeline] pipe-20260310020928-52l9 round-3 2026-03-10 11:27:48 +09:00
DDD1542 d692a3b22f [agent-pipeline] pipe-20260310020928-52l9 round-2 2026-03-10 11:22:37 +09:00
DDD1542 515d5da8cd [agent-pipeline] pipe-20260310020928-52l9 round-1 2026-03-10 11:17:23 +09:00
kjs f565b2d119 fix: Merge form data with group data in EditModal
- Updated the logic in EditModal to merge the existing form data with the first item in groupData if available. This change ensures that relevant data from groupData is incorporated into the form, improving data accuracy and user experience during editing.
2026-03-10 10:53:25 +09:00
DDD1542 b6ec4a4904 feat: 배치 관리 페이지 및 API 개선
- 배치 작업 타입 조회 API 추가 및 오류 처리 개선
- 배치 관리 페이지에서 작업 타입을 객체 형태로 변환하여 설정
- 성공률 계산 로직에서 null 체크 추가
- 누적 실행 횟수, 총 성공 횟수, 총 실패 횟수 계산 시 null 체크 추가

Made-with: Cursor
2026-03-10 03:09:28 +09:00
kjs 52f25030a4 feat: Implement automatic master data loading for detail rows in EditModal
- Added a new function `loadMasterDataForDetailRow` to automatically fetch master table data based on foreign key relationships when editing detail rows.
- Integrated this functionality to merge master data into the form data after it is set, enhancing the user experience by ensuring relevant data is pre-filled.
- Included error handling and logging for the data loading process to improve debugging and user feedback.

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

These changes significantly improve the robustness of the Excel upload process by ensuring data integrity and providing users with clear guidance on category-related issues.
2026-03-09 22:20:54 +09:00
DDD1542 c120492378 [agent-pipeline] pipe-20260309122600-xzeg round-1 2026-03-09 22:07:11 +09:00
DDD1542 159e7768bb [agent-pipeline] pipe-20260309112447-f5iu round-3 2026-03-09 21:04:33 +09:00
DDD1542 e41df3b922 [agent-pipeline] pipe-20260309112447-f5iu round-2 2026-03-09 20:56:39 +09:00
DDD1542 074abfcdb0 [agent-pipeline] pipe-20260309112447-f5iu round-1 2026-03-09 20:28:59 +09:00
kjs c98b2ccb43 feat: Add progress bar functionality to SplitPanelLayoutComponent and configuration options
- Implemented a new progress bar rendering function in the SplitPanelLayoutComponent to visually represent the ratio of child to parent values.
- Enhanced the SortableColumnRow component to support progress column configuration, allowing users to set current and maximum values through a popover interface.
- Updated the AdditionalTabConfigPanel to include options for adding progress columns, improving user experience in managing data visualization.

These changes significantly enhance the functionality and usability of the split panel layout by providing visual progress indicators and configuration options for users.
2026-03-09 18:05:00 +09:00
DDD1542 e4de414dfb [agent-pipeline] pipe-20260309055714-23ry round-3 2026-03-09 17:18:45 +09:00
DDD1542 790592ec76 [agent-pipeline] pipe-20260309055714-23ry round-2 2026-03-09 16:34:53 +09:00
DDD1542 197ddf47cf [agent-pipeline] pipe-20260309055714-23ry round-1 2026-03-09 15:51:42 +09:00
SeongHyun Kim 712f81f6cb Merge branch 'ksh-function-stabilization' into ksh-v2-work
ksh-function-stabilization의 9개 커밋을 ksh-v2-work에 병합한다.
[병합 내용]
- BLOCK O: pop-search 연결 탭 일관성 통합
- BLOCK P: 날짜 입력 타입 구현 + 셀 반응형 레이아웃
- pop-button 설정 패널 UX/UI 전면 개선
- 일괄 채번 + 모달 distinct + 선택 해제
- pop-scanner 바코드/QR 스캐너 컴포넌트
- pop-button 제어 실행 + 연결 데이터 UX
- BLOCK R: PC <-> POP 네비게이션 + Landing
- pop-profile 컴포넌트 (10번째 POP 컴포넌트)
- BLOCK S: 로그인 POP 모드 토글
[충돌 해결 3건 - 모두 양쪽 통합]
- UserDropdown.tsx: HEAD 결재함 + source POP 모드 메뉴 통합
- AppLayout.tsx: HEAD 결재함 + source POP 모드 메뉴 (모바일+사이드바 2곳)
- MenuFormModal.tsx: HEAD menuIcon 필드 + source 주석 제거 통합
2026-03-09 15:36:53 +09:00