Commit Graph

99 Commits

Author SHA1 Message Date
kjs 658211b9d1 feat: 화면 복사 기능 개선 및 버튼 모달 설정 수정
## 주요 변경사항

### 1. 화면 복사 기능 강화
- 최고 관리자가 다른 회사로 화면 복사 가능하도록 개선
- 메인 화면과 연결된 모달 화면 자동 감지 및 일괄 복사
- 복사 시 버튼의 targetScreenId 자동 업데이트
- 일괄 이름 변경 기능 추가 (복사본 텍스트 제거)
- 중복 화면명 체크 기능 추가

#### 백엔드 (screenManagementService.ts)
- generateMultipleScreenCodes: 여러 화면 코드 일괄 생성 (Advisory Lock 사용)
- detectLinkedModalScreens: edit 액션도 모달로 감지하도록 개선
- checkDuplicateScreenName: 중복 화면명 체크 API 추가
- copyScreenWithModals: 메인+모달 일괄 복사 및 버튼 업데이트
- updateButtonTargetScreenIds: 복사된 모달로 버튼 targetScreenId 업데이트
- updated_date 컬럼 제거 (screen_layouts 테이블에 존재하지 않음)

#### 프론트엔드 (CopyScreenModal.tsx)
- 회사 선택 UI 추가 (최고 관리자 전용)
- 연결된 모달 화면 자동 감지 및 표시
- 일괄 이름 변경 기능 (텍스트 제거/추가)
- 실시간 미리보기
- 중복 화면명 체크

### 2. 버튼 설정 모달 화면 선택 개선
- 편집 중인 화면의 company_code 기준으로 화면 목록 조회
- 최고 관리자가 다른 회사 화면 편집 시 해당 회사의 모달 화면만 표시
- targetScreenId 문자열/숫자 타입 불일치 수정

#### 백엔드 (screenManagementController.ts)
- getScreens API에 companyCode 쿼리 파라미터 추가
- 최고 관리자는 다른 회사의 화면 목록 조회 가능

#### 프론트엔드
- ButtonConfigPanel: currentScreenCompanyCode props 추가
- DetailSettingsPanel: currentScreenCompanyCode 전달
- UnifiedPropertiesPanel: currentScreenCompanyCode 전달
- ScreenDesigner: selectedScreen.companyCode 전달
- targetScreenId 비교 시 parseInt 처리 (문자열→숫자)

### 3. 카테고리 메뉴별 컬럼 분리 기능
- 메뉴별로 카테고리 컬럼을 독립적으로 관리
- 카테고리 컬럼 추가/삭제 시 메뉴 스코프 적용

## 수정된 파일
- backend-node/src/services/screenManagementService.ts
- backend-node/src/controllers/screenManagementController.ts
- backend-node/src/routes/screenManagementRoutes.ts
- frontend/components/screen/CopyScreenModal.tsx
- frontend/components/screen/config-panels/ButtonConfigPanel.tsx
- frontend/components/screen/panels/DetailSettingsPanel.tsx
- frontend/components/screen/panels/UnifiedPropertiesPanel.tsx
- frontend/components/screen/ScreenDesigner.tsx
- frontend/lib/api/screen.ts
2025-11-13 12:17:10 +09:00
kjs c6941bc41f feat: 테이블 검색 필터 위젯 구현 완료
- TableOptionsContext 기반 테이블 자동 감지 시스템 구현
- 독립 위젯으로 드래그앤드롭 배치 가능
- 3가지 기능: 컬럼 가시성, 필터 설정, 그룹 설정
- FlowWidget, TableList, SplitPanel 등 모든 테이블 컴포넌트 지원
- 유틸리티 카테고리에 등록 (1920×80px)
- 위젯 크기 제어 가이드 룰 파일에 추가
2025-11-12 10:48:24 +09:00
kjs 6534d03ecd feat: 화면 편집기에서 메뉴 기반 데이터 스코프 적용
- 백엔드: screenManagementService에 getMenuByScreen 함수 추가
- 백엔드: GET /api/screen-management/screens/:id/menu 엔드포인트 추가
- 프론트엔드: screenApi.getScreenMenu() 함수 추가
- ScreenDesigner: 화면 로드 시 menu_objid 자동 조회
- ScreenDesigner: menuObjid를 RealtimePreview와 UnifiedPropertiesPanel에 전달
- UnifiedPropertiesPanel: menuObjid를 DynamicComponentConfigPanel에 전달

