Skip to content

Commit dc3f499

Browse files
authored
merge : 챗봇 엔티티 구조 수정 및 프롬포트 조정
[refactor] 챗봇 엔티티 구조 수정 및 프롬포트 조정#176
2 parents 085d1f7 + e1c1a8f commit dc3f499

File tree

6 files changed

+243
-101
lines changed

6 files changed

+243
-101
lines changed

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
import com.back.domain.chatbot.dto.ChatRequestDto;
44
import com.back.domain.chatbot.dto.ChatResponseDto;
5+
import com.back.domain.chatbot.dto.SaveBotMessageDto;
56
import com.back.domain.chatbot.entity.ChatConversation;
67
import com.back.domain.chatbot.service.ChatbotService;
78
import com.back.global.rsData.RsData;
9+
import io.swagger.v3.oas.annotations.Operation;
810
import jakarta.validation.Valid;
911
import lombok.RequiredArgsConstructor;
1012
import lombok.extern.slf4j.Slf4j;
@@ -22,6 +24,7 @@ public class ChatbotController {
2224
private final ChatbotService chatbotService;
2325

2426
@PostMapping("/chat")
27+
@Operation(summary = "채팅 메시지 보내기", description = "자율형 대화 및 단계별 추천 두가지 모드 지원")
2528
public ResponseEntity<RsData<ChatResponseDto>> sendMessage(@Valid @RequestBody ChatRequestDto requestDto) {
2629
try {
2730
ChatResponseDto response = chatbotService.sendMessage(requestDto);
@@ -34,6 +37,7 @@ public ResponseEntity<RsData<ChatResponseDto>> sendMessage(@Valid @RequestBody C
3437
}
3538

3639
@GetMapping("/history/user/{userId}")
40+
@Operation(summary = "유저 대화 히스토리", description = "사용자 채팅 기록 조회")
3741
public ResponseEntity<RsData<List<ChatConversation>>> getUserChatHistory(@PathVariable Long userId) {
3842
try {
3943
List<ChatConversation> history = chatbotService.getUserChatHistory(userId);
@@ -45,4 +49,30 @@ public ResponseEntity<RsData<List<ChatConversation>>> getUserChatHistory(@PathVa
4549
}
4650
}
4751

52+
@PostMapping("/bot-message")
53+
@Operation(summary = "봇 메시지 저장", description = "FE에서 생성한 봇 메시지(인사말 등)를 DB에 저장")
54+
public ResponseEntity<RsData<ChatConversation>> saveBotMessage(@Valid @RequestBody SaveBotMessageDto requestDto) {
55+
try {
56+
ChatConversation savedMessage = chatbotService.saveBotMessage(requestDto);
57+
return ResponseEntity.ok(RsData.successOf(savedMessage));
58+
} catch (Exception e) {
59+
log.error("봇 메시지 저장 중 오류 발생: ", e);
60+
return ResponseEntity.internalServerError()
61+
.body(RsData.failOf("서버 오류가 발생했습니다."));
62+
}
63+
}
64+
65+
@PostMapping("/greeting/{userId}")
66+
@Operation(summary = "인사말 생성", description = "사용자가 채팅을 시작할 때 기본 인사말을 생성하고 저장")
67+
public ResponseEntity<RsData<ChatConversation>> createGreeting(@PathVariable Long userId) {
68+
try {
69+
ChatConversation greeting = chatbotService.createGreetingMessage(userId);
70+
return ResponseEntity.ok(RsData.successOf(greeting));
71+
} catch (Exception e) {
72+
log.error("인사말 생성 중 오류 발생: ", e);
73+
return ResponseEntity.internalServerError()
74+
.body(RsData.failOf("서버 오류가 발생했습니다."));
75+
}
76+
}
77+
4878
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
package com.back.domain.chatbot.dto;
3+
4+
import jakarta.validation.constraints.NotBlank;
5+
import jakarta.validation.constraints.NotNull;
6+
import lombok.AllArgsConstructor;
7+
import lombok.Getter;
8+
import lombok.NoArgsConstructor;
9+
import lombok.Setter;
10+
11+
@Getter
12+
@Setter
13+
@NoArgsConstructor
14+
@AllArgsConstructor
15+
public class SaveBotMessageDto {
16+
17+
@NotNull(message = "사용자 ID는 필수입니다.")
18+
private Long userId;
19+
20+
@NotBlank(message = "메시지 내용은 필수입니다.")
21+
private String message;
22+
23+
// 선택적: 메시지 타입 (GREETING, HELP, ERROR 등)
24+
private String messageType;
25+
}

src/main/java/com/back/domain/chatbot/entity/ChatConversation.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.back.domain.chatbot.entity;
22

3+
import com.back.domain.chatbot.enums.MessageSender;
34
import jakarta.persistence.*;
45
import lombok.*;
6+
import org.springframework.data.annotation.CreatedDate;
57

68
import java.time.LocalDateTime;
79

@@ -19,18 +21,17 @@ public class ChatConversation {
1921
@GeneratedValue(strategy = IDENTITY)
2022
private Long id;
2123

24+
@Column(nullable = false)
2225
private Long userId;
2326

24-
@Column(columnDefinition = "TEXT")
25-
private String userMessage;
27+
@Column(columnDefinition = "TEXT", nullable = false)
28+
private String message;
2629

27-
@Column(columnDefinition = "TEXT")
28-
private String botResponse;
30+
@Enumerated(EnumType.STRING)
31+
@Column(nullable = false, length = 20)
32+
@Builder.Default
33+
private MessageSender sender = MessageSender.USER;
2934

35+
@CreatedDate
3036
private LocalDateTime createdAt;
31-
32-
@PrePersist
33-
protected void onCreate() {
34-
createdAt = LocalDateTime.now();
35-
}
3637
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.back.domain.chatbot.enums;
2+
3+
public enum MessageSender {
4+
USER("사용자"),
5+
CHATBOT("챗봇");
6+
7+
private final String description;
8+
9+
MessageSender(String description) {
10+
this.description = description;
11+
}
12+
13+
public String getDescription() {
14+
return description;
15+
}
16+
}
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.back.domain.chatbot.repository;
22

33
import com.back.domain.chatbot.entity.ChatConversation;
4-
import org.springframework.data.domain.Page;
5-
import org.springframework.data.domain.Pageable;
64
import org.springframework.data.jpa.repository.JpaRepository;
75
import org.springframework.stereotype.Repository;
86

@@ -11,7 +9,7 @@
119
@Repository
1210
public interface ChatConversationRepository extends JpaRepository<ChatConversation, Long> {
1311

14-
Page<ChatConversation> findByUserIdOrderByCreatedAtDesc(Long userId, Pageable pageable);
12+
List<ChatConversation> findByUserIdOrderByCreatedAtDesc(Long userId);
1513

16-
List<ChatConversation> findTop5ByUserIdOrderByCreatedAtDesc(Long userId);
14+
List<ChatConversation> findTop20ByUserIdOrderByCreatedAtDesc(Long userId);
1715
}

0 commit comments

Comments
 (0)