Skip to content

Commit aec426e

Browse files
committed
feat: QA guide msg add
1 parent 78b4720 commit aec426e

File tree

1 file changed

+62
-14
lines changed

1 file changed

+62
-14
lines changed

src/main/java/com/back/domain/chatbot/service/ChatbotService.java

Lines changed: 62 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,55 @@ public ChatResponseDto sendMessage(ChatRequestDto requestDto) {
9595
log.info("[EXPLICIT] currentStep={}, userId={}, mode={}",
9696
currentStep, requestDto.getUserId(),
9797
currentStep == 0 ? "QA" : "STEP");
98-
9998
if (currentStep == 0) {
100-
// 질문형 추천 (일반 AI 대화)
99+
// 질문형 추천 선택 시 안내 메시지와 INPUT 타입 반환
100+
if ("QA".equalsIgnoreCase(requestDto.getMessage()) ||
101+
requestDto.getMessage().contains("질문형")) {
102+
103+
log.info("질문형 추천 시작 - userId: {}", requestDto.getUserId());
104+
105+
// 사용자 선택 메시지 저장
106+
ChatConversation userChoice = ChatConversation.builder()
107+
.userId(requestDto.getUserId())
108+
.message("질문형 취향 찾기")
109+
.sender(MessageSender.USER)
110+
.createdAt(LocalDateTime.now())
111+
.build();
112+
chatConversationRepository.save(userChoice);
113+
114+
String guideMessage = "칵테일에 관련된 질문을 입력해주세요!";
115+
116+
/*
117+
118+
String guideMessage = "좋아요! 질문형 추천을 시작할게요 🎯\n" +
119+
"칵테일에 관련된 질문을 자유롭게 입력해주세요!\n" +
120+
"예시: 달콤한 칵테일 추천해줘, 파티용 칵테일이 필요해, 초보자용 칵테일 알려줘";
121+
*/
122+
123+
ChatConversation botGuide = ChatConversation.builder()
124+
.userId(requestDto.getUserId())
125+
.message(guideMessage)
126+
.sender(MessageSender.CHATBOT)
127+
.createdAt(LocalDateTime.now())
128+
.build();
129+
ChatConversation savedGuide = chatConversationRepository.save(botGuide);
130+
131+
// INPUT 타입으로 반환하여 사용자 입력 유도
132+
return ChatResponseDto.builder()
133+
.id(savedGuide.getId())
134+
.userId(requestDto.getUserId())
135+
.message(guideMessage)
136+
.sender(MessageSender.CHATBOT)
137+
.type(MessageType.INPUT)
138+
.createdAt(savedGuide.getCreatedAt())
139+
.metaData(ChatResponseDto.MetaData.builder()
140+
.currentStep(0)
141+
.actionType("질문형 추천")
142+
.build())
143+
.build();
144+
}
145+
146+
// 실제 질문이 들어온 경우 AI 응답 생성
101147
log.info("질문형 추천 모드 진입 - userId: {}", requestDto.getUserId());
102148
return generateAIResponseWithContext(requestDto, "질문형 추천");
103149
}
@@ -473,10 +519,22 @@ private ChatResponseDto createErrorResponse(String errorMessage) {
473519

474520
private ChatResponseDto handleStepRecommendation(ChatRequestDto requestDto) {
475521
Integer currentStep = requestDto.getCurrentStep();
522+
523+
// 단계별 추천 선택 시 처리
524+
if (currentStep == 1 && "STEP".equalsIgnoreCase(requestDto.getMessage())) {
525+
// 사용자 선택 메시지 저장
526+
ChatConversation userChoice = ChatConversation.builder()
527+
.userId(requestDto.getUserId())
528+
.message("단계별 취향 찾기")
529+
.sender(MessageSender.USER)
530+
.createdAt(LocalDateTime.now())
531+
.build();
532+
chatConversationRepository.save(userChoice);
533+
}
534+
476535
if (currentStep == null || currentStep <= 0) {
477536
currentStep = 1;
478537
}
479-
480538
StepRecommendationResponseDto stepData;
481539
String message;
482540
MessageType type;
@@ -521,17 +579,7 @@ private ChatResponseDto handleStepRecommendation(ChatRequestDto requestDto) {
521579
message = "단계별 맞춤 취향 추천을 시작합니다! 🎯";
522580
type = MessageType.RADIO_OPTIONS;
523581
}
524-
525-
// 사용자 메시지 저장 (단계별 추천 요청)
526-
ChatConversation userMessage = ChatConversation.builder()
527-
.userId(requestDto.getUserId())
528-
.message(requestDto.getMessage())
529-
.sender(MessageSender.USER)
530-
.createdAt(LocalDateTime.now())
531-
.build();
532-
chatConversationRepository.save(userMessage);
533-
534-
// 봇 응답 저장
582+
// 봇 응답 저장 (사용자 메시지는 이미 위에서 저장)
535583
ChatConversation botResponse = ChatConversation.builder()
536584
.userId(requestDto.getUserId())
537585
.message(message)

0 commit comments

Comments
 (0)