이로써 화면 편집기에서 코드/카테고리/채번규칙이 해당 화면이 할당된 메뉴 기준으로 필터링됨
2025-11-11 16:28:17 +09:00
kjs 668b45d4ea feat: 채번규칙 메뉴 스코프 전환 완료
 주요 변경사항:
- 백엔드: menuService.ts 추가 (형제 메뉴 조회 유틸리티)
- 백엔드: numberingRuleService.getAvailableRulesForMenu() 메뉴 스코프 적용
- 백엔드: tableCategoryValueService 메뉴 스코프 준비 (menuObjid 파라미터 추가)
- 프론트엔드: TextInputConfigPanel에 부모 메뉴 선택 UI 추가
- 프론트엔드: 메뉴별 채번규칙 필터링 (형제 메뉴 공유)

🔧 기술 세부사항:
- getSiblingMenuObjids(): 같은 부모를 가진 형제 메뉴 OBJID 조회
- 채번규칙 우선순위: menu (형제) > table > global
- 사용자 메뉴(menu_type='1') 레벨 2만 부모 메뉴로 선택 가능

📝 다음 단계:
- 카테고리 컴포넌트도 메뉴 스코프로 전환 예정
2025-11-11 14:32:00 +09:00
kjs 2148e8e019 fix: 너비 입력 시 완전 자유 입력 허용 (로컬 상태 사용)
- 문제: 너비 입력 시 onChange에서 즉시 업데이트되어 30에서 3을 지우기 어려움
- 해결:
  1. localWidth 상태 추가
  2. onChange: 로컬 상태만 업데이트 (완전 자유 입력)
  3. onBlur/Enter: 실제 업데이트 + 10px 단위 스냅
  4. useEffect로 컴포넌트 변경 시 localWidth 동기화
- 영향:
  - 30 입력 시 3, 0 모두 자유롭게 지우고 입력 가능
  - 포커스 아웃 시에만 10px 단위로 정렬
2025-11-10 15:54:07 +09:00
kjs 5d374f902a fix: 너비/높이 입력 시 자유 입력 가능하도록 수정 및 포커스 아웃 시 10px 단위 스냅
- 문제: 너비/높이 입력 시 즉시 10px 단위로 스냅되어 자유 입력 불가
- 해결:
  1. 너비: onChange에서는 입력값 그대로 반영, onBlur에서 10px 단위로 스냅
  2. 높이: 로컬 상태로 자유 입력 허용, onBlur/Enter 시 10px 단위로 스냅
  3. step을 10에서 1로 변경하여 자유 입력 가능
- 영향:
  - 입력 중에는 원하는 값 입력 가능
  - 입력 완료 시(포커스 아웃 또는 Enter) 자동으로 10px 단위로 정렬
2025-11-10 15:51:37 +09:00
kjs 2d832c56b6 feat: 차지 컬럼 수를 픽셀 기반 너비 입력으로 변경 (10px 단위) 2025-11-10 15:17:33 +09:00
kjs d7e598435c fix: UnifiedPropertiesPanel에서도 컬럼 수/간격/여백 설정 제거 2025-11-10 15:06:46 +09:00
kjs 0af0b53638 fix: 컬럼 수, 간격, 여백 설정 완전 제거 (10px 고정) 2025-11-10 15:05:34 +09:00
kjs c4290f2d0e refactor: 격자 시스템을 10px 단위로 단순화
- 복잡한 컬럼 시스템 제거
- 웹타입별 고정 픽셀 너비 사용 (10px 단위)
- 격자 설정 패널 단순화 (컬럼 수 설정 제거)
- 간격/여백 조정을 10px 단위로 변경
- 더 직관적이고 예측 가능한 레이아웃 시스템
2025-11-10 14:41:58 +09:00
kjs a868c5c413 feat: 테이블 탭에서 시스템 컬럼 5개 숨김 처리
- id, created_date, updated_date, writer, company_code 컬럼 필터링
- 대소문자 구분 없이 시스템 컬럼 제외
- 화면 편집기 테이블 탭에서 비즈니스 컬럼만 표시
2025-11-10 14:24:16 +09:00
kjs 15f21a1142 revert: e27845a 커밋의 변경사항 되돌림 - 화면 레이아웃 문제 수정 2025-11-10 14:21:29 +09:00
kjs e27845a82f feat: 테이블 탭 드래그앤드롭 개선 및 AI-개발자 협업 규칙 수립
주요 변경사항:
- 드래그앤드롭 컬럼의 라벨 숨김 및 placeholder로 라벨명 표시
- 기본 높이 30px로 변경
- 5개 시스템 컬럼(id, created_date, updated_date, writer, company_code) 숨김
- AI-개발자 협업 작업 수칙 문서 작성 및 .cursorrules에 통합

