추가 기본 조회 함수 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>
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>
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>
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>
- 템플릿 파일첨부 컴포넌트와 FileComponentConfigPanel 실시간 동기화
- FileUpload 위젯에 전역 파일 상태 관리 기능 추가
- 파일 업로드/삭제 시 전역 상태 및 localStorage 동기화
- RealtimePreview에서 전역 상태 우선 읽기 및 파일 개수 표시
- 한컴오피스, Apple iWork 파일 형식 지원 추가
- 파일 뷰어 모달 및 미리보기 기능 구현
- 업로드된 파일 디렉토리 .gitignore 추가
- DatabaseConnectorFactory에 Oracle, MariaDB 커넥터 추가
- BatchService에서 PostgreSQL timestamp 타입 캐스팅 추가
- BatchExternalDbService에 쿼리 로깅 추가
- 배치 실행 로그 관련 타입 및 컨트롤러 개선
- 프론트엔드 배치 관리 UI 개선
✨ 주요 기능:
- 배치 설정 관리 (생성/수정/삭제/실행)
- 배치 실행 로그 관리 및 모니터링
- 배치 스케줄러 자동 실행 (cron 기반)
- 외부 DB 연결을 통한 데이터 동기화
- Oracle, MSSQL, MariaDB 커넥터 지원
🔧 백엔드 구현:
- BatchManagementController: 배치 설정 CRUD
- BatchExecutionLogController: 실행 로그 관리
- BatchSchedulerService: 자동 스케줄링
- BatchExternalDbService: 외부 DB 연동
- 배치 관련 테이블 스키마 추가
🎨 프론트엔드 구현:
- 배치 관리 대시보드 UI
- 배치 생성/수정 폼
- 실행 로그 모니터링 화면
- 수동 실행 및 상태 관리
🛡️ 안전성:
- 기존 시스템과 독립적 구현
- 트랜잭션 기반 안전한 데이터 처리
- 에러 핸들링 및 로깅 강화
- 테이블 타입 관리에서 엔티티 타입의 표시 컬럼 설정 완전 제거
- 컬럼 설정 패널에서 엔티티 타입일 때 표시 컬럼 조합 선택 기능 추가
- 기본 테이블과 조인 테이블의 컬럼을 자유롭게 조합 가능
- 구분자 설정 및 실시간 미리보기 기능 포함
- 별도 모달 방식 제거하고 기존 컬럼 설정 패널에 통합