Skip to content

Commit 085112c

Browse files
committed
fix: return inner data on chatbot/chat
1 parent 52cc72a commit 085112c

File tree

1 file changed

+35
-14
lines changed

1 file changed

+35
-14
lines changed

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

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -126,14 +126,15 @@ else if (currentStep >= 1 && currentStep <= 4) {
126126

127127
// ========== 3순위: 기본 일반 대화 ==========
128128
log.info("[DEFAULT] 일반 대화 모드 - userId: {}", requestDto.getUserId());
129-
String response = generateAIResponse(requestDto);
129+
ChatConversation savedResponse = generateAIResponse(requestDto);
130130

131131
return ChatResponseDto.builder()
132+
.id(savedResponse.getId())
132133
.userId(requestDto.getUserId())
133-
.message(response)
134+
.message(savedResponse.getMessage())
134135
.sender(MessageSender.CHATBOT)
135136
.type(MessageType.TEXT)
136-
.createdAt(LocalDateTime.now())
137+
.createdAt(savedResponse.getCreatedAt())
137138
.build();
138139

139140
} catch (Exception e) {
@@ -172,9 +173,10 @@ private String buildConversationContext(List<ChatConversation> recentChats) {
172173

173174
/**
174175
* 대화 저장 - 변경사항: 사용자 메시지와 봇 응답을 각각 별도로 저장
176+
* @return 저장된 봇 응답 엔티티 (id 포함)
175177
*/
176178
@Transactional
177-
public void saveConversation(ChatRequestDto requestDto, String response) {
179+
public ChatConversation saveConversation(ChatRequestDto requestDto, String response) {
178180
// 1. 사용자 메시지 저장
179181
ChatConversation userMessage = ChatConversation.builder()
180182
.userId(requestDto.getUserId())
@@ -191,7 +193,7 @@ public void saveConversation(ChatRequestDto requestDto, String response) {
191193
.sender(MessageSender.CHATBOT)
192194
.createdAt(LocalDateTime.now())
193195
.build();
194-
chatConversationRepository.save(botResponse);
196+
return chatConversationRepository.save(botResponse);
195197
}
196198

197199
/**
@@ -356,8 +358,9 @@ private String postProcessResponse(String response, InternalMessageType type) {
356358

357359
/**
358360
* AI 응답 생성
361+
* @return 저장된 봇 응답 엔티티 (id 포함)
359362
*/
360-
private String generateAIResponse(ChatRequestDto requestDto) {
363+
private ChatConversation generateAIResponse(ChatRequestDto requestDto) {
361364
log.info("Normal chat mode for userId: {}", requestDto.getUserId());
362365

363366
// 메시지 타입 감지 (내부 enum 사용)
@@ -384,10 +387,8 @@ private String generateAIResponse(ChatRequestDto requestDto) {
384387
// 응답 후처리
385388
response = postProcessResponse(response, messageType);
386389

387-
// 대화 저장 - 사용자 메시지와 봇 응답을 각각 저장
388-
saveConversation(requestDto, response);
389-
390-
return response;
390+
// 대화 저장 - 사용자 메시지와 봇 응답을 각각 저장하고 저장된 봇 응답 반환
391+
return saveConversation(requestDto, response);
391392
}
392393

393394
/**
@@ -442,14 +443,15 @@ private boolean isStepRecommendationTrigger(String message) {
442443
* 일반 대화와 구분하여 추천에 특화된 응답 생성
443444
*/
444445
private ChatResponseDto generateAIResponseWithContext(ChatRequestDto requestDto, String mode) {
445-
String response = generateAIResponse(requestDto);
446+
ChatConversation savedResponse = generateAIResponse(requestDto);
446447

447448
return ChatResponseDto.builder()
449+
.id(savedResponse.getId())
448450
.userId(requestDto.getUserId())
449-
.message(response)
451+
.message(savedResponse.getMessage())
450452
.sender(MessageSender.CHATBOT)
451453
.type(MessageType.TEXT)
452-
.createdAt(LocalDateTime.now())
454+
.createdAt(savedResponse.getCreatedAt())
453455
.metaData(ChatResponseDto.MetaData.builder()
454456
.actionType(mode)
455457
.currentStep(0)
@@ -518,6 +520,24 @@ private ChatResponseDto handleStepRecommendation(ChatRequestDto requestDto) {
518520
type = MessageType.RADIO_OPTIONS;
519521
}
520522

523+
// 사용자 메시지 저장 (단계별 추천 요청)
524+
ChatConversation userMessage = ChatConversation.builder()
525+
.userId(requestDto.getUserId())
526+
.message(requestDto.getMessage())
527+
.sender(MessageSender.USER)
528+
.createdAt(LocalDateTime.now())
529+
.build();
530+
chatConversationRepository.save(userMessage);
531+
532+
// 봇 응답 저장
533+
ChatConversation botResponse = ChatConversation.builder()
534+
.userId(requestDto.getUserId())
535+
.message(message)
536+
.sender(MessageSender.CHATBOT)
537+
.createdAt(LocalDateTime.now())
538+
.build();
539+
ChatConversation savedResponse = chatConversationRepository.save(botResponse);
540+
521541
// 메타데이터 포함
522542
ChatResponseDto.MetaData metaData = ChatResponseDto.MetaData.builder()
523543
.currentStep(currentStep)
@@ -527,13 +547,14 @@ private ChatResponseDto handleStepRecommendation(ChatRequestDto requestDto) {
527547
.build();
528548

529549
return ChatResponseDto.builder()
550+
.id(savedResponse.getId())
530551
.userId(requestDto.getUserId())
531552
.message(message)
532553
.sender(MessageSender.CHATBOT)
533554
.type(type)
534555
.stepData(stepData)
535556
.metaData(metaData)
536-
.createdAt(LocalDateTime.now())
557+
.createdAt(savedResponse.getCreatedAt())
537558
.build();
538559
}
539560

0 commit comments

Comments
 (0)