From 8b2b1744d88d051d88148b7c154cdc537028a4b6 Mon Sep 17 00:00:00 2001 From: hardwoong Date: Mon, 18 Aug 2025 20:16:09 +0900 Subject: [PATCH 1/2] =?UTF-8?q?Refact=20:=20=EB=A6=AC=ED=8F=AC=ED=8A=B8=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20API=20=EC=84=B1=EB=8A=A5=20=EA=B0=9C?= =?UTF-8?q?=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BEconfig | 2 +- .../alt/service/ClovaApiServiceImpl.java | 2 +- .../report/service/ReportServiceImpl.java | 18 +++++++++++++----- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/BEconfig b/BEconfig index 198cc8f..6b989ea 160000 --- a/BEconfig +++ b/BEconfig @@ -1 +1 @@ -Subproject commit 198cc8f806bafc29d63db921e6b2ac31b655fc60 +Subproject commit 6b989ea900136163675493493189f7beb7dafd27 diff --git a/src/main/java/com/perfact/be/domain/alt/service/ClovaApiServiceImpl.java b/src/main/java/com/perfact/be/domain/alt/service/ClovaApiServiceImpl.java index 7af651d..a169ee9 100644 --- a/src/main/java/com/perfact/be/domain/alt/service/ClovaApiServiceImpl.java +++ b/src/main/java/com/perfact/be/domain/alt/service/ClovaApiServiceImpl.java @@ -56,7 +56,7 @@ public String generateSearchQuery(String articleContent) { .build())) .topP(0.8) .topK(0) - .maxTokens(100) + .maxTokens(1024) .temperature(0.5) .repeatPenalty(5.0) .stopBefore(new ArrayList<>()) diff --git a/src/main/java/com/perfact/be/domain/report/service/ReportServiceImpl.java b/src/main/java/com/perfact/be/domain/report/service/ReportServiceImpl.java index 5763328..85f1ce3 100644 --- a/src/main/java/com/perfact/be/domain/report/service/ReportServiceImpl.java +++ b/src/main/java/com/perfact/be/domain/report/service/ReportServiceImpl.java @@ -1,6 +1,7 @@ package com.perfact.be.domain.report.service; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.ObjectMapper; import com.perfact.be.domain.news.dto.NewsArticleResponse; import com.perfact.be.domain.news.service.NewsService; @@ -30,6 +31,7 @@ import org.springframework.web.client.RestTemplate; import java.util.ArrayList; +import java.nio.charset.StandardCharsets; import java.util.List; @Slf4j @@ -256,12 +258,12 @@ private Object parseJsonResponse(String analysisResult) { // JSON 파싱하여 객체로 변환 (더 강력한 인코딩 처리) ObjectMapper mapper = new ObjectMapper(); - mapper.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true); - mapper.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_SINGLE_QUOTES, true); - mapper.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER, true); + mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true); + mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true); + mapper.configure(JsonParser.Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER, true); // UTF-8로 명시적 인코딩하여 파싱 - Object jsonObject = mapper.readValue(jsonContent.getBytes("UTF-8"), Object.class); + Object jsonObject = mapper.readValue(jsonContent.getBytes(StandardCharsets.UTF_8), Object.class); log.debug("JSON 파싱 성공"); return jsonObject; @@ -301,6 +303,7 @@ private ClovaResponseDTO callClovaAPI(ClovaRequestDTO request) { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); headers.setBearerAuth(CLOVA_API_KEY); + headers.set("X-NCP-CLOVASTUDIO-REQUEST-ID", generateRequestId()); String requestBody = objectMapper.writeValueAsString(request); HttpEntity entity = new HttpEntity<>(requestBody, headers); @@ -326,4 +329,9 @@ private ClovaResponseDTO callClovaAPI(ClovaRequestDTO request) { throw new ReportHandler(ReportErrorStatus.CLOVA_API_CALL_FAILED); } } -} \ No newline at end of file + + // 요청 ID 생성, 옵셔널한 파라미터라 일단 생성은 하지만 추후 필요하다고 판단 시 저장하여 로깅 작업 추가 + private String generateRequestId() { + return java.util.UUID.randomUUID().toString().replace("-", ""); + } +} From 3e10dbc8913fc4e16b8085bad337d0c4c2b9e088 Mon Sep 17 00:00:00 2001 From: hyeonda02 Date: Mon, 18 Aug 2025 22:03:41 +0900 Subject: [PATCH 2/2] =?UTF-8?q?Refactor=20:=20CD.yml=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/CD.yml | 1 + BEconfig | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/CD.yml b/.github/workflows/CD.yml index a2387c5..33b702b 100644 --- a/.github/workflows/CD.yml +++ b/.github/workflows/CD.yml @@ -91,4 +91,5 @@ jobs: -e API_NAVER_CLIENT_ID="${{ secrets.API_NAVER_CLIENT_ID }}" \ -e API_NAVER_CLIENT_SECRET="${{ secrets.API_NAVER_CLIENT_SECRET }}" \ -e API_CLOVA_KEY="${{ secrets.API_CLOVA_KEY }}" \ + -e API_CLOVA_URL="${{ secrets.API_CLOVA_URL }}" \ ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_REPO }}:latest diff --git a/BEconfig b/BEconfig index 6b989ea..081a38c 160000 --- a/BEconfig +++ b/BEconfig @@ -1 +1 @@ -Subproject commit 6b989ea900136163675493493189f7beb7dafd27 +Subproject commit 081a38c402a8e74287b678e3702c7641e0ab5c06