diff --git a/src/main/java/com/ureca/ufit/domain/chatbot/controller/ChatBotController.java b/src/main/java/com/ureca/ufit/domain/chatbot/controller/ChatBotController.java index 2f25906..bcae2f2 100644 --- a/src/main/java/com/ureca/ufit/domain/chatbot/controller/ChatBotController.java +++ b/src/main/java/com/ureca/ufit/domain/chatbot/controller/ChatBotController.java @@ -1,5 +1,7 @@ package com.ureca.ufit.domain.chatbot.controller; +import java.util.concurrent.CompletableFuture; + import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -50,12 +52,14 @@ public ResponseEntity createChatBotReview(CreateCha } @Override - public ResponseEntity createChatBotMessage(CustomUserDetails userDetails, + public ResponseEntity> createChatBotMessage( + CustomUserDetails userDetails, CreateChatBotMessageRequest request) { Long userId = (userDetails != null) ? userDetails.userId() : nonUserId; - CreateChatBotMessageResponse response = chatBotMessageService.createChatBotMessage(request, userId); + CompletableFuture response = chatBotMessageService.createChatBotMessage(request, + userId); return ResponseEntity.status(HttpStatus.CREATED).body(response); } diff --git a/src/main/java/com/ureca/ufit/domain/chatbot/controller/ChatBotControllerApiSpec.java b/src/main/java/com/ureca/ufit/domain/chatbot/controller/ChatBotControllerApiSpec.java index 7e0787a..97269c4 100644 --- a/src/main/java/com/ureca/ufit/domain/chatbot/controller/ChatBotControllerApiSpec.java +++ b/src/main/java/com/ureca/ufit/domain/chatbot/controller/ChatBotControllerApiSpec.java @@ -1,5 +1,7 @@ package com.ureca.ufit.domain.chatbot.controller; +import java.util.concurrent.CompletableFuture; + import org.springframework.data.domain.Pageable; import org.springframework.data.web.PageableDefault; import org.springframework.http.ResponseEntity; @@ -107,7 +109,7 @@ public ResponseEntity createChatBotReview( content = @Content(schema = @Schema(implementation = CreateChatBotMessageResponse.class)) )) @PostMapping("/message") - public ResponseEntity createChatBotMessage( + public ResponseEntity> createChatBotMessage( @Parameter(hidden = true) @AuthenticationPrincipal CustomUserDetails userDetails, @RequestBody @Valid CreateChatBotMessageRequest request diff --git a/src/main/java/com/ureca/ufit/domain/chatbot/service/ChatBotMessageService.java b/src/main/java/com/ureca/ufit/domain/chatbot/service/ChatBotMessageService.java index d250ce8..068eda7 100644 --- a/src/main/java/com/ureca/ufit/domain/chatbot/service/ChatBotMessageService.java +++ b/src/main/java/com/ureca/ufit/domain/chatbot/service/ChatBotMessageService.java @@ -3,6 +3,7 @@ import static com.ureca.ufit.global.profanity.BanwordFilterPolicy.*; import java.util.Set; +import java.util.concurrent.CompletableFuture; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Pageable; @@ -45,7 +46,8 @@ public CursorPageResponse getChatMessages(Long chatRoomId, Pagea } @Async - public CreateChatBotMessageResponse createChatBotMessage(CreateChatBotMessageRequest request, Long userId) { + public CompletableFuture createChatBotMessage(CreateChatBotMessageRequest request, + Long userId) { Set policies = Set.of(NUMBERS, WHITESPACES); @@ -58,11 +60,12 @@ public CreateChatBotMessageResponse createChatBotMessage(CreateChatBotMessageReq CreateAIAnswerRequest createAIAnswerRequest = ChatMessageMapper.toCreateAIAnswerRequest(request, userId); try { - return restTemplate.postForObject( + CreateChatBotMessageResponse response = restTemplate.postForObject( fastApiUrl, createAIAnswerRequest, CreateChatBotMessageResponse.class ); + return CompletableFuture.completedFuture(response); } catch (Exception e) { throw new RestApiException(ChatBotErrorCode.LLM_TIMEOUT);