Skip to content

Commit b7d11f8

Browse files
author
yuhojae
committed
Merge branch 'develop' into feat/issue-23
2 parents 39ce114 + eea34fa commit b7d11f8

File tree

12 files changed

+88
-44
lines changed

12 files changed

+88
-44
lines changed

api/src/main/java/com/mbtips/common/exception/handler/GlobalExceptionHandler.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@ public ApiResponse<Void> exceptionsHandler(MethodArgumentNotValidException e) {
5050
return ApiResponse.fail(CommonException.INVALID_REQUEST_ERROR);
5151
}
5252

53-
/**
54-
* VirtualFriendNotFoundException 구현 변경
55-
*/
53+
5654

5755
}

api/src/main/java/com/mbtips/domain/addition/service/AdditionService.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.mbtips.domain.addition.service;
22

33
import com.mbtips.clova.dto.Message;
4+
import com.mbtips.common.exception.CustomException;
5+
import com.mbtips.common.exception.enums.CommonException;
46
import com.mbtips.common.mbtiinfo.MbtiTraits;
57
import com.mbtips.common.mbtiinfo.MbtiType;
68
import com.mbtips.domain.conversation.service.ConversationService;
@@ -39,17 +41,25 @@ public String requestConversationTips(Long virtualFriendId) {
3941
}
4042