파일 변경:
- frontend/components/screen/ScreenDesigner.tsx
  * getDefaultHeight(): 기본 높이를 30px로 변경
  * handleDrop(): labelDisplay false, placeholder 추가
- frontend/components/screen/panels/TablesPanel.tsx
  * hiddenColumns Set으로 시스템 컬럼 필터링
- .cursor/rules/ai-developer-collaboration-rules.mdc (신규)
  * 확인 우선, 한 번에 하나, 철저한 마무리 원칙
  * 데이터베이스 검증, 코드 수정, 테스트, 커뮤니케이션 규칙
- .cursorrules
  * 필수 확인 규칙 섹션 추가
  * 모든 작업 시작/완료 시 협업 규칙 확인 강제화
2025-11-07 17:12:01 +09:00
kjs 4294fbf608 feat: 채번 규칙 테이블 기반 자동 필터링 구현
- 채번 규칙 scope_type을 table로 단순화
- 화면의 테이블명을 자동으로 감지하여 채번 규칙 필터링
- TextInputConfigPanel에 screenTableName prop 추가
- getAvailableNumberingRulesForScreen API로 테이블 기반 조회
- NumberingRuleDesigner에서 자동으로 테이블명 설정
- webTypeConfigConverter 유틸리티 추가 (기존 화면 호환성)
- AutoGenerationConfig 타입 개선 (enabled, options.numberingRuleId)
- 채번 규칙 선택 UI에서 ID 제거, 설명 추가
- 불필요한 console.log 제거

Backend:
- numberingRuleService: 테이블 기반 필터링 로직 구현
- numberingRuleController: available-for-screen 엔드포인트 수정

Frontend:
- TextInputConfigPanel: 테이블명 기반 채번 규칙 로드
- NumberingRuleDesigner: 적용 범위 UI 제거, 테이블명 자동 설정
- ScreenDesigner: webTypeConfig → autoGeneration 변환 로직 통합
- DetailSettingsPanel: autoGeneration 속성 매핑 개선
2025-11-07 14:27:07 +09:00
kjs 5b79bfb19d 화면 컴포넌트 위치문제 수정 2025-11-07 11:36:58 +09:00
kjs 44def0979c fix: 화면 편집기 높이 입력 필드 1px 단위 조절 가능하도록 수정
- 문제: 높이 입력 시 10 단위로만 입력 가능 (예: 1080 입력 불가)
- 원인: 격자 스냅 로직이 onChange마다 높이를 10/20 단위로 강제 반올림
- 해결:
  1. 모든 number input 필드에 step="1" 추가
  2. ScreenDesigner.tsx의 격자 스냅 로직 수정 (높이 스냅 제거)
  3. UnifiedPropertiesPanel.tsx에 로컬 상태 추가하여 입력 중 스냅 방지
  4. onBlur/Enter 시에만 실제 값 업데이트

수정 파일:
- frontend/components/screen/ScreenDesigner.tsx
- frontend/components/screen/panels/UnifiedPropertiesPanel.tsx
- frontend/components/screen/panels/PropertiesPanel.tsx
- frontend/components/screen/panels/ResolutionPanel.tsx
- frontend/components/screen/panels/RowSettingsPanel.tsx
- frontend/components/screen/panels/webtype-configs/NumberTypeConfigPanel.tsx
- frontend/components/screen/panels/webtype-configs/TextTypeConfigPanel.tsx
2025-11-06 10:37:20 +09:00
kjs 573a300a4a 카테고리 기능 구현 2025-11-05 15:23:57 +09:00
kjs 10c7c9a0b1 컴포넌트 높이 조절기능 2025-11-04 17:44:10 +09:00
kjs 198f678b68 채번 자동생성기능 2025-11-04 17:35:02 +09:00
kjs b8e30c9557 컬럼 제한 삭제 2025-11-04 16:21:24 +09:00
kjs 37796ecc9d fix: FileComponentConfigPanel에 cn 함수 import 추가 2025-11-04 16:18:12 +09:00
kjs 6901baab8e feat(screen-designer): 그리드 컬럼 시스템 개선 및 컴포넌트 너비 렌더링 수정
주요 변경사항:
- 격자 설정을 편집 탭에서 항상 표시 (해상도 설정 하단)
- 그리드 컬럼 수 동적 조정 가능 (1-24)
- 컴포넌트 생성 시 현재 그리드 컬럼 수 기반 자동 계산
- 컴포넌트 너비가 설정한 컬럼 수대로 정확히 표시되도록 수정

