From 37c5dd995d4fe59b61e93393776a7dcf1649cd40 Mon Sep 17 00:00:00 2001 From: Bomin Kwon <101239440+pingowl@users.noreply.github.com> Date: Sun, 28 Jul 2024 04:38:52 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=B2=AB=EB=AC=B8=EC=9E=A5=20=ED=95=84?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80,=20=EA=B8=B8=EC=9D=B4=20?= =?UTF-8?q?=EC=A0=9C=ED=95=9C,=20=ED=98=95=EC=8B=9D=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=20(#3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/mychat/controller/GPTController.java | 28 +++++++++++++++---- src/main/java/mychat/domain/ChatRoom.java | 5 ++++ .../java/mychat/service/ChatRoomService.java | 6 ++++ 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/main/java/mychat/controller/GPTController.java b/src/main/java/mychat/controller/GPTController.java index cfb1d4f..1996478 100644 --- a/src/main/java/mychat/controller/GPTController.java +++ b/src/main/java/mychat/controller/GPTController.java @@ -3,8 +3,10 @@ import mychat.dto.request.GPTRequest; import mychat.dto.response.GPTResponse; import lombok.RequiredArgsConstructor; +import mychat.service.ChatRoomService; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @@ -14,6 +16,8 @@ @RequiredArgsConstructor public class GPTController { + private final ChatRoomService chatRoomService; + @Value("${gpt.model}") private String model; @@ -22,9 +26,9 @@ public class GPTController { private final RestTemplate restTemplate; - @GetMapping("/chat") - public String chat(){ - String prompt = "릴레이로 소설 작성할건데 소설의 첫 줄 써줄래?"; + @GetMapping("/chat/{roomId}") + public String chat(@PathVariable("roomId") String roomId){ + String prompt = "릴레이로 소설 작성할건데 소설의 첫 줄 써줄래? 20자 이내로"; GPTRequest request = new GPTRequest( model,prompt,1,256,1,2,2); @@ -35,9 +39,21 @@ public String chat(){ , GPTResponse.class ); - - return gptResponse.getChoices().get(0).getMessage().getContent(); - + String firstSentence = gptResponse.getChoices().get(0).getMessage().getContent(); + // 입력 문자열을 10글자씩 잘라서 줄바꿈 추가 + StringBuilder sb = new StringBuilder(); + int length = firstSentence.length(); + int chunkSize = 10; // 줄바꿈을 추가할 기준 길이 + for (int i = 0; i < length; i += chunkSize) { + // 현재 위치에서 chunkSize만큼 잘라서 추가 + int end = Math.min(length, i + chunkSize); + sb.append(firstSentence, i, end); + sb.append('\n'); // 줄바꿈 추가 + } + firstSentence = sb.toString(); + + chatRoomService.setFirstSentence(roomId, firstSentence); + return firstSentence; } } diff --git a/src/main/java/mychat/domain/ChatRoom.java b/src/main/java/mychat/domain/ChatRoom.java index 983ef2e..e05b3e6 100644 --- a/src/main/java/mychat/domain/ChatRoom.java +++ b/src/main/java/mychat/domain/ChatRoom.java @@ -26,6 +26,7 @@ public class ChatRoom { private int maxUserCnt; // 채팅방 최대 인원 제한 @Builder.Default private boolean done=false; + private String firstSentence; // 채팅방 삭제시 방장이 비밀번호 입력해야함 @@ -56,4 +57,8 @@ public boolean existsMember(String nickname){ public void setAsDone(){ done = true; } + + public void setFirstSentence(String firstSentence){ + this.firstSentence = firstSentence; + } } diff --git a/src/main/java/mychat/service/ChatRoomService.java b/src/main/java/mychat/service/ChatRoomService.java index 2666e07..a7865db 100644 --- a/src/main/java/mychat/service/ChatRoomService.java +++ b/src/main/java/mychat/service/ChatRoomService.java @@ -66,4 +66,10 @@ public List getAllChatRooms() { private void deleteChatRoom(String roomId){ chatRoomRepository.deleteById(roomId); } + + public void setFirstSentence(String roomId, String firstSentence){ + ChatRoom room = chatRoomRepository.findById(roomId) + .orElseThrow(() -> new CustomException(ErrorCode.NOT_FOUND_CHATROOM)); + room.setFirstSentence(firstSentence); + } }