4143
public String requestTemperature(Long conversationId) {
42-
Conversation conversation = conversationService.findById(conversationId);
44+
4345
List<GetMessageResponseDto> messages = messageService.getMessagesOfConversationId(conversationId);
4446

45-
String[] messageList = {
46-
"사용자: 안녕하세요, 오늘 기분이 어떠세요?",
47-
"AI: 안녕하세요, 오늘 기분이 활기차고 즐거워요.",
48-
"사용자: 오늘 특별한 계획이 있으세요?",
49-
"AI: 네, 친구와 함께 신나는 시간을 보낼 예정입니다."
50-
};
51-
String requestConversation = String.join(", ", messageList);
52-
String prompt = requestConversation + "현재까지의 대화 온도 측정해서 0~100 사이의 숫자로만 대답해줘 냉정하게 판단해주고, 숫자로만 대답해.";
47+
StringBuilder messageBuilder = new StringBuilder();
48+
49+
if(messages.size() <= 5) throw new CustomException(CommonException.TOO_FEW_CONVERSATIONS);
50+
for(int i = messages.size() - 6; i < messages.size(); i++){
51+
if(messages.get(i).userId() != null) {
52+
messageBuilder.append("사용자 : ");
53+
messageBuilder.append(messages.get(i).messageContent());
54+
}
55+
if(messages.get(i).virtualFriendId() != null) {
56+
messageBuilder.append("가상 친구 : ");
57+
messageBuilder.append(messages.get(i).messageContent());
58+
}
59+
if(i != messages.size() -1 ) messageBuilder.append(", ");
60+
}
61+
log.debug("대화 내역 : {}", messageBuilder.toString());
62+
String prompt = messageBuilder + "현재까지의 대화 온도 측정해서 0~100 사이의 숫자로만 대답해줘 냉정하게 판단해주고, 숫자로만 대답해.";
5363
log.debug("prompt : {}", prompt);
5464
String temperatureResponse = messageManager.messageRequest(prompt);
5565
String result = temperatureResponse.replaceAll("[^0-9]", "");

api/src/main/java/com/mbtips/domain/virtualfriend/VirtualFriendService.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -78,18 +78,6 @@ public void deleteVirtualFriend(Long virtualFriendId, User user) {
7878

7979
}
8080

81-
public String makePrompt(Long conversationId) {
82-
Conversation conversation = conversationRepository.findById(conversationId);
83-
VirtualFriend virtualFriend = conversation.getVirtualFriend();
84-
// 대화방 기록
85-
// 가상친구 특성
86-
String mbti = virtualFriend.getMbti();
87-
MbtiType mbtiType = MbtiType.valueOf(mbti);
88-
String result = MbtiTraits.getTrait(mbtiType);
89-
// 가상친구 관심사
90-
result += ". 이제 대화를 시작해보자!";
91-
return result;
92-
}
9381

9482
public VirtualFriendInfoResponse findFriendInfoById(Long virtualFriendId) {
9583
VirtualFriend virtualFriend = virtualFriendRepository.findById(virtualFriendId);

api/src/main/java/com/mbtips/message/application/manager/MessageManager.java

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,22 @@
55
import com.mbtips.clova.client.ClovaApiFeignClient;
66
import com.mbtips.clova.dto.ChatRequest;
77
import com.mbtips.clova.dto.ClovaApiResponse;
8+
import com.mbtips.common.mbtiinfo.MbtiTraits;
9+
import com.mbtips.common.mbtiinfo.MbtiType;
810
import com.mbtips.common.provider.ClovaApiKeyProvider;
11+
import com.mbtips.conversation.interfaces.ConversationRepository;
912
import com.mbtips.domain.conversation.service.ConversationService;
1013
import com.mbtips.domain.converstation.Conversation;
1114
import com.mbtips.domain.message.Message;
1215
import com.mbtips.domain.message.dto.request.CreateMessageRequestDto;
1316
import com.mbtips.domain.user.User;
14-
import com.mbtips.fastfriend.entity.FastFriend;
17+
import com.mbtips.domain.virtualfriend.VirtualFriend;
1518
import com.mbtips.message.application.service.MessageService;
1619
import lombok.RequiredArgsConstructor;
1720
import lombok.extern.slf4j.Slf4j;
1821
import org.springframework.stereotype.Service;
1922

2023
import java.util.Arrays;
21-
import java.util.Objects;
22-
import java.util.Optional;
2324
import java.util.UUID;
2425

2526
@Service
@@ -31,21 +32,49 @@ public class MessageManager {
3132
private final ConversationService conversationService;
3233
private final ClovaApiFeignClient clovaApiFeignClient;
3334
private final ClovaApiKeyProvider clovaApiKeyProvider;
35+
private final ConversationRepository conversationRepository;
3436
private final ObjectMapper objectMapper;
3537

36-
public void sendMessage(User user, CreateMessageRequestDto createMessageRequestDto) {
38+
public String sendMessage(User user, CreateMessageRequestDto createMessageRequestDto) {
3739
Conversation conversation = conversationService.findById(createMessageRequestDto.conversationId());
3840

3941

4042
Message requestMessage = Message.builder()
4143
.user(user)
4244
.conversation(conversation)
43-
.virtualFriend(conversation.getVirtualFriend())
45+
// .virtualFriend(conversation.getVirtualFriend())
4446
.messageContent(createMessageRequestDto.messageContent())
4547
.build();
4648

4749
messageService.saveMessage(requestMessage);
4850

51+
String prompt = makePrompt(createMessageRequestDto.conversationId());
52+
log.debug("prompt : {} ", prompt);
53+
String responseContent = messageRequest(prompt + " " + createMessageRequestDto.messageContent());
54+
log.debug("responseMessage : {} ", responseContent);
55+
56+
Message responseMessage = Message.builder()
57+
.conversation(conversation)
58+
.virtualFriend(conversation.getVirtualFriend())
59+
.messageContent(responseContent)
60+
.build();
61+
62+
messageService.saveMessage(responseMessage);
63+
return responseContent;
64+
}
65+
66+
private String makePrompt(Long conversationId) {
67+
Conversation conversation = conversationRepository.findById(conversationId);
68+
VirtualFriend virtualFriend = conversation.getVirtualFriend();
69+
// 대화방 기록
70+
// 가상친구 특성
71+
String mbti = virtualFriend.getMbti();
72+
MbtiType mbtiType = MbtiType.valueOf(mbti);
73+
String result = MbtiTraits.getTrait(mbtiType);
74+
// 가상친구 관심사
75+
result += ". 이제 대화를 시작해보자!";
76+
return result;
77+
4978
}
5079

5180
public String messageRequest(String content){

api/src/main/java/com/mbtips/message/controller/MessageController.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,7 @@ public ApiResponse<List<GetMessageResponseDto>> getMessagesOfConversationId(@Pat
3434

3535
@PostMapping
3636
public ApiResponse<String> createMessage(@RequestBody CreateMessageRequestDto createMessageRequestDto, @LoginUser User user){
37-
messageManager.sendMessage(user, createMessageRequestDto);
38-
String content = createMessageRequestDto.messageContent();
39-
String prompt = virtualFriendService.makePrompt(createMessageRequestDto.conversationId());
40-
log.debug("prompt : {}", prompt);
41-
String clovaResponse = messageManager.messageRequest(content);
37+
String clovaResponse = messageManager.sendMessage(user, createMessageRequestDto);
4238
return ApiResponse.success(clovaResponse);
4339
}
4440

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.mbtips.user.controller;
2+
3+
import com.mbtips.common.properties.JwtProperties;
4+
import jakarta.annotation.PostConstruct;
5+
import org.springframework.context.ApplicationContext;
6+
import org.springframework.stereotype.Component;
7+
8+
@Component
9+
public class BeanChecker {
10+
11+
private final ApplicationContext applicationContext;
12+
13+
public BeanChecker(ApplicationContext applicationContext) {
14+
this.applicationContext = applicationContext;
15+
}
16+
17+
@PostConstruct
18+
public void checkBean() {
19+
JwtProperties bean = applicationContext.getBean(JwtProperties.class);
20+
System.out.println("JwtProperties 빈 등록 여부: " + bean.secret());
21+
System.out.println("JwtProperties 빈 등록 여부: " + bean.expiration());
22+
}
23+
}

core/src/main/java/com/mbtips/common/exception/enums/CommonException.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ public enum CommonException implements ExceptionInterface {
99
INVALID_REQUEST_ERROR(400, "잘못된 요청입니다."),
1010
LOGIN_EXPIRATION(403, "로그인이 만료되었습니다."),
1111
INTERNAL_SERVER_ERROR(500, "서버 오류입니다."),
12-
JSON_PROCESS_ERROR(501, "JSON 변형 도중 오류가 발생했습니다.")
13-
12+
JSON_PROCESS_ERROR(501, "JSON 변형 도중 오류가 발생했습니다."),
13+
TOO_FEW_CONVERSATIONS(40001, "대화의 개수가 부족합니다.(5회 이상)")
1414
;
1515

1616
private final int code;

repository/src/main/java/com/mbtips/fastfriend/entity/FastFriend.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ public class FastFriend {
2626
private int fastFriendAge;
2727

2828
@Enumerated(EnumType.STRING)
29-
@Column(length = 10, nullable = false)
3029
private Gender fastFriendSex;
3130

3231
@Column(length = 20)

repository/src/main/java/com/mbtips/message/entity/MessageEntity.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ public class MessageEntity {
2727
private ConversationEntity conversationEntity;
2828

2929
@ManyToOne(fetch = FetchType.LAZY)
30-
@JoinColumn(name = "user_id", nullable = false, foreignKey = @ForeignKey(NO_CONSTRAINT))
30+
@JoinColumn(name = "user_id", foreignKey = @ForeignKey(NO_CONSTRAINT))
3131
private UserEntity user;
3232

3333
@ManyToOne(fetch = FetchType.LAZY)
34-
@JoinColumn(name = "virtual_friend_id", nullable = false, foreignKey = @ForeignKey(NO_CONSTRAINT))
34+
@JoinColumn(name = "virtual_friend_id", foreignKey = @ForeignKey(NO_CONSTRAINT))
3535
private VirtualFriendEntity virtualFriendEntity;
3636

3737
@Column(length = 500, nullable = false)
@@ -45,8 +45,8 @@ public class MessageEntity {
4545
public MessageEntity(Message message) {
4646
this.messageId = message.getMessageId();
4747
this.conversationEntity = new ConversationEntity(message.getConversation());
48-
this.user = new UserEntity(message.getUser());
49-
this.virtualFriendEntity = new VirtualFriendEntity(message.getVirtualFriend());
48+
if(message.getUser() != null ) this.user = new UserEntity(message.getUser());
49+
if(message.getVirtualFriend() != null)this.virtualFriendEntity = new VirtualFriendEntity(message.getVirtualFriend());
5050
this.messageContent = message.getMessageContent();
5151
this.sentAt = LocalDateTime.now();
5252
}

repository/src/main/java/com/mbtips/message/repository/jpa/MessageJpaRepository.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public interface MessageJpaRepository extends JpaRepository<MessageEntity, Long>
1919
"m.user.userId, " +
2020
"m.virtualFriendEntity.virtualFriendId) " +
2121
"from MessageEntity m " +
22-
"where m.conversationEntity.conversationId = :conversationId")
22+
"where m.conversationEntity.conversationId = :conversationId " +
23+
"ORDER BY m.sentAt asc")
2324
List<GetMessageResponseDto> findByConversationId(Long conversationId);
2425
}

0 commit comments

Comments
 (0)