Skip to content

Commit 6b4ca98

Browse files
authored
[fix] 챗봇 로딩 메시지 롤백
[fix] 챗봇 로딩 메시지 롤백
2 parents c2ad5b9 + c5689cf commit 6b4ca98

File tree

2 files changed

+7
-113
lines changed

2 files changed

+7
-113
lines changed

src/main/java/com/back/domain/chatbot/dto/ChatRequestDto.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,4 @@ public class ChatRequestDto {
2828
private String selectedAlcoholBaseType;
2929
// selectedCocktailType 삭제
3030

31-
// Step 3에서 사용자가 입력한 칵테일 스타일 (검색 키워드로 사용)
32-
private String userStyleInput;
3331
}

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

Lines changed: 7 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,6 @@ public class ChatbotService {
6262
private String responseRules;
6363
private ChatClient chatClient;
6464

65-
// 로딩 메시지 상수
66-
private static final String RECOMMENDATION_LOADING_MESSAGE =
67-
"당신에게 어울리는 칵테일은? 두구❤️두구💛두구💚두구💙두구💜두구🖤두구🤍두구🤎";
68-
69-
// 처리 완료 플래그 키워드
70-
private static final String PROCESS_STEP_RECOMMENDATION = "PROCESS_STEP_RECOMMENDATION";
71-
private static final String PROCESS_QA_RECOMMENDATION = "PROCESS_QA_RECOMMENDATION";
72-
7365
@PostConstruct
7466
public void init() throws IOException {
7567
this.systemPrompt = StreamUtils.copyToString(
@@ -150,50 +142,9 @@ public ChatResponseDto sendMessage(ChatRequestDto requestDto) {
150142
.build();
151143
}
152144

153-
// 실제 질문이 들어온 경우 - 먼저 로딩 메시지 반환
154-
if (requestDto.getMessage() != null && !requestDto.getMessage().trim().isEmpty()) {
155-
// 로딩 메시지인지 확인 (두구두구 메시지 이후의 실제 처리 요청)
156-
if (requestDto.getMessage().contains("PROCESS_RECOMMENDATION")) {
157-
log.info("질문형 추천 실제 처리 - userId: {}", requestDto.getUserId());
158-
return generateAIResponseWithContext(requestDto, "질문형 추천");
159-
}
160-
161-
// 사용자 질문 저장
162-
ChatConversation userQuestion = ChatConversation.builder()
163-
.userId(requestDto.getUserId())
164-
.message(requestDto.getMessage())
165-
.sender(MessageSender.USER)
166-
.createdAt(LocalDateTime.now())
167-
.build();
168-
chatConversationRepository.save(userQuestion);
169-
170-
// 고정 로딩 메시지
171-
String loadingMessage = "당신에게 어울리는 칵테일은?\n 두구❤️두구💛두구💚두구💙두구💜두구🖤두구🤍두구🤎";
172-
173-
ChatConversation loadingBot = ChatConversation.builder()
174-
.userId(requestDto.getUserId())
175-
.message(loadingMessage)
176-
.sender(MessageSender.CHATBOT)
177-
.createdAt(LocalDateTime.now())
178-
.build();
179-
ChatConversation savedLoading = chatConversationRepository.save(loadingBot);
180-
181-
// 로딩 메시지 반환 (FE에서 이후 자동으로 실제 추천 요청)
182-
return ChatResponseDto.builder()
183-
.id(savedLoading.getId())
184-
.userId(requestDto.getUserId())
185-
.message(loadingMessage)
186-
.sender(MessageSender.CHATBOT)
187-
.type(MessageType.LOADING)
188-
.createdAt(savedLoading.getCreatedAt())
189-
.metaData(ChatResponseDto.MetaData.builder()
190-
.currentStep(0)
191-
.actionType("LOADING_QA")
192-
.isTyping(true)
193-
.delay(2000) // 2초 후 자동 요청
194-
.build())
195-
.build();
196-
}
145+
// 실제 질문이 들어온 경우 AI 응답 생성
146+
log.info("질문형 추천 모드 진입 - userId: {}", requestDto.getUserId());
147+
return generateAIResponseWithContext(requestDto, "질문형 추천");
197148
}
198149
else if (currentStep >= 1 && currentStep <= 4) {
199150
// 단계별 추천
@@ -594,7 +545,7 @@ private ChatResponseDto handleStepRecommendation(ChatRequestDto requestDto) {
594545

595546
case 2:
596547
stepData = getAlcoholBaseTypeOptions(parseAlcoholStrength(requestDto.getSelectedAlcoholStrength()));
597-
message = "좋은 선택이네요! 이제 베이스가 될 술을 선택해주세요 🍸";
548+
message = "좋은 선택이네요! \n이제 베이스가 될 술을 선택해주세요 🍸";
598549
type = MessageType.RADIO_OPTIONS;
599550
break;
600551

@@ -611,65 +562,10 @@ private ChatResponseDto handleStepRecommendation(ChatRequestDto requestDto) {
611562
break;
612563

613564
case 4:
614-
// Step 4에서 로딩 메시지 처리
615-
if (!"PROCESS_STEP_RECOMMENDATION".equals(requestDto.getMessage())) {
616-
// 사용자 입력 저장 (Step 3의 답변) 및 userStyleInput에 저장
617-
if (requestDto.getMessage() != null && !requestDto.getMessage().trim().isEmpty()) {
618-
// DB에 저장
619-
ChatConversation userInput = ChatConversation.builder()
620-
.userId(requestDto.getUserId())
621-
.message(requestDto.getMessage())
622-
.sender(MessageSender.USER)
623-
.createdAt(LocalDateTime.now())
624-
.build();
625-
chatConversationRepository.save(userInput);
626-
627-
// userStyleInput에 저장 (다음 요청에서 사용)
628-
requestDto.setUserStyleInput(requestDto.getMessage());
629-
log.info("Step 3 사용자 입력 저장: {}", requestDto.getMessage());
630-
}
631-
632-
// 고정 로딩 메시지
633-
String loadingMessage = "당신에게 어울리는 칵테일은?\n 두구❤️두구💛두구💚두구💙두구💜두구🖤두구🤍두구🤎";
634-
635-
ChatConversation loadingBot = ChatConversation.builder()
636-
.userId(requestDto.getUserId())
637-
.message(loadingMessage)
638-
.sender(MessageSender.CHATBOT)
639-
.createdAt(LocalDateTime.now())
640-
.build();
641-
ChatConversation savedLoading = chatConversationRepository.save(loadingBot);
642-
643-
// 로딩 메시지 반환
644-
return ChatResponseDto.builder()
645-
.id(savedLoading.getId())
646-
.userId(requestDto.getUserId())
647-
.message(loadingMessage)
648-
.sender(MessageSender.CHATBOT)
649-
.type(MessageType.LOADING)
650-
.createdAt(savedLoading.getCreatedAt())
651-
.metaData(ChatResponseDto.MetaData.builder()
652-
.currentStep(4)
653-
.totalSteps(4)
654-
.actionType("LOADING_STEP")
655-
.isTyping(true)
656-
.delay(2000) // 2초 후 자동 요청
657-
.build())
658-
.stepData(new StepRecommendationResponseDto(
659-
4,
660-
null,
661-
null,
662-
null,
663-
false
664-
))
665-
.build();
666-
}
667-
668-
// 실제 추천 처리 - userStyleInput 사용 (PROCESS_STEP_RECOMMENDATION 키워드 아님)
669565
stepData = getFinalRecommendationsWithMessage(
670-
parseAlcoholStrength(requestDto.getSelectedAlcoholStrength()),
671-
parseAlcoholBaseType(requestDto.getSelectedAlcoholBaseType()),
672-
requestDto.getUserStyleInput() // message 대신 userStyleInput 사용
566+
parseAlcoholStrength(requestDto.getSelectedAlcoholStrength()),
567+
parseAlcoholBaseType(requestDto.getSelectedAlcoholBaseType()),
568+
requestDto.getMessage()
673569
);
674570
message = stepData.getStepTitle();
675571
type = MessageType.CARD_LIST;

0 commit comments

Comments
 (0)