AI 관련 리팩터링#44
Merged
Merged
Conversation
🤖 GPT PR Review결론: request-changes 요약: 파싱 실패 주요 지적지적 없음 |
There was a problem hiding this comment.
Pull request overview
AI 도메인 전반의 구조를 정리하면서 문서 분석 파이프라인을 CompletableFuture 기반 병렬 실행으로 리팩터링하고, LLM 장애 감지/알림 및 로깅/프롬프트 관리 동시성 개선을 추가합니다.
Changes:
- 문서 분석 파이프라인 모듈 실행을 병렬화하고 실행 책임을
PipelineExecutor로 분리 - LLM 상태 슬라이딩 윈도우 추적(
LlmHealthTracker) 및 Discord 웹훅 알림 추가 - 프롬프트/AI 관련 패키지(
entity|model.vo→domain.entity|domain.vo) 정리 및 동시성 제약(유니크 인덱스) 추가, 로깅 라우팅 조정
Reviewed changes
Copilot reviewed 57 out of 57 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| src/test/java/com/example/konnect_backend/domain/ai/service/prompt/PromptTemplateResolverTest.java | PromptTemplate 패키지 이동에 따른 import 갱신 |
| src/test/java/com/example/konnect_backend/domain/ai/service/prompt/management/PromptManagementServiceTest.java | 프롬프트 버전 생성 검증 테스트 추가 |
| src/test/java/com/example/konnect_backend/domain/ai/infra/LlmHealthTrackerTest.java | LLM 상태 전환(UP/DOWN) 테스트 추가 |
| src/test/java/com/example/konnect_backend/domain/ai/infra/GeminiServiceTest.java | Gemini 실패/성공 시 health tracker 기록 테스트 추가 |
| src/main/resources/logback-spring.xml | JSON 로그 설정 및 분석 JSON 로거 라우팅 변경 |
| src/main/resources/db/migration/V24__add_unique_on_active_prompt.sql | ACTIVE 프롬프트 1개 보장용 유니크 인덱스 추가 |
| src/main/resources/application.properties | Discord 웹훅/LLM tracker 설정 추가 |
| src/main/java/com/example/konnect_backend/global/config/AsyncConfig.java | 프롬프트 실행용 스레드풀 및 MDC 전파 데코레이터 추가 |
| src/main/java/com/example/konnect_backend/domain/ai/service/textextractor/TextExtractorFacade.java | 텍스트 추출 API를 context 기반으로 변경 |
| src/main/java/com/example/konnect_backend/domain/ai/service/textextractor/TextExtractor.java | VO 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/service/textextractor/PdfTextExtractor.java | VO 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/service/textextractor/ImageTextExtractor.java | VO 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/service/prompt/PromptTemplateResolver.java | 엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/service/prompt/management/PromptManagementService.java | 활성화/버전생성 검증 로직 및 동시성 관련 주석 보강 |
| src/main/java/com/example/konnect_backend/domain/ai/service/prompt/management/PromptLoader.java | 엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/service/pipeline/PipelineExecutor.java | 병렬 모듈 실행 책임 분리(신규) |
| src/main/java/com/example/konnect_backend/domain/ai/service/pipeline/DocumentAnalysisPipeline.java | 파이프라인 오케스트레이션 단순화 및 로그 저장 서비스 분리 연동 |
| src/main/java/com/example/konnect_backend/domain/ai/service/module/UnifiedExtractorModule.java | 모듈 패키지 경로 변경 및 VO/엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/service/module/TranslatorModule.java | 모듈 패키지 경로 변경 및 VO/엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/service/module/SummarizerModule.java | 모듈 패키지 경로 변경 및 VO/엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/service/module/PromptModule.java | 모듈 패키지 경로 변경 및 VO/엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/service/module/KoreanSimplifierModule.java | 모듈 패키지 경로 변경 및 VO/엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/service/module/DocumentClassifierModule.java | 모듈 패키지 경로 변경 및 VO/엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/service/module/DifficultExpressionExtractorModule.java | 모듈 패키지 경로 변경 및 VO/엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/service/log/GeminiLogService.java | 비동기 로깅 제거 및 request id 필드 추가 |
| src/main/java/com/example/konnect_backend/domain/ai/service/log/AnalysisLogService.java | 분석 요청/JSON 로그 및 DB 로그 저장 책임 분리(신규) |
| src/main/java/com/example/konnect_backend/domain/ai/service/history/AnalysisHistoryService.java | 서비스 패키지 경로 변경 및 VO 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/repository/PromptTemplateRepository.java | 엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/repository/LlmCallMetadataRepository.java | 엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/repository/AnalysisRequestLogRepository.java | 엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/repository/AnalysisHistoryRepository.java | 엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/repository/AiModelRepository.java | 엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/model/vo/ExtractedText.java | VO 패키지 정리로 인한 삭제 |
| src/main/java/com/example/konnect_backend/domain/ai/infra/LlmHealthTracker.java | LLM 상태 슬라이딩 윈도우 추적기 추가(신규) |
| src/main/java/com/example/konnect_backend/domain/ai/infra/GeminiService.java | 호출 성공/실패 기록 및 상태변화 알림 연동 추가 |
| src/main/java/com/example/konnect_backend/domain/ai/infra/DiscordWebhookService.java | Discord 웹훅 알림 서비스 추가(신규) |
| src/main/java/com/example/konnect_backend/domain/ai/dto/response/PromptResponse.java | 엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/dto/response/ModelResponse.java | 엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/dto/response/AnalysisHistoryResponse.java | 엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/dto/internal/PromptTemplateWithModelName.java | 엔티티 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/dto/internal/GeminiCallResult.java | VO 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/domain/vo/UploadFile.java | VO 패키지 경로 변경 |
| src/main/java/com/example/konnect_backend/domain/ai/domain/vo/TokenUsage.java | VO 패키지 경로 변경 |
| src/main/java/com/example/konnect_backend/domain/ai/domain/vo/TextExtractionResult.java | VO 패키지 경로 변경 |
| src/main/java/com/example/konnect_backend/domain/ai/domain/vo/PipelineContext.java | PipelineContext를 domain.vo로 이동 및 file 보관 방식 변경 |
| src/main/java/com/example/konnect_backend/domain/ai/domain/vo/ExtractedText.java | VO 재배치(신규) |
| src/main/java/com/example/konnect_backend/domain/ai/domain/entity/PromptTemplate.java | 엔티티 패키지 경로 변경 |
| src/main/java/com/example/konnect_backend/domain/ai/domain/entity/PromptSlot.java | 엔티티 패키지 경로 변경 |
| src/main/java/com/example/konnect_backend/domain/ai/domain/entity/log/LlmCallMetadata.java | 로그 엔티티 패키지 경로 변경 |
| src/main/java/com/example/konnect_backend/domain/ai/domain/entity/log/CreatedAtBaseEntity.java | 로그 엔티티 패키지 경로 변경 |
| src/main/java/com/example/konnect_backend/domain/ai/domain/entity/log/AnalysisRequestLog.java | 로그 엔티티 패키지 경로 변경 |
| src/main/java/com/example/konnect_backend/domain/ai/domain/entity/log/AnalysisHistory.java | 로그 엔티티 패키지 경로 변경 |
| src/main/java/com/example/konnect_backend/domain/ai/domain/entity/AiModel.java | 엔티티 패키지 경로 변경 |
| src/main/java/com/example/konnect_backend/domain/ai/controller/PromptManagementController.java | Swagger 숨김 처리 및 TextExtractorFacade 시그니처 변경 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/controller/AIController.java | UploadFile/AnalysisHistoryService 패키지 이동 반영 |
| src/main/java/com/example/konnect_backend/domain/ai/aop/LlmLoggingAspect.java | 모듈 패키지 변경 반영 및 비동기 로깅 주석 갱신 |
| .env.example | Discord 웹훅 환경변수 예시 추가 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- includeMdc 인코더 하위로 이동 (기존에도 동작) - ThreadPoolExecutor reject되지 않도록 CallerRunsPolicy 추가 - 로거 이름 일치하도록 수정 - DISCORD_WEBHOOK_URL blank 체크 추가 - import 최적화 - addLog 메소드 synchronized로 동시성 제어
🤖 GPT PR Review결론: request-changes 요약: 파싱 실패 주요 지적지적 없음 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
병렬 호출
CompletableFuture를 사용하여 파이프라인 실행 구조를 병렬로 수정동시 요청 제한
추후 개선
장애 시 알림
설정값
application.properties속성 지정 필요그외
.env에DISCORD_WEBHOOK_URL지정 필요.env.example에 해당 항목 추가로깅 로직 변경
request_id함께 출력: 엄밀히는 DB 메타데이터를 통해 확인 가능하나, 로그 분석 편의를 위해 추가기타