From 11f8f2922b611767485d4fa6a326acd4c404c0b5 Mon Sep 17 00:00:00 2001 From: Lee Haewon <94354545+Haewonny@users.noreply.github.com> Date: Mon, 1 Apr 2024 09:33:29 +0900 Subject: [PATCH 1/6] =?UTF-8?q?test:=20=ED=81=AC=EB=A1=A4=EB=A7=81=20?= =?UTF-8?q?=EC=9E=90=EB=8F=99=ED=99=94=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20-in?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ewha/lux/once/domain/card/service/CrawlingService.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/ewha/lux/once/domain/card/service/CrawlingService.java b/src/main/java/ewha/lux/once/domain/card/service/CrawlingService.java index 7303bbd..32b6a6f 100644 --- a/src/main/java/ewha/lux/once/domain/card/service/CrawlingService.java +++ b/src/main/java/ewha/lux/once/domain/card/service/CrawlingService.java @@ -21,9 +21,10 @@ public class CrawlingService { private static final Logger LOG = LoggerFactory.getLogger(CrawlingService.class); // 매주 월요일 00:00 카드 혜택 크롤링 - @Scheduled(cron = "0 0 0 ? * 1") + // ** 크롤링 자동화 테스트 -ing ** ========= + @Scheduled(cron = "0 40 9 ? * *") public void cardCrawling() throws CustomException { - String[] cardCompanyList = {"Kookmin", "Hyundai", "Samsung", "Shinhan", "Lotte", "Hana"}; + String[] cardCompanyList = {"Kookmin", "Hana", "Samsung", "Shinhan", "Lotte", "Hyundai"}; for (String cardCompany : cardCompanyList){ crawling(cardCompany); } @@ -88,4 +89,4 @@ private static void executeInsertData(String firstInput, String secondInput) thr throw new CustomException(ResponseCode.CARD_BENEFITS_INSERT_FAIL); } } -} \ No newline at end of file +} From d4cf92d5da14fbee50c262557917f26e8d86ddbb Mon Sep 17 00:00:00 2001 From: Lee Haewon Date: Mon, 1 Apr 2024 12:23:56 +0900 Subject: [PATCH 2/6] =?UTF-8?q?test:=20=ED=98=9C=ED=83=9D=20=EC=9A=94?= =?UTF-8?q?=EC=95=BD=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BB=A8=ED=8A=B8?= =?UTF-8?q?=EB=A1=A4=EB=9F=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/card/controller/CardController.java | 15 +++++++++++++++ .../lux/once/domain/card/service/CardService.java | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/ewha/lux/once/domain/card/controller/CardController.java b/src/main/java/ewha/lux/once/domain/card/controller/CardController.java index 6950464..219c3ef 100644 --- a/src/main/java/ewha/lux/once/domain/card/controller/CardController.java +++ b/src/main/java/ewha/lux/once/domain/card/controller/CardController.java @@ -1,5 +1,6 @@ package ewha.lux.once.domain.card.controller; +import com.fasterxml.jackson.core.JsonProcessingException; import ewha.lux.once.domain.card.dto.CardGoalRequestDto; import ewha.lux.once.domain.card.dto.CardPerformanceRequestDto; import ewha.lux.once.domain.card.dto.CodefCardListRequestDto; @@ -37,6 +38,20 @@ public CommonResponse testtest(@AuthenticationPrincipal UserAccount user, @Pa return new CommonResponse<>(e.getStatus()); } } + + @GetMapping("/test/summary") + @ResponseBody + public CommonResponse testSummary(@AuthenticationPrincipal UserAccount user) { + try { + cardService.updateBenefitSummary(); + return new CommonResponse<>(ResponseCode.SUCCESS); + } catch (CustomException e) { + return new CommonResponse<>(e.getStatus()); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + // ============================================================ // [Get] 마이월렛 조회 diff --git a/src/main/java/ewha/lux/once/domain/card/service/CardService.java b/src/main/java/ewha/lux/once/domain/card/service/CardService.java index e75cba7..a593c4a 100644 --- a/src/main/java/ewha/lux/once/domain/card/service/CardService.java +++ b/src/main/java/ewha/lux/once/domain/card/service/CardService.java @@ -216,7 +216,7 @@ public void updateOwnedCardsPerformance(Users nowUser) throws CustomException { } // 매주 월요일 04:00 AM 카드 혜택 정보 요약 작업 - @Scheduled(cron = "0 0 4 ? * 1") +// @Scheduled(cron = "0 0 4 ? * 1") public void updateBenefitSummary() throws CustomException, JsonProcessingException { List cardList = cardRepository.findAll(); From fea5ff2bd3bfeb6c74747a6ec5f0b198e5b5a4da Mon Sep 17 00:00:00 2001 From: julia-heo <100216331+julia-heo@users.noreply.github.com> Date: Mon, 1 Apr 2024 14:52:51 +0900 Subject: [PATCH 3/6] =?UTF-8?q?feat:=20=EC=B9=B4=EB=93=9C=20=ED=98=9C?= =?UTF-8?q?=ED=83=9D=20test=20api=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../card/controller/CardController.java | 9 ++---- .../once/domain/card/dto/TestSummaryDto.java | 15 ++++++++++ .../once/domain/card/service/CardService.java | 28 +++++++++++++++++++ .../domain/home/service/OpenaiService.java | 19 +++++++++++++ 4 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 src/main/java/ewha/lux/once/domain/card/dto/TestSummaryDto.java diff --git a/src/main/java/ewha/lux/once/domain/card/controller/CardController.java b/src/main/java/ewha/lux/once/domain/card/controller/CardController.java index 219c3ef..6bc46ed 100644 --- a/src/main/java/ewha/lux/once/domain/card/controller/CardController.java +++ b/src/main/java/ewha/lux/once/domain/card/controller/CardController.java @@ -1,11 +1,8 @@ package ewha.lux.once.domain.card.controller; import com.fasterxml.jackson.core.JsonProcessingException; -import ewha.lux.once.domain.card.dto.CardGoalRequestDto; -import ewha.lux.once.domain.card.dto.CardPerformanceRequestDto; -import ewha.lux.once.domain.card.dto.CodefCardListRequestDto; +import ewha.lux.once.domain.card.dto.*; import ewha.lux.once.domain.card.service.CardService; -import ewha.lux.once.domain.card.dto.MainCardRequestDto; import ewha.lux.once.domain.card.service.CrawlingService; import ewha.lux.once.global.common.CommonResponse; import ewha.lux.once.global.common.CustomException; @@ -41,9 +38,9 @@ public CommonResponse testtest(@AuthenticationPrincipal UserAccount user, @Pa @GetMapping("/test/summary") @ResponseBody - public CommonResponse testSummary(@AuthenticationPrincipal UserAccount user) { + public CommonResponse testSummary(@AuthenticationPrincipal UserAccount user, @RequestBody TestSummaryDto testSummaryDto) { try { - cardService.updateBenefitSummary(); + cardService.updateBenefitSummaryTest(testSummaryDto.getPrompt(),testSummaryDto.getModel_name()); return new CommonResponse<>(ResponseCode.SUCCESS); } catch (CustomException e) { return new CommonResponse<>(e.getStatus()); diff --git a/src/main/java/ewha/lux/once/domain/card/dto/TestSummaryDto.java b/src/main/java/ewha/lux/once/domain/card/dto/TestSummaryDto.java new file mode 100644 index 0000000..c2c2817 --- /dev/null +++ b/src/main/java/ewha/lux/once/domain/card/dto/TestSummaryDto.java @@ -0,0 +1,15 @@ +package ewha.lux.once.domain.card.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TestSummaryDto { + private String prompt; + private String model_name; +} diff --git a/src/main/java/ewha/lux/once/domain/card/service/CardService.java b/src/main/java/ewha/lux/once/domain/card/service/CardService.java index a593c4a..3cc6608 100644 --- a/src/main/java/ewha/lux/once/domain/card/service/CardService.java +++ b/src/main/java/ewha/lux/once/domain/card/service/CardService.java @@ -243,4 +243,32 @@ public void updateBenefitSummary() throws CustomException, JsonProcessingExcepti } log.info("전체 카드 혜택 요약 완료"); } + // ** 추후 삭제해야 함 - 테스트용 ** ================================== + public void updateBenefitSummaryTest(String prompt, String model_name) throws CustomException, JsonProcessingException { + + List cardList = cardRepository.findAll(); + + int index = 1; + for (Card card : cardList) { + // 기존의 BenefitSummary 삭제 + List existingSummaries = benefitSummaryRepository.findByCard(card); + benefitSummaryRepository.deleteAll(existingSummaries); + + log.info("[" + card.getName() + "] - 카드 혜택 요약 중... (" + index + "/" + cardList.size() + ")"); + BenefitDto[] benefitJson = openaiService.gptBenefitSummaryTest(card.getBenefits(),prompt,model_name); + + for (BenefitDto benefit : benefitJson) { + BenefitSummary benefitSummary = BenefitSummary.builder() + .benefitField(benefit.getBenefit_field()) + .benefitContents(benefit.getContent()) + .card(card) + .build(); + + benefitSummaryRepository.save(benefitSummary); + } + index++; + } + log.info("전체 카드 혜택 요약 완료"); + } + // ============================================================ } diff --git a/src/main/java/ewha/lux/once/domain/home/service/OpenaiService.java b/src/main/java/ewha/lux/once/domain/home/service/OpenaiService.java index cba38e4..00a563f 100644 --- a/src/main/java/ewha/lux/once/domain/home/service/OpenaiService.java +++ b/src/main/java/ewha/lux/once/domain/home/service/OpenaiService.java @@ -110,4 +110,23 @@ public BenefitDto[] gptBenefitSummary(String benefits) throws CustomException, J return benefitJson; } + // ** 추후 삭제해야 함 - 테스트용 ** ================================== + public BenefitDto[] gptBenefitSummaryTest(String benefits, String prompt, String model_name) throws CustomException, JsonProcessingException { + + // gpt 요청 보내는 부분 + OpenaiChatRequest request = new OpenaiChatRequest(model_name, prompt, benefits); + OpenaiChatResponse response = restTemplate.postForObject(apiUrl, request, OpenaiChatResponse.class); + + if (response == null || response.getChoices() == null || response.getChoices().isEmpty()) { + throw new CustomException(ResponseCode.FAILED_TO_OPENAI); + } + + String result = response.getChoices().get(0).getMessage().getContent(); + + ObjectMapper objectMapper = new ObjectMapper(); + BenefitDto[] benefitJson = objectMapper.readValue(result, BenefitDto[].class); + + return benefitJson; + } + // ============================================================ } From 5e33734dfef2400e2c3ca3637e1f0846c895be55 Mon Sep 17 00:00:00 2001 From: julia-heo <100216331+julia-heo@users.noreply.github.com> Date: Mon, 1 Apr 2024 16:54:29 +0900 Subject: [PATCH 4/6] =?UTF-8?q?test:=20=EC=B9=B4=EB=93=9C=20=ED=98=9C?= =?UTF-8?q?=ED=83=9D=20test=20api=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../once/domain/card/service/CardService.java | 7 ++- .../domain/home/service/OpenaiService.java | 47 +++++++++++++------ 2 files changed, 39 insertions(+), 15 deletions(-) diff --git a/src/main/java/ewha/lux/once/domain/card/service/CardService.java b/src/main/java/ewha/lux/once/domain/card/service/CardService.java index 3cc6608..0d5410a 100644 --- a/src/main/java/ewha/lux/once/domain/card/service/CardService.java +++ b/src/main/java/ewha/lux/once/domain/card/service/CardService.java @@ -255,8 +255,13 @@ public void updateBenefitSummaryTest(String prompt, String model_name) throws Cu benefitSummaryRepository.deleteAll(existingSummaries); log.info("[" + card.getName() + "] - 카드 혜택 요약 중... (" + index + "/" + cardList.size() + ")"); - BenefitDto[] benefitJson = openaiService.gptBenefitSummaryTest(card.getBenefits(),prompt,model_name); + BenefitDto[] benefitJson = openaiService.gptBenefitSummaryTest(card.getBenefits(), prompt, model_name); + + if (benefitJson==null){ + System.out.println("===========제거========="+card.getName()); + cardRepository.delete(card); + } for (BenefitDto benefit : benefitJson) { BenefitSummary benefitSummary = BenefitSummary.builder() .benefitField(benefit.getBenefit_field()) diff --git a/src/main/java/ewha/lux/once/domain/home/service/OpenaiService.java b/src/main/java/ewha/lux/once/domain/home/service/OpenaiService.java index 00a563f..8793a30 100644 --- a/src/main/java/ewha/lux/once/domain/home/service/OpenaiService.java +++ b/src/main/java/ewha/lux/once/domain/home/service/OpenaiService.java @@ -112,21 +112,40 @@ public BenefitDto[] gptBenefitSummary(String benefits) throws CustomException, J } // ** 추후 삭제해야 함 - 테스트용 ** ================================== public BenefitDto[] gptBenefitSummaryTest(String benefits, String prompt, String model_name) throws CustomException, JsonProcessingException { - - // gpt 요청 보내는 부분 - OpenaiChatRequest request = new OpenaiChatRequest(model_name, prompt, benefits); - OpenaiChatResponse response = restTemplate.postForObject(apiUrl, request, OpenaiChatResponse.class); - - if (response == null || response.getChoices() == null || response.getChoices().isEmpty()) { - throw new CustomException(ResponseCode.FAILED_TO_OPENAI); + try { + // gpt 요청 보내는 부분 + OpenaiChatRequest request = new OpenaiChatRequest(model_name, prompt, benefits); + OpenaiChatResponse response = restTemplate.postForObject(apiUrl, request, OpenaiChatResponse.class); + + if (response == null || response.getChoices() == null || response.getChoices().isEmpty()) { + throw new CustomException(ResponseCode.FAILED_TO_OPENAI); + } + + String result = response.getChoices().get(0).getMessage().getContent(); + + ObjectMapper objectMapper = new ObjectMapper(); + BenefitDto[] benefitJson = objectMapper.readValue(result, BenefitDto[].class); + + return benefitJson; + } catch(CustomException | JsonProcessingException e){ + e.printStackTrace(); + System.out.println("===========오류=========="); + int i=2; + while (i>0) { + try { + OpenaiChatRequest request = new OpenaiChatRequest("gpt-4", prompt, benefits); + OpenaiChatResponse response = restTemplate.postForObject(apiUrl, request, OpenaiChatResponse.class); + String result = response.getChoices().get(0).getMessage().getContent(); + + ObjectMapper objectMapper = new ObjectMapper(); + BenefitDto[] benefitJson = objectMapper.readValue(result, BenefitDto[].class); + return benefitJson; + } catch (JsonProcessingException ex) { + i--; + } + } + return null; } - - String result = response.getChoices().get(0).getMessage().getContent(); - - ObjectMapper objectMapper = new ObjectMapper(); - BenefitDto[] benefitJson = objectMapper.readValue(result, BenefitDto[].class); - - return benefitJson; } // ============================================================ } From e27e31a372a9f12e7f97bf362d35365b481b8ac5 Mon Sep 17 00:00:00 2001 From: julia-heo <100216331+julia-heo@users.noreply.github.com> Date: Mon, 1 Apr 2024 19:33:19 +0900 Subject: [PATCH 5/6] =?UTF-8?q?test:=20=EC=B9=B4=EB=93=9C=20=ED=98=9C?= =?UTF-8?q?=ED=83=9D=20test=20api=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ewha/lux/once/domain/card/service/CardService.java | 5 +++-- .../lux/once/domain/home/service/OpenaiService.java | 10 +++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/ewha/lux/once/domain/card/service/CardService.java b/src/main/java/ewha/lux/once/domain/card/service/CardService.java index 0d5410a..3de7a52 100644 --- a/src/main/java/ewha/lux/once/domain/card/service/CardService.java +++ b/src/main/java/ewha/lux/once/domain/card/service/CardService.java @@ -259,8 +259,9 @@ public void updateBenefitSummaryTest(String prompt, String model_name) throws Cu BenefitDto[] benefitJson = openaiService.gptBenefitSummaryTest(card.getBenefits(), prompt, model_name); if (benefitJson==null){ - System.out.println("===========제거========="+card.getName()); - cardRepository.delete(card); + System.out.println("===========PASS========="+card.getName()); +// cardRepository.delete(card); + continue; } for (BenefitDto benefit : benefitJson) { BenefitSummary benefitSummary = BenefitSummary.builder() diff --git a/src/main/java/ewha/lux/once/domain/home/service/OpenaiService.java b/src/main/java/ewha/lux/once/domain/home/service/OpenaiService.java index 8793a30..4218df7 100644 --- a/src/main/java/ewha/lux/once/domain/home/service/OpenaiService.java +++ b/src/main/java/ewha/lux/once/domain/home/service/OpenaiService.java @@ -16,7 +16,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.RestTemplate; import java.util.List; @@ -127,20 +129,22 @@ public BenefitDto[] gptBenefitSummaryTest(String benefits, String prompt, String BenefitDto[] benefitJson = objectMapper.readValue(result, BenefitDto[].class); return benefitJson; - } catch(CustomException | JsonProcessingException e){ + } catch(CustomException | JsonProcessingException | HttpClientErrorException e){ e.printStackTrace(); System.out.println("===========오류=========="); int i=2; while (i>0) { try { - OpenaiChatRequest request = new OpenaiChatRequest("gpt-4", prompt, benefits); + OpenaiChatRequest request = new OpenaiChatRequest("gpt-4-turbo-preview", prompt, benefits); OpenaiChatResponse response = restTemplate.postForObject(apiUrl, request, OpenaiChatResponse.class); String result = response.getChoices().get(0).getMessage().getContent(); ObjectMapper objectMapper = new ObjectMapper(); BenefitDto[] benefitJson = objectMapper.readValue(result, BenefitDto[].class); return benefitJson; - } catch (JsonProcessingException ex) { +// } catch (JsonProcessingException | InterruptedException| HttpClientErrorException ex) { + } catch (JsonProcessingException | HttpClientErrorException ex) { + ex.printStackTrace(); i--; } } From 3555c1d4adfebdaa5262f1cccf909be7cf6ea934 Mon Sep 17 00:00:00 2001 From: Lee Haewon Date: Tue, 2 Apr 2024 00:58:52 +0900 Subject: [PATCH 6/6] =?UTF-8?q?test:=20=EB=B2=94=EC=9C=84=EB=A1=9C=20?= =?UTF-8?q?=ED=98=9C=ED=83=9D=20=EC=9A=94=EC=95=BD=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EC=BB=A8=ED=8A=B8=EB=A1=A4=EB=9F=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../card/controller/CardController.java | 24 ++++++++-- .../domain/card/dto/TestSummaryIndexDto.java | 17 +++++++ .../once/domain/card/service/CardService.java | 47 ++++++++++++++++++- .../global/repository/CardRepository.java | 2 + 4 files changed, 83 insertions(+), 7 deletions(-) create mode 100644 src/main/java/ewha/lux/once/domain/card/dto/TestSummaryIndexDto.java diff --git a/src/main/java/ewha/lux/once/domain/card/controller/CardController.java b/src/main/java/ewha/lux/once/domain/card/controller/CardController.java index 6bc46ed..9f9099f 100644 --- a/src/main/java/ewha/lux/once/domain/card/controller/CardController.java +++ b/src/main/java/ewha/lux/once/domain/card/controller/CardController.java @@ -40,7 +40,20 @@ public CommonResponse testtest(@AuthenticationPrincipal UserAccount user, @Pa @ResponseBody public CommonResponse testSummary(@AuthenticationPrincipal UserAccount user, @RequestBody TestSummaryDto testSummaryDto) { try { - cardService.updateBenefitSummaryTest(testSummaryDto.getPrompt(),testSummaryDto.getModel_name()); + cardService.updateBenefitSummaryTest(testSummaryDto.getPrompt(), testSummaryDto.getModel_name()); + return new CommonResponse<>(ResponseCode.SUCCESS); + } catch (CustomException e) { + return new CommonResponse<>(e.getStatus()); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + } + + @GetMapping("/test/summary/index") + @ResponseBody + public CommonResponse testSummaryByIndex(@AuthenticationPrincipal UserAccount user, @RequestBody TestSummaryIndexDto testSummaryIndexDto) { + try { + cardService.updateBenefitSummaryTestByIndex(testSummaryIndexDto.getPrompt(), testSummaryIndexDto.getModel_name(), testSummaryIndexDto.getStart_index(), testSummaryIndexDto.getEnd_index()); return new CommonResponse<>(ResponseCode.SUCCESS); } catch (CustomException e) { return new CommonResponse<>(e.getStatus()); @@ -96,12 +109,13 @@ public CommonResponse cardGoal(@AuthenticationPrincipal UserAccount user, @Re return new CommonResponse<>(e.getStatus()); } } + // [Get] CODEF 보유 카드 조회 @GetMapping("/list") @ResponseBody - public CommonResponse codefCardList (@AuthenticationPrincipal UserAccount user, @RequestBody CodefCardListRequestDto codefCardListRequestDto) { + public CommonResponse codefCardList(@AuthenticationPrincipal UserAccount user, @RequestBody CodefCardListRequestDto codefCardListRequestDto) { try { - return new CommonResponse<>(ResponseCode.SUCCESS,cardService.getCodefCardList(user.getUsers(), codefCardListRequestDto)); + return new CommonResponse<>(ResponseCode.SUCCESS, cardService.getCodefCardList(user.getUsers(), codefCardListRequestDto)); } catch (CustomException e) { return new CommonResponse<>(e.getStatus()); } @@ -110,7 +124,7 @@ public CommonResponse codefCardList (@AuthenticationPrincipal UserAccount use // [Post] 주카드 등록 @PostMapping("/main") @ResponseBody - public CommonResponse registerMainCard (@AuthenticationPrincipal UserAccount user, @RequestBody MainCardRequestDto mainCardRequestDto) { + public CommonResponse registerMainCard(@AuthenticationPrincipal UserAccount user, @RequestBody MainCardRequestDto mainCardRequestDto) { try { cardService.postRegisterCard(user.getUsers(), mainCardRequestDto); return new CommonResponse<>(ResponseCode.SUCCESS); @@ -122,7 +136,7 @@ public CommonResponse registerMainCard (@AuthenticationPrincipal UserAccount // [Get] 주카드 실적 업데이트 @GetMapping("/main/performance") @ResponseBody - public CommonResponse registerMainCard (@AuthenticationPrincipal UserAccount user) { + public CommonResponse registerMainCard(@AuthenticationPrincipal UserAccount user) { try { cardService.updateOwnedCardsPerformance(user.getUsers()); return new CommonResponse<>(ResponseCode.SUCCESS); diff --git a/src/main/java/ewha/lux/once/domain/card/dto/TestSummaryIndexDto.java b/src/main/java/ewha/lux/once/domain/card/dto/TestSummaryIndexDto.java new file mode 100644 index 0000000..22923f2 --- /dev/null +++ b/src/main/java/ewha/lux/once/domain/card/dto/TestSummaryIndexDto.java @@ -0,0 +1,17 @@ +package ewha.lux.once.domain.card.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class TestSummaryIndexDto { + private String prompt; + private String model_name; + private long start_index; + private long end_index; +} diff --git a/src/main/java/ewha/lux/once/domain/card/service/CardService.java b/src/main/java/ewha/lux/once/domain/card/service/CardService.java index 3de7a52..d2f2aca 100644 --- a/src/main/java/ewha/lux/once/domain/card/service/CardService.java +++ b/src/main/java/ewha/lux/once/domain/card/service/CardService.java @@ -243,7 +243,9 @@ public void updateBenefitSummary() throws CustomException, JsonProcessingExcepti } log.info("전체 카드 혜택 요약 완료"); } + // ** 추후 삭제해야 함 - 테스트용 ** ================================== + // GET /card/test/summary : 전체 카드 혜택 요약 public void updateBenefitSummaryTest(String prompt, String model_name) throws CustomException, JsonProcessingException { List cardList = cardRepository.findAll(); @@ -258,8 +260,8 @@ public void updateBenefitSummaryTest(String prompt, String model_name) throws Cu BenefitDto[] benefitJson = openaiService.gptBenefitSummaryTest(card.getBenefits(), prompt, model_name); - if (benefitJson==null){ - System.out.println("===========PASS========="+card.getName()); + if (benefitJson == null) { + System.out.println("===========PASS=========" + card.getName()); // cardRepository.delete(card); continue; } @@ -276,5 +278,46 @@ public void updateBenefitSummaryTest(String prompt, String model_name) throws Cu } log.info("전체 카드 혜택 요약 완료"); } + + /* + GET /card/test/summary/index : 일부 카드 혜택 요약 + "prompt": 프롬프트 내용, + "model_name": open_ai model, + "start_index": 시작 인덱스, + "end_index": 종료 인덱스 (포함) + */ + public void updateBenefitSummaryTestByIndex(String prompt, String model_name, long start_index, long end_index) throws CustomException, JsonProcessingException { + + List cardList = cardRepository.findByIdBetween(start_index, end_index); + + + int index = 1; + for (Card card : cardList) { + // 기존의 BenefitSummary 삭제 + List existingSummaries = benefitSummaryRepository.findByCard(card); + benefitSummaryRepository.deleteAll(existingSummaries); + + log.info("[" + card.getName() + " (card_id=" + card.getId() + ")] - 카드 혜택 요약 중... (" + index + "/" + cardList.size() + ")"); + + BenefitDto[] benefitJson = openaiService.gptBenefitSummaryTest(card.getBenefits(), prompt, model_name); + + if (benefitJson == null) { + System.out.println("===========PASS=========" + card.getName()); +// cardRepository.delete(card); + continue; + } + for (BenefitDto benefit : benefitJson) { + BenefitSummary benefitSummary = BenefitSummary.builder() + .benefitField(benefit.getBenefit_field()) + .benefitContents(benefit.getContent()) + .card(card) + .build(); + + benefitSummaryRepository.save(benefitSummary); + } + index++; + } + log.info("일부 카드 혜택 요약 완료"); + } // ============================================================ } diff --git a/src/main/java/ewha/lux/once/global/repository/CardRepository.java b/src/main/java/ewha/lux/once/global/repository/CardRepository.java index f6d460b..dded49c 100644 --- a/src/main/java/ewha/lux/once/global/repository/CardRepository.java +++ b/src/main/java/ewha/lux/once/global/repository/CardRepository.java @@ -13,5 +13,7 @@ public interface CardRepository extends JpaRepository { List findAllByNameContains(String name); Optional findCardByName(String name); List findByNameContainingAndCardCompanyIn(String name, List cardCompanies); + + List findByIdBetween(long startIndex, long endIndex); }