수정된 파일:
- ScreenDesigner: 컴포넌트 드롭 시 gridColumns와 style.width 동적 계산
- UnifiedPropertiesPanel: 격자 설정 UI 통합, 차지 컬럼 수 설정 시 width 자동 계산
- RealtimePreviewDynamic: getWidth 우선순위 수정, DOM 크기 디버깅 로그 추가
- 8개 컴포넌트: componentStyle.width를 항상 100%로 고정
  * ButtonPrimaryComponent
  * TextInputComponent
  * NumberInputComponent
  * TextareaBasicComponent
  * DateInputComponent
  * TableListComponent
  * CardDisplayComponent

문제 해결:
- 컴포넌트 내부에서 component.style.width를 재사용하여 이중 축소 발생
- 해결: 부모 컨테이너(RealtimePreviewDynamic)가 width 제어, 컴포넌트는 항상 100%
- 결과: 파란 테두리와 내부 콘텐츠가 동일한 크기로 정확히 표시
2025-11-04 16:17:19 +09:00
dohyeons 39080dff59 autofill 기능 구현 2025-11-04 14:33:39 +09:00
kjs 4010273d67 feat: 테이블 테두리 및 라운드 제거, 검색 필터 제목 제거
- 모든 테이블 컴포넌트의 외곽 테두리(border) 제거
- 테이블 컨테이너의 라운드(rounded-lg) 제거
- 테이블 행 구분선(border-b)은 유지하여 데이터 구분
- FlowWidget과 TableListComponent에 동일한 스타일 적용
- 검색 필터 영역의 회색 배경(bg-muted/30) 제거
- 검색 필터 제목 제거
- AdvancedSearchFilters 컴포넌트의 '검색 필터' 제목 제거
2025-10-30 15:39:39 +09:00
kjs 556354219a 스타일 수정중 2025-10-30 12:03:50 +09:00
kjs 743ae6dbf1 패널 정리 중간 커밋 2025-10-28 17:33:03 +09:00
kjs b5605d93da 테이블 컬럼 검색 기능 2025-10-28 16:26:55 +09:00
kjs 711e051b1c 속성창 줄이기 2025-10-28 16:16:00 +09:00
kjs 5fdefffd26 로그시스템 개선 2025-10-27 11:11:08 +09:00
kjs d22369a050 버튼 자동정렬기능 구현 2025-10-24 10:37:02 +09:00
kjs d9088816a7 플로우 단계별 버튼 표시 설정 2025-10-23 18:23:01 +09:00
kjs 70d2c96c80 컴포넌트 잘림현상 수정 2025-10-23 15:06:00 +09:00
kjs b104cd94f2 텍스트 설정 초기화 되는 오류 수정 2025-10-23 13:24:37 +09:00
kjs b66b7c66f0 제어관리 로그 노드 제거 2025-10-23 11:31:31 +09:00
kjs e934cc945b 테이블 컬럼 중복 삽입 안되게 수정 2025-10-23 10:07:55 +09:00
kjs 2dd96f5a74 화면관리ui수정 2025-10-22 17:19:47 +09:00
leeheejin 10d112bd69 버튼 문제 해결 2025-10-21 17:32:54 +09:00
kjs f9c171c513 플로우 구현 2025-10-20 10:55:33 +09:00
kjs 2e916678fa ui개선 2025-10-17 16:21:08 +09:00
kjs d7a845ad9f 반응형 레이아웃 기능 구현 2025-10-16 18:16:57 +09:00
kjs a0dde51109 분할 패널 및 반복 필드 그룹 컴포넌트 2025-10-16 15:05:24 +09:00
kjs 7686158a01 분할레이아웃 2025-10-15 17:25:38 +09:00
kjs 3d242c1c8e 화면관리 ui개선 및 파일업로드 설정 2025-10-15 13:30:11 +09:00
kjs 4cb967fea6 패널들 좌측으로 이동 2025-10-15 10:24:33 +09:00
kjs a7de47e7ea 세부설정 2025-10-14 17:40:51 +09:00
kjs a2c3737f7a 세부타입설정 2025-10-14 16:45:30 +09:00
kjs 8bc8df4eb8 컴포넌트 너비 설정 2025-10-14 13:27:02 +09:00
kjs 55f52ed1b5 컬럼 세부 타입 설정 2025-10-14 11:48:04 +09:00
kjs e8123932ba 화면관리 12컬럼 중간 커밋 2025-10-13 18:28:03 +09:00
kjs 1760703150 Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node into feature/screen-management 2025-10-08 09:45:59 +09:00