Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/CD.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion BEconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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<>())
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -30,6 +31,7 @@
import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;
import java.nio.charset.StandardCharsets;
import java.util.List;

@Slf4j
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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<String> entity = new HttpEntity<>(requestBody, headers);
Expand All @@ -326,4 +329,9 @@ private ClovaResponseDTO callClovaAPI(ClovaRequestDTO request) {
throw new ReportHandler(ReportErrorStatus.CLOVA_API_CALL_FAILED);
}
}
}

// 요청 ID 생성, 옵셔널한 파라미터라 일단 생성은 하지만 추후 필요하다고 판단 시 저장하여 로깅 작업 추가
private String generateRequestId() {
return java.util.UUID.randomUUID().toString().replace("-", "");
}
}