외부 호출 설정 관리 서비스의 모든 Prisma 호출을 Raw Query로 전환:
## 전환 완료 (8개 Prisma 호출)
1. **getConfigs()** - 목록 조회
- prisma.findMany → query<ExternalCallConfig>()
- 동적 WHERE 조건 (5개 필터)
- ILIKE 검색 (config_name, description)
2. **getConfigById()** - 단건 조회
- prisma.findUnique → queryOne<ExternalCallConfig>()
3-4. **createConfig()** - 생성
- 중복 검사: prisma.findFirst → queryOne()
- 생성: prisma.create → queryOne() with INSERT RETURNING
- JSON 필드 처리: config_data
5-6. **updateConfig()** - 수정
- 중복 검사: prisma.findFirst → queryOne() with id != $4
- 수정: prisma.update → queryOne() with 동적 UPDATE
- 9개 필드에 대한 조건부 SET 절 생성
7. **deleteConfig()** - 논리 삭제
- prisma.update → query() with is_active = 'N'
8. **getExternalCallConfigsForButtonControl()** - 버튼 제어용
- prisma.findMany with select → query() with SELECT
## 기술적 개선사항
- **동적 WHERE 조건**: 5개 필터 조건 조합 및 파라미터 인덱싱
- **동적 UPDATE 쿼리**: 변경된 필드만 포함하는 SET 절 생성
- **JSON 필드**: config_data를 JSON.stringify()로 처리
- **ILIKE 검색**: 대소문자 구분 없는 검색 구현
- **중복 검사**: id 제외 조건으로 자신 제외 로직 유지
## 코드 정리
- prisma import 완전 제거
- query, queryOne 함수 사용
- 컴파일 및 린터 오류 없음
문서: PHASE3.12_EXTERNAL_CALL_CONFIG_SERVICE_MIGRATION.md
진행률: Phase 3 136/162 (84.0%)
4개 주요 서비스에 대한 상세 전환 계획서 작성:
1. **Phase 3.11: DDLAuditLogger** (8개 호출)
- DDL 실행 감사 로그 관리
- 통계 쿼리 (GROUP BY, CASE WHEN, AVG)
- 동적 WHERE 조건
- JSON 필드 처리
- 날짜/시간 함수
2. **Phase 3.12: ExternalCallConfigService** (8개 호출)
- 외부 API 호출 설정 관리
- JSON 필드 (headers, params, auth_config)
- 민감 정보 암호화/복호화
- 동적 CRUD 쿼리
3. **Phase 3.13: EntityJoinService** (5개 호출)
- 엔티티 간 조인 관계 관리
- LEFT JOIN 쿼리
- 조인 유효성 검증
- 순환 참조 방지
4. **Phase 3.14: AuthService** (5개 호출)
- 사용자 인증 및 권한 관리
- 비밀번호 암호화/검증 (bcrypt)
- 세션 토큰 관리
- 보안 크리티컬
- SQL 인젝션 방지
각 계획서 포함 내용:
- 파일 정보 및 복잡도
- Prisma 사용 현황 분석
- 전환 전략 (단계별)
- 상세 전환 예시 (Before/After)
- 기술적 고려사항
- 전환 체크리스트
- 예상 난이도 및 소요 시간
- 보안/성능 주의사항
메인 문서에 계획서 링크 추가