From 08796c54e7fb1806289a0707fe8eb0aa06b5f2cc Mon Sep 17 00:00:00 2001 From: chaeeun-Han Date: Fri, 22 Mar 2024 01:33:38 +0900 Subject: [PATCH 1/2] refactor: Add API keys to env (#28) --- .../qtudy/service/posts/SummaryService.java | 14 +++++++++----- src/main/resources/application.yml | 4 +++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/beotkkot/qtudy/service/posts/SummaryService.java b/src/main/java/com/beotkkot/qtudy/service/posts/SummaryService.java index 0614485..01ce348 100644 --- a/src/main/java/com/beotkkot/qtudy/service/posts/SummaryService.java +++ b/src/main/java/com/beotkkot/qtudy/service/posts/SummaryService.java @@ -3,6 +3,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonParser; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; @@ -16,19 +17,22 @@ @RequiredArgsConstructor @Service public class SummaryService { + @Value("${CLOVA_API_KEY_ID}") + private String CLOVA_API_KEY_ID; + @Value("${CLOVA_API_KEY}") + private String CLOVA_API_KEY; + private static final String ENDPOINT = "https://naveropenapi.apigw.ntruss.com/text-summary/v1/summarize"; // 텍스트 데이터 받아와서 요약 public String summary(String content) { - String requestURL = "https://naveropenapi.apigw.ntruss.com/text-summary/v1/summarize"; - RestTemplate rt = new RestTemplate(); // HTTPHeader HttpHeaders headers = new HttpHeaders(); headers.add("Content-Type", "application/json;UTF-8"); - headers.add("X-NCP-APIGW-API-KEY-ID", "m099ib4o3p"); - headers.add("X-NCP-APIGW-API-KEY", "lNTRtcRh3AIVZfCysWBmO73eoRHnEF0NVyJTYoSx"); + headers.add("X-NCP-APIGW-API-KEY-ID", CLOVA_API_KEY_ID); + headers.add("X-NCP-APIGW-API-KEY", CLOVA_API_KEY); // HTTPBody Map document = new HashMap<>(); @@ -46,7 +50,7 @@ public String summary(String content) { System.out.println("params = " + params); HttpEntity> summaryTextRequest = new HttpEntity<>(params, headers); - ResponseEntity response = rt.exchange(requestURL, HttpMethod.POST, summaryTextRequest, String.class); + ResponseEntity response = rt.exchange(ENDPOINT, HttpMethod.POST, summaryTextRequest, String.class); String responseBody = response.getBody(); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 6ddbb08..b866dc3 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -17,4 +17,6 @@ spring: ddl-auto: update # OPEN AI API KEY -GPT_API_KEY: ${GPT_API_KEY} \ No newline at end of file +GPT_API_KEY: ${GPT_API_KEY} +CLOVA_API_KEY_ID: ${CLOVA_API_KEY_ID} +CLOVA_API_KEY: ${CLOVA_API_KEY} \ No newline at end of file From 3939490da3625c7e750da13d11d0e97d1e35ff02 Mon Sep 17 00:00:00 2001 From: chaeeun-Han Date: Fri, 22 Mar 2024 01:34:07 +0900 Subject: [PATCH 2/2] fix: Fix transactional bug (#28) --- .../qtudy/service/posts/PostsService.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/beotkkot/qtudy/service/posts/PostsService.java b/src/main/java/com/beotkkot/qtudy/service/posts/PostsService.java index 9e94ddb..d38a536 100644 --- a/src/main/java/com/beotkkot/qtudy/service/posts/PostsService.java +++ b/src/main/java/com/beotkkot/qtudy/service/posts/PostsService.java @@ -38,6 +38,8 @@ public class PostsService { @Transactional public ResponseEntity savePost(Long kakao_uid, PostsRequestDto dto) { Long postId; + List newTagList = new ArrayList<>(); + List increasedTag = new ArrayList<>(); try { if (userRepo.findByKakaoId(kakao_uid) != null) { @@ -47,7 +49,6 @@ public ResponseEntity savePost(Long kakao_uid, PostsRe // 태그 처리 List postTags = dto.getTag(); - List savedTags = new ArrayList<>(); for (String tagName : postTags) { Optional existingTag = tagRepo.findByName(tagName); @@ -55,27 +56,23 @@ public ResponseEntity savePost(Long kakao_uid, PostsRe // 기존에 있는 태그인 경우 count를 증가시킴 Tags tag = existingTag.get(); tag.increaseTagCount(); - savedTags.add(tagName); + increasedTag.add(tagName); } else { // 새로운 태그인 경우 태그를 생성하고 count를 1로 초기화함 Tags newTag = new Tags(); newTag.setName(tagName); newTag.setCount(1); // 새로운 태그의 count를 1로 초기화 newTag.setCategoryId(dto.getCategoryId()); - savedTags.add(tagName); - // 새로운 태그를 저장 - tagRepo.save(newTag); + newTagList.add(newTag); } } // 저장된 태그 목록을 포스트에 설정 - String tagString = String.join(",", savedTags); + String tagString = String.join(",", postTags); post.setTag(tagString); - /** - * postRepo에 해당 유저가 작성한 글에 대한 요약본 저장하는 부분 추가 - */ + // postRepo에 해당 유저가 작성한 글에 대한 요약본 저장하는 부분 추가 String summary = summaryService.summary(dto.getContent()); post.setContent(dto.getContent()); post.setSummary(summary); @@ -84,11 +81,17 @@ public ResponseEntity savePost(Long kakao_uid, PostsRe Posts savedPost = postsRepo.save(post); postId = savedPost.getPostId(); + tagRepo.saveAll(newTagList); } else { return PostsResponseDto.notExistUser(); } } catch (Exception exception) { exception.printStackTrace(); + for (String tagName : increasedTag) { + Optional existingTag = tagRepo.findByName(tagName); + Tags tag = existingTag.get(); + tag.decreaseTagCount(); + } return ResponseDto.databaseError(); } return PostsResponseDto.success(postId);