Skip to content

Commit 23ae916

Browse files
authored
[fix] 채팅 수정 - 요청시 userId를 받도록 수정 (#58)
2 parents 0c06b26 + d144b6c commit 23ae916

6 files changed

Lines changed: 41 additions & 21 deletions

File tree

MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Chat/controller/ChatController.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import lombok.RequiredArgsConstructor;
99
import org.springframework.messaging.handler.annotation.MessageMapping;
1010
import org.springframework.messaging.simp.SimpMessagingTemplate;
11+
import org.springframework.web.bind.annotation.GetMapping;
12+
import org.springframework.web.bind.annotation.PathVariable;
1113
import org.springframework.web.bind.annotation.RestController;
1214
import java.util.List;
1315

@@ -19,16 +21,21 @@ public class ChatController {
1921

2022
private final ChatService chatService;
2123

24+
@GetMapping("/chat/history/{userId}")
25+
public List<ChatResponse> getHistory(@PathVariable Long userId) {
26+
return chatService.getHistory(userId);
27+
}
28+
2229
@MessageMapping("/chat.send") // 클라이언트 → /app/chat.send
23-
public void handleChat(ChatRequest request, @LoginUser Users loginUser) {
30+
public void handleChat(ChatRequest request) {
2431
// 1) 유저 메시지 저장 + 클라이언트에게 에코
25-
ChatResponse chatResponse = chatService.saveUserMessage(loginUser, request);
26-
template.convertAndSend("/sub/" + loginUser.getUserId(), chatResponse);
32+
ChatResponse chatResponse = chatService.saveUserMessage(request);
33+
template.convertAndSend("/sub/" + request.getUserId(), chatResponse);
2734

2835
// 2) LLM 호출 & 응답 저장 + 브로드캐스트 (동기 방식)
29-
List<ChatResponse> llmResponses = chatService.askAI(loginUser, request);
36+
List<ChatResponse> llmResponses = chatService.askAI(request);
3037
llmResponses.forEach(aiResp ->
31-
template.convertAndSend("/sub/" + loginUser.getUserId(), aiResp)
38+
template.convertAndSend("/sub/" + request.getUserId(), aiResp)
3239
);
3340
}
3441
}

MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Chat/dto/request/ChatRequest.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@
77
@NoArgsConstructor
88
public class ChatRequest {
99

10+
private Long userId;
11+
1012
private String message;
1113

12-
private ChatRequest(String message) {
14+
private ChatRequest(Long userId, String message) {
15+
this.userId = userId;
1316
this.message = message;
1417
}
1518

16-
public static ChatRequest of(String message) {
17-
return new ChatRequest(message);
19+
public static ChatRequest of(Long userId, String message) {
20+
return new ChatRequest(userId, message);
1821
}
1922
}

MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Chat/dto/request/LLMRequest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ private LLMRequest(Long userId, String message, List<Chat> history) {
2323
this.history = history;
2424
}
2525

26-
public static LLMRequest of(Users loginUser, ChatRequest request, List<Chat> history) {
27-
return new LLMRequest(loginUser.getUserId(), request.getMessage(), history);
26+
public static LLMRequest of(ChatRequest request, List<Chat> history) {
27+
return new LLMRequest(request.getUserId(), request.getMessage(), history);
2828
}
2929
}

MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Chat/entity/Chat.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ private Chat(Long userId, ChatRole role, String message) {
4242
this.message = message;
4343
}
4444

45-
public static Chat of(Users user, ChatRequest request, ChatRole role) {
46-
return new Chat(user.getUserId(), role, request.getMessage());
45+
public static Chat of(ChatRequest request) {
46+
return new Chat(request.getUserId(), ChatRole.USER, request.getMessage());
4747
}
4848

4949
public static Chat of(ChatResponse response) {

MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Chat/service/ChatService.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,46 @@
77
import MathCaptain.weakness.domain.User.entity.Users;
88
import MathCaptain.weakness.domain.common.enums.ChatRole;
99
import lombok.RequiredArgsConstructor;
10+
import lombok.extern.slf4j.Slf4j;
1011
import org.springframework.stereotype.Service;
1112
import org.springframework.transaction.annotation.Transactional;
1213

1314
import java.util.List;
14-
import java.util.UUID;
1515

16+
@Slf4j
1617
@Service
1718
@RequiredArgsConstructor
1819
@Transactional(readOnly = true)
1920
public class ChatService {
2021

21-
public static final ChatRole USER = ChatRole.USER;
2222
private final ChatRepository chatRepository;
2323
private final LLMClient llm;
2424

2525
@Transactional
26-
public ChatResponse saveUserMessage(Users loginUser, ChatRequest request) {
27-
Chat message = Chat.of(loginUser, request, USER);
26+
public ChatResponse saveUserMessage(ChatRequest request) {
27+
log.info("userid {}", request.getUserId());
28+
log.info("message {}", request.getMessage());
29+
Chat message = Chat.of(request);
2830
Chat saved = chatRepository.save(message);
2931
return ChatResponse.of(saved);
3032
}
3133

32-
public List<ChatResponse> askAI(Users loginUser, ChatRequest request) {
33-
List<Chat> history = chatRepository.findAllByUserIdOrderBySendTimeAsc(loginUser.getUserId());
34-
List<Chat> aiChats = llm.call(loginUser, history, request);
34+
public List<ChatResponse> askAI(ChatRequest request) {
35+
List<Chat> history = chatRepository.findAllByUserIdOrderBySendTimeAsc(request.getUserId());
36+
List<Chat> aiChats = llm.call(history, request);
3537
return aiChats.stream()
3638
.map(this::storeAndTransform)
3739
.toList();
3840
}
3941

42+
@Transactional
43+
public List<ChatResponse> getHistory(Long userId) {
44+
List<Chat> history = chatRepository.findAllByUserIdOrderBySendTimeAsc(userId);
45+
return history.stream()
46+
.map(ChatResponse::of)
47+
.toList();
48+
}
49+
4050
private ChatResponse storeAndTransform(Chat message) {
4151
Chat saved = chatRepository.save(message);
4252
return ChatResponse.of(saved);

MathCaptain/weakness/src/main/java/MathCaptain/weakness/domain/Chat/service/LLMClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ public class LLMClient {
3131
@Value("${llm.server.url}")
3232
private String baseUrl;
3333

34-
public List<Chat> call(Users loginUser, List<Chat> history, ChatRequest request) {
34+
public List<Chat> call(List<Chat> history, ChatRequest request) {
3535
try {
36-
LLMRequest llmRequest = LLMRequest.of(loginUser, request, history);
36+
LLMRequest llmRequest = LLMRequest.of(request, history);
3737

3838
ResponseEntity<ChatResponse[]> response = restTemplate.postForEntity(
3939
// TODO : 엔드포인트 수정

0 commit comments

Comments
 (0)