12a8290873feat(pop): 설정 패널 아코디언 접기/펼치기 일관성 + sessionStorage 상태 기억 설정 패널을 열 때 섹션이 일부는 펼쳐져 있고 일부는 접혀 있어 일관성이 없던 UX를 개선하고, 사용자가 펼친 섹션을 탭 세션 내에서 기억한다. - useCollapsibleSections 커스텀 훅 생성 (sessionStorage 기반, 초기 모두 접힘) - PopCardListConfig: CollapsibleSection에 sectionKey/sections prop 패턴 적용 - PopFieldConfig: SaveTabContent 5개 고정 섹션 훅 적용, SectionEditor 초기값 접힘으로 변경 - PopDashboardConfig: PageEditor 초기값 접힘으로 변경
SeongHyun Kim
2026-03-05 18:54:29 +0900
7a9a705f19feat(pop-card-list): 포장 요약 바 UI + 카드 레이아웃 flex column 개선 포장 입력 완료 시 카드 하단에 포장 내역 요약을 표시하여 디자이너가 포장 계산 결과를 즉시 확인할 수 있도록 한다. - 카드 하단에 포장 요약 바 추가 (emerald 테마, 포장완료 뱃지) - height(고정) -> minHeight(유동)으로 카드 자연 성장 허용 - gridAutoRows를 minmax(높이, auto)로 변경 (그리드 셀도 성장) - 카드 flex flex-col + 본문 flex-1 overflow-hidden 구조 - 오른쪽 버튼 영역 justify-center -> justify-start (위쪽 정렬)
SeongHyun Kim
2026-03-05 18:34:45 +0900
85bf4882a8fix(pop-card-list): 미입고 formula 필드 입력값 연동 복원 설정 UI에서 formulaRightType 기본값을 "input"으로 표시하지만 DB에 명시적으로 저장하지 않아, 렌더링 시 undefined === "input"이 false가 되어 입력필드 연동이 작동하지 않던 버그를 수정한다. - FieldRow: (field.formulaRightType || "input") === "input"으로 기본값 fallback 추가
SeongHyun Kim
2026-03-05 18:00:17 +0900
b2b0b575dffeat(pop): 버튼 v2 통합 아키텍처 + data-update 연산 확장 (BLOCK M + N) 버튼 컴포넌트의 실행 경로를 프리셋별 파편화에서 단일 작업 목록(task-list) 패턴으로 통합하고, 부분입고 시나리오 지원을 위해 data-update 연산을 확장한다. [BLOCK M: 버튼 v2 통합 아키텍처] - ButtonTask 타입 체계 정의 (10종 작업 타입 + UpdateOperation) - PopButtonConfigV2 + migrateButtonConfig 자동 마이그레이션 - 설정 UI: 빠른 시작 + 외형 + 작업 목록 에디터 - executeTaskList 범용 실행 함수 (데이터 작업 일괄 백엔드 전달) - collect_data 프로토콜에 cartChanges 포함 - 백엔드 tasks 배열 기반 처리 (data-save/update/delete/cart-save) - useCartSync.getChanges() 추출 + 카드리스트 응답 포함 [BLOCK N: data-update 연산 확장] - UpdateOperationType에 multiply, divide, db-conditional 추가 - ButtonTask에 db-conditional 전용 필드 5개 추가 (compareColumn, compareOperator, compareWith, dbThenValue, dbElseValue) - 설정 UI: 드롭다운 3개 옵션 + DB 컬럼 비교 설정 폼 - 백엔드 SQL: multiply, divide(0-division 방어), db-conditional(CASE WHEN 배치 UPDATE) - 기존 add/subtract에 ::numeric 캐스팅 일관 적용
SeongHyun Kim
2026-03-05 17:22:30 +0900
f7bd2f6fa3Merge pull request 'jskim-node' (#402) from jskim-node into mainkjs2026-03-05 13:32:16 +0900
91c9dda6aefeat(pop-field): 숨은 필드 고정값 + Select 데이터 연동(linkedFilters) 구현 입고 확정 시 status/inbound_status가 빈 값으로 저장되는 문제(FIX-3)와 창고내 위치 셀렉트가 전체 위치를 보여주는 문제를 해결한다. [FIX-3: 숨은 필드 고정값] - types.ts: HiddenValueSource에 "static" 추가, staticValue 필드 - PopFieldConfig: 숨은 필드 설정 UI에 "고정값" 모드 추가 - PopFieldComponent: collected_data에 hiddenMappings 포함 - popActionRoutes: INSERT 시 hiddenMappings 값 주입 [Select 데이터 연동 - BLOCK L] - types.ts: SelectLinkedFilter 인터페이스 + FieldSelectSource.linkedFilters - PopFieldConfig: "데이터 연동" 토글 + LinkedFiltersEditor 컴포넌트 (섹션 내 필드 선택 → 필터 컬럼 매핑) - PopFieldComponent: fieldIdToName 맵으로 id-name 변환, SelectFieldInput에서 연동 필드 값 변경 시 동적 필터 재조회, 상위 미선택 시 안내 메시지, 상위 변경 시 하위 자동 초기화
SeongHyun Kim
2026-03-05 12:13:07 +0900
d43f0821edrefactor: Update authentication handling in authRoutes and useAuth hook
feature/v2-renewal
DDD1542
2026-03-05 11:51:05 +0900
366cfcde60feat: Enhance menu copy and screen sync services with new fields
DDD1542
2026-03-04 23:42:43 +0900
5b6b4be73cMerge pull request 'feature/v2-renewal' (#400) from feature/v2-renewal into mainkjs2026-03-04 23:03:02 +0900
b40f6c28dcMerge branch 'main' into feature/v2-renewalkjs2026-03-04 23:02:27 +0900
d31568b1bdfeat: Enhance menu and screen synchronization services with new fields
DDD1542
2026-03-04 22:46:02 +0900
3a3e4e8926Merge 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.
DDD1542
2026-03-04 22:45:40 +0900
818cc80514Merge pull request 'jskim-node' (#399) from jskim-node into mainkjs2026-03-04 21:17:11 +0900
58a62a6d4eMerge branch 'main' into jskim-nodekjs2026-03-04 21:17:04 +0900
a6c0ab5664feat(pop): 입고 확정 시 자동 채번 실행 + 결과 모달 UX + 셀렉트 높이 통일 입고 확정(inbound-confirm) 실행 시 채번 규칙이 설정되어 있어도 inbound_number가 null로 저장되던 문제를 해결한다. [채번 실행 (FIX-1)] - types.ts: SaveMapping에 autoGenMappings 필드 추가 (numberingRuleId, targetColumn, showResultModal) - PopFieldComponent: collect_data 응답에 autoGenMappings 포함하여 백엔드에 채번 규칙 정보 전달 - popActionRoutes: INSERT 전 numberingRuleService.allocateCode() 호출, 생성된 코드를 generatedCodes 배열로 응답에 포함 [결과 모달 UX] - pop-button: showResultModal 토글에 따라 채번 결과 모달 표시 분기 - 모달이 열려 있는 동안 followUpActions(refresh/navigate) 지연하여 사용자가 확인 버튼을 눌러야 후속 액션 실행 [셀렉트 높이 일관성] - SelectTrigger hasCustomHeight에 /\bh-\d/ 패턴 추가하여 className의 h-9 등이 기본 data-size="xs"(h-6)와 충돌하지 않도록 수정 [기타 수정] - SelectFieldInput: Set 기반 dedup으로 React key 중복 방지 - PopFieldConfig: AutoNumberEditor 제거, 채번 규칙을 저장 탭에서 관리 - PopFieldConfig: 전체 채번 규칙 보기 토글 추가 - PopCardListComponent: 장바구니 목록 모드에서 수량 자동 초기화 방지 - PopCardListConfig: 수식 필드 매핑 노출 + 누락 필드 자동 추가
SeongHyun Kim
2026-03-04 19:12:22 +0900
f97edad1eafeat: Enhance screen group deletion functionality with optional numbering rules deletionkjs2026-03-04 18:42:44 +0900
f6a2668bdcfeat: Enhance approval request handling and user management
DDD1542
2026-03-04 18:26:16 +0900
93d9df3e5afeat: Refactor category mapping logic in TableListComponentkjs2026-03-04 16:41:51 +0900
96637a9cb6feat: Enhance audit logging with client IP trackingkjs2026-03-04 15:02:27 +0900
e5abd93600fix(pop): 카테고리 트리 접기/펼치기 상태를 sessionStorage로 유지 설계 화면에 진입했다 돌아올 때 카테고리 트리와 미분류 회사코드 접기/펼치기 상태가 초기화되는 문제를 수정한다. expandedGroups, expandedCompanyCodes를 sessionStorage에 저장하여 같은 탭 세션 내에서 상태가 유지되도록 변경.
SeongHyun Kim
2026-03-04 14:40:48 +0900
cc44f714c6Merge branch 'ksh-v2-work' into main POP 화면 관리 기능 일괄 병합: - POP 컴포넌트 연결/상태변경 규칙/후속 액션 - POP 장바구니(CartList) 모드 + 멀티필드 입력 - POP 화면 복사 기능 (단일 + 카테고리 일괄) - POP 화면관리 UX 개선 (스크롤/접기) - PC/POP 화면 데이터 분리 (excludePop 필터) - .gitignore 미사용 항목 정리 충돌 1건 해결 (screenManagementRoutes.ts import 양쪽 통합)
SeongHyun Kim
2026-03-04 14:27:46 +0900
9b153d85afchore: .gitignore에서 미사용 오케스트레이션 설정 항목 제거 실제 파일이 존재하지 않는 오케스트레이션 관련 gitignore 항목을 정리한다. (orchestrator.mdc, agents/, commands/, hooks.json, hooks/, plans/)
SeongHyun Kim
2026-03-04 14:19:04 +0900
37d93d82b1feat(screen): PC/POP 화면관리 데이터 분리 (excludePop 필터) PC 화면관리에서 POP 전용 화면과 그룹이 함께 표시되어 혼동을 주는 문제를 해결하기 위해 excludePop 필터를 도입한다. [백엔드] - getScreensByCompany: NOT EXISTS 서브쿼리로 screen_layouts_pop에 레이아웃이 있는 화면 제외, 테이블 별칭 sd로 통일 - getScreenGroups: hierarchy_path 기반으로 POP 그룹 제외 (hierarchy_path IS NULL OR NOT LIKE 'POP/%') - 두 API 모두 excludePop 미전달 시 기존 동작 100% 유지 [프론트엔드] - screenApi.getScreens, getScreenGroups에 excludePop 파라미터 추가 - PC 화면관리 페이지, ScreenGroupTreeView, ScreenList에서 excludePop: true 전달
SeongHyun Kim
2026-03-04 14:01:19 +0900
459777d5f0feat: Update screen management state handling for immediate updateskjs2026-03-04 13:53:10 +0900
b4d5367e2bfeat: Integrate audit logging for various operationskjs2026-03-04 13:49:08 +0900
15e22ba401fix(pop): POP 화면 관리 좌측 패널 UX 개선 (스크롤 + 접기/펼치기) - 좌측 패널 스크롤 수정: 부모에 overflow-hidden, ScrollArea에 min-h-0 추가하여 미분류 목록이 많을 때 스크롤바가 정상 작동하도록 개선 - 카테고리 그룹 기본 접힌 상태: loadGroups 자동 확장 로직 제거하여 페이지 진입 시 깔끔한 트리 뷰 제공 - 미분류 회사코드별 접기/펼치기: 최고관리자/COMPANY_7 등 회사코드 그룹마다 토글 헤더 추가, 항목 수 Badge 표시
SeongHyun Kim
2026-03-04 13:18:49 +0900
ce5c2426b5feat(pop): POP 화면 복사 기능 구현 (단일 화면 + 카테고리 일괄 복사) 최고관리자의 POP 화면을 다른 회사로 복사하는 기능 추가. 화면 단위 복사와 카테고리(그룹) 단위 일괄 복사를 모두 지원하며, 화면 간 참조(cartScreenId, sourceScreenId 등)를 자동 치환하고 카테고리 구조까지 대상 회사에 재생성한다. [백엔드] - analyzePopScreenLinks: POP 레이아웃 내 다른 화면 참조 스캔 - deployPopScreens: screen_definitions + screen_layouts_pop 복사, screenId 참조 치환, numberingRuleId 초기화, 그룹 구조 복사 - POP 그룹 조회 쿼리 개선 (screen_layouts_pop JOIN으로 실제 POP 화면만 카운트) - ensurePopRootGroup 최고관리자 전용으로 변경 [프론트엔드] - PopDeployModal: 단일 화면/카테고리 일괄 복사 모달 (대상 회사 선택, 연결 화면 감지, 카테고리 트리 미리보기) - PopCategoryTree: 그룹 컨텍스트 메뉴에 '카테고리 복사' 추가, 하위 그룹 화면까지 재귀 수집 - PopScreenSettingModal: UI 간소화 및 화면명 저장 기능 보완 - screenApi: analyzePopScreenLinks, deployPopScreens 클라이언트 함수 추가
SeongHyun Kim
2026-03-04 11:41:31 +0900
6c9e35e8b2fix: POP 뷰어 화면 하단 회색 영역 제거 스크롤 컨테이너(overflow-auto)에 배경색이 없어 부모의 bg-gray-100이 컨텐츠 하단 빈 공간에 노출되는 문제 수정. 스크롤 컨테이너에 직접 bg-white를 적용하여 자식 높이 계산과 무관하게 흰색 배경이 유지되도록 변경. 프리뷰 모드에서는 디바이스 프레임 효과를 위해 기존 회색 배경 유지.
SeongHyun Kim
2026-03-03 18:57:59 +0900
94a541fc9cfix(pop-cart): cart_type 빈 문자열 저장 버그 수정 ("pop" 복원) - cartItemToDbRecord에서 cart_type: "" -> "pop"으로 복원 - loadFromDb 필터에 cart_type: "pop" 조건 추가하여 POP 데이터만 로드 - 리팩토링(9aaf0575) 중 누락된 값 복원
SeongHyun Kim
2026-03-03 17:46:50 +0900
d7ef26d679Merge 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.
DDD1542
2026-03-03 17:13:22 +0900
2e8300bbf5feat(pop): 후속 액션 화면 이동 구현 + 입고확정 버튼 선택 상태 피드백 - PopViewerWithModals에 __pop_navigate__ 이벤트 구독 추가 - targetScreenId가 있으면 해당 POP 화면으로 이동 - "back"이면 router.back(), params는 쿼리스트링 전달 - 입고확정 버튼에 카드리스트 선택 상태 시각 피드백 - 미선택: 기본 아이콘/색상 - 선택됨: emerald-600 배경 + 선택 개수 뱃지 - selected_items connectionMeta category를 "event"로 변경하여 자동 매칭 대상 포함
SeongHyun Kim
2026-03-03 17:13:01 +0900