Commit Graph

2959 Commits

Author SHA1 Message Date
leeheejin fc99beb851 TypeScript 오류 수정 및 Merge conflict 해결
- dataflowControlService.ts: condition.field non-null assertion 추가
- batchExternalDbService.ts: connection 속성들 non-null assertion 추가, error 타입 unknown으로 변경
- multiConnectionQueryService.ts: connection, schemaResult.data non-null assertion 추가
- dataflowExecutionController.ts: 도달할 수 없는 코드 제거
- TableListComponent.tsx, SingleTableWithSticky.tsx: merge conflict 마커 제거
- 모든 TypeScript 컴파일 오류 해결 완료
2025-10-01 09:58:38 +09:00
leeheejin d5c354c521 백엔드 TypeScript 오류 수정
- dataflowControlService.ts의 TypeScript 오류 해결
- condition.field에 non-null assertion (!) 추가
- catch 블록의 error 타입을 unknown으로 명시적 지정
- 서버 정상 실행을 위한 필수 수정
2025-09-30 18:45:17 +09:00
leeheejin 990d8123b8 프론트엔드 UI/UX 개선사항 복구 및 테이블 스타일링 통일
- 테이블 헤더 스타일링 개선 (더 진한 배경색, 오렌지 호버 효과)
- 파일첨부 컴포넌트 개선 (뚝뚝 잘리는 문제 해결, 패딩/아이콘 크기 조정)
- 카드 디스플레이 스타일링 개선 (명확한 테두리, 오렌지 호버 효과)
- 라벨 표시 기능 수정 (드롭다운 라벨링 문제, 체크박스 풀리는 문제 해결)
- 패널 및 레이아웃 개선 (카드 간격 통일, 주황색 영역 추가)
- CSS 통일성 작업 (Select 컴포넌트 너비 w-48로 조정)
- 정렬 화살표 표시 조건 수정 (정렬된 컬럼에서만 화살표 표시)
- 테이블 스타일링 통일 (SingleTableWithSticky, TableListComponent, InteractiveDataTable)
2025-09-30 18:43:26 +09:00
leeheejin 8c437270a8 표 css 통일, 라벨링 2025-09-30 18:42:33 +09:00
kjs 3c06d35374 phase 2.3 테이블 및 컬럼 동적생성기능 변경 2025-09-30 18:28:54 +09:00
kjs c8c05f1c0d phase 2.2 테이블 타입관리 쿼리로 변경 완료 2025-09-30 18:01:57 +09:00
kjs f9f31c7bd3 phase 2 변환계획 작성 2025-09-30 17:40:21 +09:00
kjs 1a640850c5 Phase 2 ScreenManagementService 전환 완료 2025-09-30 17:19:05 +09:00
hyeonsu f39d86a269 Merge pull request '공통코드관리 수정 시 에러 해결' (#80) from fix/commcode into main
Reviewed-on: http://39.117.244.52:3000/kjs/ERP-node/pulls/80
2025-09-30 16:48:32 +09:00
dohyeons 51d9c45d9e 공통코드관리 수정 시 에러 해결 2025-09-30 16:48:07 +09:00
kjs 4637680de0 feat: Phase 2.1 추가 Prisma 호출 전환 (25+/46)
추가 전환 완료:

 조회 및 관리 함수들:
- checkScreenDependencies() - 화면 의존성 확인 (JOIN 쿼리)
- cleanupDeletedScreenMenuAssignments() - 메뉴 할당 정리
- permanentDeleteScreen() - 영구 삭제 (트랜잭션)
- getDeletedScreens() - 휴지통 목록 조회 (페이징 + 테이블 레이블)

📊 진행률: 25+/46 (54%+)
🎯 다음: $queryRaw 함수들 전환 (테이블/컬럼 정보 조회)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 16:46:36 +09:00
kjs 311811bc0a feat: Phase 2.1 Stage 4 복잡한 기능 전환 (트랜잭션) - 일부 완료
Stage 4: 트랜잭션 기반 복잡한 기능 Raw Query 전환

 전환 완료 (3개 트랜잭션 함수):

**트랜잭션 함수들:**
1. copyScreen() - 화면 복사 (화면 + 레이아웃 전체 복사)
   - 원본 화면 조회 (SELECT)
   - 화면 코드 중복 체크 (SELECT)
   - 새 화면 생성 (INSERT RETURNING)
   - 원본 레이아웃 조회 (SELECT with ORDER BY)
   - ID 매핑 후 레이아웃 복사 (반복 INSERT)
   - PoolClient 기반 트랜잭션 사용

2. restoreScreen() - 삭제된 화면 복원
   - 화면 코드 중복 체크 (SELECT with multiple conditions)
   - 화면 복원 (UPDATE with NULL 설정)
   - 메뉴 할당 활성화 (UPDATE)
   - 트랜잭션으로 원자성 보장

3. bulkDeletePermanently() - 일괄 영구 삭제
   - 삭제 대상 조회 (SELECT with dynamic WHERE)
   - 레이아웃 삭제 (DELETE)
   - 메뉴 할당 삭제 (DELETE)
   - 화면 정의 삭제 (DELETE)
   - 각 화면마다 개별 트랜잭션으로 롤백 격리

📊 진행률: 20+/46 (43%+)
🎯 다음: 나머지 Prisma 호출 전환 (조회, UPSERT 등)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 16:42:21 +09:00
kjs c25405b4de docs: Phase 2.1 진행률 업데이트 (17/46 완료)
문서 업데이트:
- 현재 진행률 17/46 (37.0%) 추가
- Stage 1-3 완료 체크 ()
- Stage 4 진행 중 표시 (🔄)
- 커밋 해시 추가 (13c1bc4, 0e8d1d4, 67dced7, 74351e8)

완료된 작업:
 Stage 1: 기본 CRUD (8개 함수)
 Stage 2: 레이아웃 관리 (2개 함수)
 Stage 3: 템플릿 & 메뉴 관리 (5개 함수)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 16:35:41 +09:00
kjs 74351e816b feat: Phase 2.1 Stage 3 complete - 템플릿 & 메뉴 관리 전환 (17/46)
Stage 3 완료: 템플릿 & 메뉴 관리 Raw Query 전환

 전환 완료 (5개 Prisma 호출):

**템플릿 관리 (2개):**
11. getTemplatesByCompany() - 템플릿 목록 조회 (동적 WHERE)
12. createTemplate() - 템플릿 생성 (JSON layout_data)

**메뉴 할당 관리 (3개):**
13. assignScreenToMenu() - 메뉴 할당 (중복 확인 + INSERT)
14. getScreensByMenu() - 메뉴별 화면 조회 (JOIN screen_definitions)
15. unassignScreenFromMenu() - 메뉴 할당 해제 (DELETE)

📊 진행률: 17/46 (37.0%)
🎯 다음: Stage 4 복잡한 기능 (트랜잭션, Raw Query 개선)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 16:33:27 +09:00
kjs 67dced74bd feat: Phase 2.1 Stage 2 complete - 레이아웃 관리 전환 (12/46)
Stage 2 완료: 레이아웃 관리 Raw Query 전환

 전환 완료 (4개 Prisma 호출):
9. saveLayout() - 레이아웃 저장
   - 권한 확인 쿼리
   - 기존 레이아웃 삭제 (DELETE)
   - 메타데이터 INSERT (격자 설정, 해상도)
   - 컴포넌트 루프 INSERT (JSON properties)

10. getLayout() - 레이아웃 조회
   - 권한 확인 쿼리
   - 레이아웃 조회 (ORDER BY display_order)

📊 진행률: 12/46 (26.1%)
🎯 다음: Stage 3 템플릿 & 메뉴 관리 전환

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 16:29:59 +09:00
kjs 0e8d1d496d feat: Phase 2.1 Stage 1 추가 조회 함수 전환 (8/46)
추가 기본 조회 함수 Raw Query 전환

 추가 전환 완료 (2개):
7. getScreens() - 전체 화면 목록 조회 (동적 WHERE)
8. getScreen() - 회사 코드 필터링 포함 조회

📊 진행률: 8/46 (17.4%)
🎯 다음: Stage 2 레이아웃 관리 전환

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 16:27:17 +09:00
kjs 13c1bc48de feat: Phase 2.1 Stage 1 complete - Basic CRUD converted (6/46)
Stage 1 완료: 기본 CRUD Raw Query 전환

 전환 완료 (6개):
1. createScreen() - 화면 생성 (중복확인 + INSERT)
2. getScreensByCompany() - 목록 조회 (페이징 + 동적 WHERE)
3. getScreenById() - ID로 조회
4. updateScreen() - 화면 수정 (권한확인 + UPDATE)
5. deleteScreen() - 소프트 삭제 (트랜잭션)
6. getScreenByCode() - 코드로 조회

📊 진행률: 6/46 (13%)
🎯 다음: Stage 1 나머지 조회 함수 (getScreens, getAllScreens)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 16:25:27 +09:00
kjs 95c9811c3b feat: Phase 2.1 - Start ScreenManagementService Raw Query migration (2/46)
1단계 기본 CRUD 전환 시작 (2/6 완료)

 전환 완료 (2개):
1. createScreen() - 화면 생성
   - 중복 확인: findFirst → Raw Query SELECT
   - 생성: create → Raw Query INSERT RETURNING
   - 파라미터 바인딩 적용

2. getScreensByCompany() - 화면 목록 조회 (페이징)
   - 동적 WHERE 절 생성
   - Promise.all로 병렬 조회 (목록 + 총개수)
   - table_labels IN 쿼리 전환

🔧 주요 변경사항:
- Prisma import 제거 → query, transaction import
- 파라미터 바인딩으로 SQL Injection 방지
- COUNT 결과 문자열 → 숫자 변환

📊 진행률:
- 전환 완료: 2/46 (4.3%)
- 남은 작업: 44개 Prisma 호출

🎯 다음 작업:
- getScreenByCode()
- getScreenById()
- updateScreen()
- deleteScreen()

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 16:20:09 +09:00
kjs ba10e7a12b docs: Add Phase 2.1 ScreenManagementService migration plan
Phase 2 시작: ScreenManagementService 상세 분석 완료

📊 분석 결과:
- 총 46개 Prisma 호출 (Phase 2 최대)
- 파일: 1,805 라인
- 복잡도: 매우 높음

🔍 Prisma 사용:
- 화면 정의: 18개
- 레이아웃: 4개
- 템플릿: 2개
- 메뉴 할당: 5개
- 트랜잭션: 3개

📋 4단계 전환 계획:
1. 기본 CRUD (6함수)
2. 레이아웃 (3함수)
3. 템플릿&메뉴 (6함수)
4. 복잡한 기능 (4함수)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 16:07:31 +09:00
kjs 824e5f4827 feat: Complete Phase 1.5 - AuthService Raw Query migration
Phase 1.5 완료: 인증 서비스 Raw Query 전환 및 테스트 완료

 AuthService 전환 완료 (5개 Prisma 호출 제거):
- loginPwdCheck(): Raw Query로 사용자 비밀번호 조회
- insertLoginAccessLog(): Raw Query로 로그인 로그 기록
- getUserInfo(): Raw Query로 사용자/권한/회사 정보 조회
  - authority_sub_user ↔ authority_master JOIN (master_objid ↔ objid)
  - 3개 쿼리로 분리 (사용자, 권한, 회사)
- processLogin(): 전체 로그인 플로우 통합
- processLogout(): 로그아웃 로그 기록

🧪 테스트 완료:
- 단위 테스트: 30개 테스트 모두 통과 
  - 로그인 검증 (6개)
  - 사용자 정보 조회 (5개)
  - 로그인 로그 기록 (4개)
  - 전체 로그인 프로세스 (5개)
  - 로그아웃 (2개)
  - 토큰 검증 (3개)
  - Raw Query 전환 검증 (3개)
  - 성능 테스트 (2개)
- 통합 테스트: 작성 완료 (auth.integration.test.ts)
  - 로그인 → 토큰 발급 → 인증 → 로그아웃 플로우

🔧 주요 변경사항:
- Prisma import 제거 → Raw Query (query from db.ts)
- authority 테이블 JOIN 수정 (auth_code → master_objid/objid)
- 파라미터 바인딩으로 SQL Injection 방지
- 타입 안전성 유지 (TypeScript Generic 사용)

📊 성능:
- 로그인 프로세스: < 1초
- 사용자 정보 조회: < 500ms
- 모든 테스트 실행 시간: 2.016초

🎯 다음 단계:
- Phase 2: 핵심 서비스 전환 (ScreenManagement, TableManagement 등)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 15:59:32 +09:00
hyeonsu 38f0f865df Merge pull request '프로필 이미지 삭제 직후 렌더링이 안되는 문제 해결' (#79) from fix/profileImage into main
Reviewed-on: http://39.117.244.52:3000/kjs/ERP-node/pulls/79
2025-09-30 15:46:04 +09:00
dohyeons 6da8d14845 프로필 이미지 삭제 직후 렌더링이 안되는 문제 해결 2025-09-30 15:45:21 +09:00
kjs e837ccc1d1 docs: Add Phase 1.5 for Auth and Admin service migration
Phase 2 진행 전 인증/관리자 시스템 우선 전환 계획 수립

🔐 Phase 1.5 추가:
- AuthService 우선 전환 (5개 Prisma 호출)
- AdminService 확인 (이미 Raw Query 사용)
- AdminController 전환 (28개 Prisma 호출)

📋 변경 사항:
- Phase 1.5를 Phase 2보다 우선 실행하도록 계획 변경
- 인증/관리자 시스템을 먼저 안정화한 후 핵심 서비스 전환
- 로그인 → 인증 → API 호출 전체 플로우 검증

📚 새 문서:
- PHASE1.5_AUTH_MIGRATION_PLAN.md (상세 전환 계획)
  - AuthService 전환 방법 및 코드 예시
  - 단위 테스트 및 통합 테스트 계획
  - 완료 체크리스트

🎯 목표:
- 전체 시스템의 안정적인 인증 기반 구축
- Phase 2 이후 모든 서비스가 안전하게 인증 시스템 사용

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 15:40:18 +09:00
kjs 50d5305b93 클로드md 안올리게 설정 2025-09-30 15:30:38 +09:00
kjs bcc79b185c 페이즈1 완료 2025-09-30 15:29:56 +09:00
kjs ed78ef184d feat: Complete Phase 1 of Prisma to Raw Query migration
Phase 1 완료: Raw Query 기반 데이터베이스 아키텍처 구축

 구현 완료 내용:
- DatabaseManager 클래스 구현 (연결 풀, 트랜잭션 관리)
- QueryBuilder 유틸리티 (동적 쿼리 생성)
- 타입 정의 및 검증 로직 (database.ts, databaseValidator.ts)
- 단위 테스트 작성 및 통과

🔧 전환 완료 서비스:
- externalCallConfigService.ts (Raw Query 전환)
- multiConnectionQueryService.ts (Raw Query 전환)

📚 문서:
- PHASE1_USAGE_GUIDE.md (사용 가이드)
- DETAILED_FILE_MIGRATION_PLAN.md (상세 계획)
- PRISMA_TO_RAW_QUERY_MIGRATION_PLAN.md (Phase 1 완료 표시)

🧪 테스트:
- database.test.ts (핵심 기능 테스트)
- 모든 테스트 통과 확인

이제 Phase 2 (핵심 서비스 전환)로 진행 가능

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-30 15:29:20 +09:00
hjjeong cf747b5fb3 Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node into feature/dashboard-management 2025-09-30 14:44:46 +09:00
hyeonsu 318436475a Merge pull request '코드 활성/비활성화 해결' (#78) from fix/commcode into main
Reviewed-on: http://39.117.244.52:3000/kjs/ERP-node/pulls/78
2025-09-30 14:29:02 +09:00
dohyeons 142f6a1a90 코드 활성/비활성화 해결 2025-09-30 14:28:40 +09:00
hjjeong d8f73c1136 feat: 대시보드 관리 시스템 구현
 새로운 기능:
- 드래그 앤 드롭 대시보드 설계 도구
- SQL 쿼리 에디터 및 실시간 실행
- Recharts 기반 차트 컴포넌트 (Bar, Pie, Line)
- 차트 데이터 매핑 및 설정 UI
- 요소 이동, 크기 조절, 삭제 기능
- 레이아웃 저장 기능

📦 추가된 컴포넌트:
- DashboardDesigner: 메인 설계 도구
- QueryEditor: SQL 쿼리 작성 및 실행
- ChartConfigPanel: 차트 설정 패널
- ChartRenderer: 실제 차트 렌더링
- CanvasElement: 드래그 가능한 캔버스 요소

🔧 기술 스택:
- Recharts 라이브러리 추가
- TypeScript 타입 정의 완비
- 독립적 컴포넌트 구조로 설계

🎯 접속 경로: /admin/dashboard
2025-09-30 13:23:22 +09:00
hjjeong 7fc3111c4d 배치목록 카드형으로 변경 2025-09-30 10:30:26 +09:00
leeheejin 8c19d57ced ui, 외부커넥션에서 쿼리 조회만 가능하도록 2025-09-30 10:30:05 +09:00
leeheejin 9168ab9a41 Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node into lhj
; 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.
2025-09-29 19:36:25 +09:00
leeheejin 0b787b4c4c Fix modal label display issues and DOM node removal errors
- Hide rounded background labels in modal (계약구분, 국내/해외, 기본 버튼)
- Add try-catch blocks for DOM operations to prevent removeChild errors
- Fix event listener registration/removal in RealtimePreview, FileUpload, FileComponentConfigPanel
- Improve error handling for CustomEvent dispatching
2025-09-29 19:33:38 +09:00
leeheejin d861eb5196 Fix modal label display issues and DOM node removal errors
- Hide rounded background labels in modal (계약구분, 국내/해외, 기본 버튼)
- Add try-catch blocks for DOM operations to prevent removeChild errors
- Fix event listener registration/removal in RealtimePreview, FileUpload, FileComponentConfigPanel
- Improve error handling for CustomEvent dispatching
2025-09-29 19:32:20 +09:00
hyeonsu d0d37d9e29 Merge pull request '에러 해결' (#77) from fix/error into main
Reviewed-on: http://39.117.244.52:3000/kjs/ERP-node/pulls/77
2025-09-29 18:44:48 +09:00
dohyeons 6e3d5b40d2 에러 해결 2025-09-29 18:44:16 +09:00
hjlee 66395c9cc5 Merge pull request 'image' (#76) from lhj into main
Reviewed-on: http://39.117.244.52:3000/kjs/ERP-node/pulls/76
2025-09-29 18:14:31 +09:00
leeheejin da429e7f24 image 2025-09-29 18:14:03 +09:00
kjs 78d49ee936 Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node 2025-09-29 18:04:57 +09:00
kjs 126b3e1175 에러수정 2025-09-29 18:04:56 +09:00
hyeonsu 55f4c7fa26 Merge pull request 'fix/429error' (#75) from fix/429error into main
Reviewed-on: http://39.117.244.52:3000/kjs/ERP-node/pulls/75
2025-09-29 17:47:16 +09:00
dohyeons e74deb7c34 Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node into fix/429error 2025-09-29 17:30:44 +09:00
dohyeons 6e8f529cd3 추가 감소 2025-09-29 17:29:58 +09:00
hjlee 467c5598ab Merge pull request 'dev' (#74) from dev into main
Reviewed-on: http://39.117.244.52:3000/kjs/ERP-node/pulls/74
2025-09-29 17:24:24 +09:00
dohyeons 808a317ed0 38개로 감소 2025-09-29 17:24:06 +09:00
hjlee 5a5af8d258 Merge pull request 'lhj' (#73) from lhj into dev
Reviewed-on: http://39.117.244.52:3000/kjs/ERP-node/pulls/73
2025-09-29 17:22:49 +09:00
leeheejin a5bf6601a0 ui, 파일업로드 관련 손보기 2025-09-29 17:21:47 +09:00
kjs f336e3b31f query 변환 계획 2025-09-29 17:19:31 +09:00
hjjeong 153fb18288 Merge pull request 'feature/batch-testing-updates' (#72) from feature/batch-testing-updates into main
Reviewed-on: http://39.117.244.52:3000/kjs/ERP-node/pulls/72
2025-09-29 17:09:13 +09:00