Skip to content

Commit ea857a1

Browse files
authored
merge : 단계별 추천 추가 및 '전체' 옵션 추가
[feat] 단계별 추천 추가 및 '전체' 옵션 추가 #199
2 parents b30f7d3 + 1b8a3e4 commit ea857a1

File tree

5 files changed

+257
-94
lines changed

5 files changed

+257
-94
lines changed

src/main/java/com/back/domain/chatbot/controller/ChatbotController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,9 @@ public ResponseEntity<RsData<ChatConversation>> saveBotMessage(@Valid @RequestBo
6464

6565
@PostMapping("/greeting/{userId}")
6666
@Operation(summary = "인사말 생성", description = "사용자가 채팅을 시작할 때 기본 인사말을 생성하고 저장")
67-
public ResponseEntity<RsData<ChatConversation>> createGreeting(@PathVariable Long userId) {
67+
public ResponseEntity<RsData<ChatResponseDto>> createGreeting(@PathVariable Long userId) {
6868
try {
69-
ChatConversation greeting = chatbotService.createGreetingMessage(userId);
69+
ChatResponseDto greeting = chatbotService.createGreetingMessage(userId);
7070
return ResponseEntity.ok(RsData.successOf(greeting));
7171
} catch (Exception e) {
7272
log.error("인사말 생성 중 오류 발생: ", e);
Lines changed: 44 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.back.domain.chatbot.dto;
22

3+
import com.back.domain.chatbot.enums.MessageType;
34
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
46
import lombok.Getter;
57
import lombok.NoArgsConstructor;
68
import lombok.Setter;
@@ -11,22 +13,56 @@
1113
@Setter
1214
@NoArgsConstructor
1315
@AllArgsConstructor
16+
@Builder
1417
public class ChatResponseDto {
1518

16-
private String response;
19+
private String message; // 텍스트 메시지
20+
private MessageType type; // 메시지 표시 타입
1721
private LocalDateTime timestamp;
1822

19-
// 단계별 추천 관련 필드 (선택사항)
20-
private StepRecommendationResponseDto stepRecommendation;
23+
// 단계별 추천 관련 데이터 (type이 RADIO_OPTIONS 또는 CARD_LIST일 때 사용)
24+
private StepRecommendationResponseDto stepData;
2125

22-
public ChatResponseDto(String response) {
23-
this.response = response;
26+
// 추가 메타데이터
27+
private MetaData metaData;
28+
29+
// 생성자들
30+
public ChatResponseDto(String message) {
31+
this.message = message;
32+
this.type = MessageType.TEXT;
2433
this.timestamp = LocalDateTime.now();
2534
}
2635

27-
public ChatResponseDto(String response, StepRecommendationResponseDto stepRecommendation) {
28-
this.response = response;
36+
public ChatResponseDto(String message, StepRecommendationResponseDto stepData) {
37+
this.message = message;
2938
this.timestamp = LocalDateTime.now();
30-
this.stepRecommendation = stepRecommendation;
39+
this.stepData = stepData;
40+
41+
// stepData 내용에 따라 type 자동 설정
42+
if (stepData != null) {
43+
if (stepData.getOptions() != null && !stepData.getOptions().isEmpty()) {
44+
this.type = MessageType.RADIO_OPTIONS;
45+
} else if (stepData.getRecommendations() != null && !stepData.getRecommendations().isEmpty()) {
46+
this.type = MessageType.CARD_LIST;
47+
} else {
48+
this.type = MessageType.TEXT;
49+
}
50+
} else {
51+
this.type = MessageType.TEXT;
52+
}
53+
}
54+
55+
// 메타데이터 내부 클래스
56+
@Getter
57+
@Setter
58+
@NoArgsConstructor
59+
@AllArgsConstructor
60+
@Builder
61+
public static class MetaData {
62+
private Integer currentStep; // 현재 단계 (단계별 추천)
63+
private Integer totalSteps; // 전체 단계 수
64+
private Boolean isTyping; // 타이핑 애니메이션 표시 여부
65+
private Integer delay; // 메시지 표시 지연 시간(ms)
66+
private String actionType; // 버튼 액션 타입
3167
}
3268
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.back.domain.chatbot.enums;
2+
3+
public enum MessageType {
4+
TEXT("텍스트"), // 일반 텍스트 메시지
5+
RADIO_OPTIONS("라디오옵션"), // 라디오 버튼 선택지
6+
CARD_LIST("카드리스트"), // 칵테일 추천 카드 리스트
7+
LOADING("로딩중"), // 로딩 메시지
8+
ERROR("에러"); // 에러 메시지
9+
10+
private final String description;
11+
12+
MessageType(String description) {
13+
this.description = description;
14+
}
15+
16+
public String getDescription() {
17+
return description;
18+
}
19+
}

src/main/java/com/back/domain/chatbot/repository/ChatConversationRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,6 @@ public interface ChatConversationRepository extends JpaRepository<ChatConversati
1212
List<ChatConversation> findByUserIdOrderByCreatedAtDesc(Long userId);
1313

1414
List<ChatConversation> findTop20ByUserIdOrderByCreatedAtDesc(Long userId);
15+
16+
boolean existsByUserIdAndMessage(Long userId, String message);
1517
}

0 commit comments

Comments
 (0)