Skip to content

[Feat] 챗봇 구현#44

Merged
Enble merged 35 commits intomainfrom
feat/#4
Sep 8, 2025
Merged

[Feat] 챗봇 구현#44
Enble merged 35 commits intomainfrom
feat/#4

Conversation

@Enble
Copy link
Collaborator

@Enble Enble commented Sep 7, 2025

루트 디렉토리의 CHATBOT_GUIDE.md 참고해서 확인해주세요!

Enble added 30 commits July 21, 2025 00:39
# Conflicts:
#	src/main/java/com/mey/backend/global/payload/status/ErrorStatus.java
- 자동 dml 설정 진행중 (place 관련)
- 자동 dml 설정 진행중 (place 관련)
# Conflicts:
#	build.gradle
#	src/main/java/com/mey/backend/domain/place/entity/Place.java
#	src/main/resources/application-dev.yml
#	src/main/resources/sql/data-mysql.sql
- 기존 키워드 매칭에서 GPT-4o-mini 기반 지능형 의도 분류로 전환
- IntentClassificationResult DTO 추가로 신뢰도 및 분류 근거 제공
- fallback 메커니즘으로 LLM 실패 시 키워드 기반 분류 유지
- 4가지 의도(CREATE_ROUTE, SEARCH_EXISTING_ROUTES, SEARCH_PLACES, GENERAL_QUESTION) 정확도 향상
- 상세한 프롬프트 엔지니어링으로 문맥 기반 분류 최적화
- 다중 의도 지원 챗봇으로 확장 (루트생성/기존루트검색/장소검색/일반질문)
- RAG 시스템과 벡터 데이터베이스 통합으로 정확한 정보 검색
- 단계별 정보 수집 및 컨텍스트 관리 시스템
- RouteRepository 기반 실제 루트 검색 기능
- 자동 일수 조정 로직 및 장소 부족 시 알림
- 벡터 스토어 초기화로 Place 데이터 자동 로딩
- 개발환경 SQL 스크립트 실행 순서 최적화
- Theme enum JSON 직렬화 지원 및 단일 테마 구조로 변경
- ChatResponse에 context 필드 추가로 클라이언트 측 컨텍스트 관리 지원
- 모든 의도별 핸들러에서 업데이트된 컨텍스트 반환
- 단계별 정보 수집 과정에서 컨텍스트 누적 및 전달
- createQuestionResponse, createErrorResponse 메서드에 컨텍스트 매개변수 추가
- 대화 흐름 연속성 보장으로 사용자 경험 개선
ChatService의 책임을 분산하여 단일 책임 원칙을 적용하고 코드 가독성과 유지보수성을 향상시킴

새로 분리된 클래스들:
• ConversationManager: 대화 세션 및 상태 관리
  - 사용자별 세션 생성/관리, 컨텍스트 병합, 상태 전환 로직
• IntentClassifier: 사용자 의도 분류
  - LLM 기반 고정밀 분류, 키워드 기반 fallback, 신뢰도 검증
• ContextExtractor: 컨텍스트 정보 추출
  - 테마/지역/일수 추출, LLM 파싱, 필수 정보 검증
• ChatResponseBuilder: 응답 생성 및 포맷팅
  - 다양한 응답 타입 빌딩, 테마별 메시지, DTO 변환
• ConversationState: 대화 상태 열거형
  - 단계적 정보 수집을 위한 상태 머신 정의

기존 ChatService는 1091줄 → 650줄(40% 감소)로 간소화되었으며,
각 컴포넌트가 명확한 책임을 가지고 독립적으로 테스트 가능함
@Enble Enble self-assigned this Sep 7, 2025
@Enble Enble added the enhancement New feature or request label Sep 7, 2025
@Enble Enble linked an issue Sep 7, 2025 that may be closed by this pull request
# Conflicts:
#	src/main/java/com/mey/backend/domain/place/controller/PlaceController.java
#	src/main/java/com/mey/backend/domain/place/repository/PlaceRepository.java
#	src/main/java/com/mey/backend/domain/place/service/PlaceService.java
#	src/main/resources/sql/data-mysql.sql
@sumi-03
Copy link
Member

sumi-03 commented Sep 8, 2025

LGTM

@Enble Enble merged commit 759239f into main Sep 8, 2025
1 check passed
@Enble Enble deleted the feat/#4 branch September 8, 2025 07:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feat] AI 가이드를 위한 RAG 챗봇 구현

2 participants