From b84192e1299d48df078fa53870cecf6b5acf48c9 Mon Sep 17 00:00:00 2001 From: Moojun Date: Mon, 16 Oct 2023 16:17:04 +0900 Subject: [PATCH 1/3] =?UTF-8?q?#116=20-=20feat:=20MessageType=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../capstone/menjil/domain/chat/api/MessageController.java | 4 ++-- .../capstone/menjil/domain/chat/domain/MessageType.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/seoultech/capstone/menjil/domain/chat/api/MessageController.java b/src/main/java/seoultech/capstone/menjil/domain/chat/api/MessageController.java index 53967b0..469d141 100644 --- a/src/main/java/seoultech/capstone/menjil/domain/chat/api/MessageController.java +++ b/src/main/java/seoultech/capstone/menjil/domain/chat/api/MessageController.java @@ -16,7 +16,6 @@ import javax.validation.Valid; -import static seoultech.capstone.menjil.global.exception.ErrorIntValue.INTERNAL_SERVER_ERROR; import static seoultech.capstone.menjil.global.exception.ErrorIntValue.TIME_INPUT_INVALID; @Slf4j @@ -52,10 +51,11 @@ public void enter(@DestinationVariable("roomId") String roomId, handleClientQuestion(roomId, messageRequest); break; case AI_SELECT: + case AI_SUMMARY: + case AI_SUMMARY_ANSWER: // 2. Send Client's Chat Message sendSuccessResponse(roomId, SuccessCode.MESSAGE_SEND_SUCCESS, (MessageResponse) result); break; - case AI_ANSWER: default: sendMessageTypeErrorResponse(roomId); diff --git a/src/main/java/seoultech/capstone/menjil/domain/chat/domain/MessageType.java b/src/main/java/seoultech/capstone/menjil/domain/chat/domain/MessageType.java index de47a0f..532ff29 100644 --- a/src/main/java/seoultech/capstone/menjil/domain/chat/domain/MessageType.java +++ b/src/main/java/seoultech/capstone/menjil/domain/chat/domain/MessageType.java @@ -13,7 +13,7 @@ public enum MessageType { */ ENTER, C_QUESTION, - AI_QUESTION_RESPONSE, AI_SUMMARY_LIST, AI_SELECT, AI_ANSWER, + AI_QUESTION_RESPONSE, AI_SUMMARY_LIST, AI_SELECT, AI_SUMMARY, AI_SUMMARY_ANSWER, TALK, TYPE_NOT_EXISTS; From fca6d4b43e6f197ec9fcd79d87798319c6f0ad7d Mon Sep 17 00:00:00 2001 From: Moojun Date: Mon, 16 Oct 2023 16:31:42 +0900 Subject: [PATCH 2/3] =?UTF-8?q?#116=20-=20feat:=20AI=20=EC=9D=91=EB=8B=B5?= =?UTF-8?q?=20=EC=8B=9C=EC=97=90,=20QaList=20document=EC=9D=98=20=5Fid?= =?UTF-8?q?=EB=A5=BC=20=EB=B0=9B=EC=95=84=EC=98=A4=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=ED=95=9C=EB=8B=A4:=20=EC=B6=94=ED=9B=84=20=EB=8B=B5=EB=B3=80?= =?UTF-8?q?=20=EC=B6=94=EC=B2=9C=EC=97=90=20=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/chat/application/MessageService.java | 11 +++++------ .../domain/chat/dto/response/AwsLambdaResponse.java | 9 +++++++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/java/seoultech/capstone/menjil/domain/chat/application/MessageService.java b/src/main/java/seoultech/capstone/menjil/domain/chat/application/MessageService.java index 397e43c..fdee50e 100644 --- a/src/main/java/seoultech/capstone/menjil/domain/chat/application/MessageService.java +++ b/src/main/java/seoultech/capstone/menjil/domain/chat/application/MessageService.java @@ -30,7 +30,6 @@ import static seoultech.capstone.menjil.global.exception.ErrorIntValue.INTERNAL_SERVER_ERROR; import static seoultech.capstone.menjil.global.exception.ErrorIntValue.TIME_INPUT_INVALID; -import static seoultech.capstone.menjil.global.exception.SuccessIntValue.SUCCESS; @Slf4j @Service @@ -62,7 +61,6 @@ public Optional sendWelcomeMessage(RoomDto roomDto) { public Object saveAndSendClientChatMessage(MessageRequest messageRequest) { // MessageRequest의 time format 검증 Optional dateTimeOptional = parseDateTime(messageRequest.getTime()); - if (dateTimeOptional.isEmpty()) { return TIME_INPUT_INVALID.getValue(); // or handle the error differently } @@ -79,7 +77,8 @@ public Object saveAndSendClientChatMessage(MessageRequest messageRequest) { return MessageResponse.fromChatMessageEntity(clientChatMessage); } - public int saveChatMessage(MessageRequest messageRequest) { + // TODO: 추후 사용되지 않으면 지울 것 + /* public int saveChatMessage(MessageRequest messageRequest) { // MessageRequest time format 검증 Optional dateTimeOptional = parseDateTime(messageRequest.getTime()); @@ -120,7 +119,7 @@ public MessageResponse sendClientMessage(MessageRequest messageRequest) { .messageType(messageRequest.getMessageType()) .time(dateTime) .build(); - } + }*/ public MessageResponse sendAIMessage(String roomId, MessageRequest messageRequest) { String specificMessage = "당신의 궁금증을 빠르게 해결할 수 있게 도와드릴게요!"; @@ -256,7 +255,7 @@ private ChatMessage createLambdaChatMessage(String roomId, LocalDateTime now = getCurrentTimeWithNanos(); // add 4th response - awsLambdaResponses.add(AwsLambdaResponse.of( + awsLambdaResponses.add(AwsLambdaResponse.of(null, message4th, null, null)); ChatMessage awsLambdaResponseMessage = ChatMessage.builder() @@ -274,7 +273,7 @@ private ChatMessage createLambdaChatMessage(String roomId, /*String similarDoesNotExists = messageRequest.getSenderNickname() + "님의 질문과 유사도가 높은 대화 목록이 존재하지 않습니다"; awsLambdaResponseMessage.setLambdaMessage(similarDoesNotExists);*/ - awsLambdaResponseMessage.setLambdaMessageList(AwsLambdaResponse.of( + awsLambdaResponseMessage.setLambdaMessageList(AwsLambdaResponse.of(null, messageRequest.getSenderNickname() + "님의 질문과 유사도가 높은 대화 목록이 존재하지 않습니다", null, null) ); diff --git a/src/main/java/seoultech/capstone/menjil/domain/chat/dto/response/AwsLambdaResponse.java b/src/main/java/seoultech/capstone/menjil/domain/chat/dto/response/AwsLambdaResponse.java index 4b1714a..785626a 100644 --- a/src/main/java/seoultech/capstone/menjil/domain/chat/dto/response/AwsLambdaResponse.java +++ b/src/main/java/seoultech/capstone/menjil/domain/chat/dto/response/AwsLambdaResponse.java @@ -9,6 +9,10 @@ @NoArgsConstructor @AllArgsConstructor public class AwsLambdaResponse { + + @JsonProperty(value = "question_id") + private String question_id; // use underbar because mongodb saved type and return value is different + @JsonProperty(value = "question_summary") private String question_summary; // use underbar because mongodb saved type and return value is different @@ -18,7 +22,8 @@ public class AwsLambdaResponse { @JsonProperty(value = "similarity_percent") private Double similarity_percent; // use underbar because mongodb saved type and return value is different - public static AwsLambdaResponse of(String question_summary, String answer, Double similarity_percent) { - return new AwsLambdaResponse(question_summary, answer, similarity_percent); + public static AwsLambdaResponse of(String question_id, String question_summary, + String answer, Double similarity_percent) { + return new AwsLambdaResponse(question_id, question_summary, answer, similarity_percent); } } From f69728885be7e0d44c3a5cf79a211e5fa538554c Mon Sep 17 00:00:00 2001 From: Moojun Date: Mon, 16 Oct 2023 16:54:26 +0900 Subject: [PATCH 3/3] =?UTF-8?q?#116=20-=20feat:=20=ED=8C=8C=EC=9D=B4?= =?UTF-8?q?=EC=8D=AC=20=EC=A7=88=EB=AC=B8/=EB=8B=B5=EB=B3=80=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=EC=97=90=EC=84=9C,=20=EC=9D=91=EB=8B=B5=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=EA=B0=80=200=EA=B0=9C,=201=EA=B0=9C,=202=EA=B0=9C?= =?UTF-8?q?=EC=9D=B8=20=EA=B2=BD=EC=9A=B0=20=EC=B2=98=EB=A6=AC=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chat/application/MessageService.java | 38 ++++++++++++++----- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/src/main/java/seoultech/capstone/menjil/domain/chat/application/MessageService.java b/src/main/java/seoultech/capstone/menjil/domain/chat/application/MessageService.java index fdee50e..4ca165d 100644 --- a/src/main/java/seoultech/capstone/menjil/domain/chat/application/MessageService.java +++ b/src/main/java/seoultech/capstone/menjil/domain/chat/application/MessageService.java @@ -30,6 +30,7 @@ import static seoultech.capstone.menjil.global.exception.ErrorIntValue.INTERNAL_SERVER_ERROR; import static seoultech.capstone.menjil.global.exception.ErrorIntValue.TIME_INPUT_INVALID; +import static seoultech.capstone.menjil.global.exception.SuccessIntValue.SUCCESS; @Slf4j @Service @@ -78,7 +79,7 @@ public Object saveAndSendClientChatMessage(MessageRequest messageRequest) { } // TODO: 추후 사용되지 않으면 지울 것 - /* public int saveChatMessage(MessageRequest messageRequest) { + public int saveChatMessage(MessageRequest messageRequest) { // MessageRequest time format 검증 Optional dateTimeOptional = parseDateTime(messageRequest.getTime()); @@ -101,6 +102,7 @@ public Object saveAndSendClientChatMessage(MessageRequest messageRequest) { return SUCCESS.getValue(); } + // TODO: 추후 사용되지 않으면 지울 것 public MessageResponse sendClientMessage(MessageRequest messageRequest) { Optional dateTimeOptional = parseDateTime(messageRequest.getTime()); @@ -119,7 +121,7 @@ public MessageResponse sendClientMessage(MessageRequest messageRequest) { .messageType(messageRequest.getMessageType()) .time(dateTime) .build(); - }*/ + } public MessageResponse sendAIMessage(String roomId, MessageRequest messageRequest) { String specificMessage = "당신의 궁금증을 빠르게 해결할 수 있게 도와드릴게요!"; @@ -248,12 +250,30 @@ private ChatMessage createLambdaChatMessage(String roomId, List awsLambdaResponses) { String awsMessage = "먼저, " + messageRequest.getSenderNickname() + "님의 질문과 유사한 질문에서 시작된 대화를 살펴 보실래요?\n" - + "더 신속하게, 다양한 해답을 얻을 수 있을거에요"; - + + "더 신속하게, 다양한 해답을 얻을 수 있을거에요!\n" + + messageRequest.getSenderNickname() + "님이 입력한 질문과 유사한 질문의 개수는 " + awsLambdaResponses.size() + + "개 입니다."; String message4th = "AI 챗봇을 종료하고 멘토 답변 기다리기"; - LocalDateTime now = getCurrentTimeWithNanos(); + if (awsLambdaResponses.size() == 0) { + awsLambdaResponses.add(AwsLambdaResponse.of(null, + messageRequest.getSenderNickname() + + "님의 질문과 유사도가 높은 대화 목록이 존재하지 않습니다", null, null)); + awsLambdaResponses.add(AwsLambdaResponse.of(null, + null, null, null)); + awsLambdaResponses.add(AwsLambdaResponse.of(null, + null, null, null)); + } else if (awsLambdaResponses.size() == 1) { + awsLambdaResponses.add(AwsLambdaResponse.of(null, + null, null, null)); + awsLambdaResponses.add(AwsLambdaResponse.of(null, + null, null, null)); + } else if (awsLambdaResponses.size() == 2) { + awsLambdaResponses.add(AwsLambdaResponse.of(null, + null, null, null)); + } + // 아래는 공통 // add 4th response awsLambdaResponses.add(AwsLambdaResponse.of(null, message4th, null, null)); @@ -269,15 +289,15 @@ private ChatMessage createLambdaChatMessage(String roomId, .build(); // TODO: 추후 디자인에 따라 이 부분 변동 가능성 있음. - if (similarMessageDoesNotExists(awsLambdaResponses)) { - /*String similarDoesNotExists = messageRequest.getSenderNickname() + /*if (similarMessageDoesNotExists(awsLambdaResponses)) { + *//*String similarDoesNotExists = messageRequest.getSenderNickname() + "님의 질문과 유사도가 높은 대화 목록이 존재하지 않습니다"; - awsLambdaResponseMessage.setLambdaMessage(similarDoesNotExists);*/ + awsLambdaResponseMessage.setLambdaMessage(similarDoesNotExists);*//* awsLambdaResponseMessage.setLambdaMessageList(AwsLambdaResponse.of(null, messageRequest.getSenderNickname() + "님의 질문과 유사도가 높은 대화 목록이 존재하지 않습니다", null, null) ); - } + }*/ return awsLambdaResponseMessage; }