Skip to content

Commit 107f333

Browse files
committed
feat: final input add
1 parent ecdb8dc commit 107f333

File tree

3 files changed

+20
-13
lines changed

3 files changed

+20
-13
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ public class ChatRequestDto {
2323
private boolean isStepRecommendation = false;
2424

2525
private Integer currentStep;
26-
// "ALL" 처리를 위해 스텝 3개 String으로 변경
26+
// "ALL" 처리를 위해 스텝 2개 String으로 변경
2727
private String selectedAlcoholStrength;
2828
private String selectedAlcoholBaseType;
29+
// selectedCocktailType 삭제
2930
}

src/main/java/com/back/domain/chatbot/enums/MessageType.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ public enum MessageType {
55
RADIO_OPTIONS("라디오옵션"), // 라디오 버튼 선택지
66
CARD_LIST("카드리스트"), // 칵테일 추천 카드 리스트
77
LOADING("로딩중"), // 로딩 메시지
8-
ERROR("에러"); // 에러 메시지
8+
ERROR("에러"), // 에러 메시지
9+
INPUT("입력"); // 텍스트 입력 요청
910

1011
private final String description;
1112

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

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import com.back.domain.cocktail.entity.Cocktail;
1313
import com.back.domain.cocktail.enums.AlcoholBaseType;
1414
import com.back.domain.cocktail.enums.AlcoholStrength;
15-
import com.back.domain.cocktail.enums.CocktailType;
1615
import com.back.domain.cocktail.repository.CocktailRepository;
1716
import jakarta.annotation.PostConstruct;
1817
import lombok.RequiredArgsConstructor;
@@ -102,7 +101,7 @@ public ChatResponseDto sendMessage(ChatRequestDto requestDto) {
102101
log.info("질문형 추천 모드 진입 - userId: {}", requestDto.getUserId());
103102
return generateAIResponseWithContext(requestDto, "질문형 추천");
104103
}
105-
else if (currentStep >= 1 && currentStep <= 3) {
104+
else if (currentStep >= 1 && currentStep <= 4) {
106105
// 단계별 추천
107106
log.info("단계별 추천 모드 진입 - Step: {}, userId: {}",
108107
currentStep, requestDto.getUserId());
@@ -496,10 +495,16 @@ private ChatResponseDto handleStepRecommendation(ChatRequestDto requestDto) {
496495
break;
497496

498497
case 3:
499-
stepData = getFinalRecommendations(
498+
stepData = null;
499+
message = "좋아요! 이제 원하는 칵테일 스타일을 자유롭게 말씀해주세요 💬\n 없으면 'x', 또는 '없음' 과 같이 입력해주세요!";
500+
type = MessageType.INPUT;
501+
break;
502+
503+
case 4:
504+
stepData = getFinalRecommendationsWithMessage(
500505
parseAlcoholStrength(requestDto.getSelectedAlcoholStrength()),
501506
parseAlcoholBaseType(requestDto.getSelectedAlcoholBaseType()),
502-
null
507+
requestDto.getMessage()
503508
);
504509
message = stepData.getStepTitle();
505510
type = MessageType.CARD_LIST; // 최종 추천은 카드 리스트
@@ -532,7 +537,7 @@ private ChatResponseDto handleStepRecommendation(ChatRequestDto requestDto) {
532537
// 메타데이터 포함
533538
ChatResponseDto.MetaData metaData = ChatResponseDto.MetaData.builder()
534539
.currentStep(currentStep)
535-
.totalSteps(3)
540+
.totalSteps(4)
536541
.isTyping(true)
537542
.delay(300)
538543
.build();
@@ -632,20 +637,20 @@ private StepRecommendationResponseDto getAlcoholBaseTypeOptions(AlcoholStrength
632637
}
633638

634639

635-
private StepRecommendationResponseDto getFinalRecommendations(
640+
private StepRecommendationResponseDto getFinalRecommendationsWithMessage(
636641
AlcoholStrength alcoholStrength,
637642
AlcoholBaseType alcoholBaseType,
638-
CocktailType cocktailType) {
643+
String userMessage) {
639644
// 필터링 조건에 맞는 칵테일 검색
640645
// "ALL" 선택 시 해당 필터를 null로 처리하여 전체 검색
641646
List<AlcoholStrength> strengths = (alcoholStrength == null) ? null : List.of(alcoholStrength);
642647
List<AlcoholBaseType> baseTypes = (alcoholBaseType == null) ? null : List.of(alcoholBaseType);
643-
List<CocktailType> cocktailTypes = (cocktailType == null) ? null : List.of(cocktailType);
644648

649+
// userMessage를 키워드로 사용하여 검색
645650
Page<Cocktail> cocktailPage = cocktailRepository.searchWithFilters(
646-
null, // 키워드 없음
651+
userMessage, // 사용자 입력 메시지를 키워드로 사용
647652
strengths,
648-
cocktailTypes,
653+
null, // cocktailType 사용 안 함
649654
baseTypes,
650655
PageRequest.of(0, 3) // 최대 3개 추천
651656
);
@@ -668,7 +673,7 @@ private StepRecommendationResponseDto getFinalRecommendations(
668673
"마음에 드는 칵테일은 '킵' 버튼을 눌러 나만의 Bar에 저장해보세요!";
669674

670675
return new StepRecommendationResponseDto(
671-
3,
676+
4,
672677
stepTitle,
673678
null,
674679
recommendations,

0 commit comments

Comments
 (0)