From 2c43d24dca2d9530aafe0a4b7ff898d8002a19d3 Mon Sep 17 00:00:00 2001 From: tjdtn0219 Date: Wed, 20 Nov 2024 17:07:25 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20lambda=EB=A1=9C=20=EB=B0=9B?= =?UTF-8?q?=EC=95=84=EC=98=A8=20videoid=20=EC=97=86=EC=9D=84=20=EC=8B=9C?= =?UTF-8?q?=20=EC=98=A4=EB=A5=98=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/service/ContentService.java | 32 ++++++++++++++----- .../recommend/service/RecommendService.java | 7 ++-- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/src/main/java/swm/betterlife/antifragile/domain/content/service/ContentService.java b/src/main/java/swm/betterlife/antifragile/domain/content/service/ContentService.java index c1d27cb..4d6b434 100644 --- a/src/main/java/swm/betterlife/antifragile/domain/content/service/ContentService.java +++ b/src/main/java/swm/betterlife/antifragile/domain/content/service/ContentService.java @@ -9,6 +9,7 @@ import java.util.function.Function; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; +import org.checkerframework.checker.units.qual.A; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; @@ -48,7 +49,12 @@ public ContentListResponse saveRecommendContents(String memberId, LocalDate date DiaryAnalysis analysis = diaryAnalysisService.getDiaryAnalysisByMemberIdAndDate(memberId, date); Member member = memberService.getMemberById(memberId); - List recommendedContents = getRecommendContentsByAnalysis(analysis, member); + + String prompt = "이 일기의 감정에 정신적으로 도움이 되는 메타데이터를 10개 추천해줘"; + prompt = recommendService.createPrompt( + analysis.getEmotions(), analysis.getEvent(), member, prompt + ); + List recommendedContents = getRecommendContentsByAnalysis(analysis, member, prompt); List savedContents = saveOrUpdateContents(recommendedContents); diaryAnalysisService.saveRecommendContents(analysis, savedContents); @@ -76,7 +82,11 @@ public ContentListResponse saveReRecommendContents( Member member = memberService.getMemberById(memberId); List recommendedUrls = extractRecommendContentUrls(analysis); - List recommendedContents = getRecommendContentsByAnalysis(analysis, member); + String prompt = "지금 사용자의 상태에 따라 관련되거나 정신적으로 도움 되는 콘텐츠 10개를 추천해줘"; + prompt = recommendService.createPrompt( + analysis.getEmotions(), analysis.getEvent(), member, prompt + ); + List recommendedContents = getRecommendContentsByAnalysis(analysis, member, prompt); // TODO: 추후에 feedback을 통해서 재추천 컨텐츠를 가져와야 함 List savedContents = saveOrUpdateContents(recommendedContents); @@ -119,12 +129,18 @@ public void unlikeContent(String memberId, String contentId) { } } - private List getRecommendContentsByAnalysis(DiaryAnalysis analysis, Member member) { - - String prompt = recommendService.createPrompt( - analysis.getEmotions(), analysis.getEvent(), member); - - List videoIds = lambdaService.getRecommendations(prompt); + private List getRecommendContentsByAnalysis( + DiaryAnalysis analysis, Member member, String prompt + ) { + List videoIds = new ArrayList<>(); + int lambdaCnt = 0; + while(lambdaCnt < 5) { + videoIds = lambdaService.getRecommendations(prompt); + if(!videoIds.isEmpty()) { + break; + } + lambdaCnt++; + } try { YouTubeResponse youTubeResponse = recommendService.getYoutubeInfo(videoIds); diff --git a/src/main/java/swm/betterlife/antifragile/domain/recommend/service/RecommendService.java b/src/main/java/swm/betterlife/antifragile/domain/recommend/service/RecommendService.java index 3c86d90..757d0d3 100644 --- a/src/main/java/swm/betterlife/antifragile/domain/recommend/service/RecommendService.java +++ b/src/main/java/swm/betterlife/antifragile/domain/recommend/service/RecommendService.java @@ -42,16 +42,17 @@ public class RecommendService { @Value("${youtube.api.key}") private String apiKey; - public String createPrompt(List emotions, String event, Member member) { + public String createPrompt(List emotions, String event, Member member, String prompt) { String emotionString = String.join(", ", emotions); return String.format( - "%s 감정을 가진 나이가 %d인 %s이 쓴 일기 내용은 %s야. 이 일기의 감정에 정신적으로 도움이 되는 메타데이터를 10개 추천해줘", + "%s 감정을 가진 나이가 %d인 %s이 쓴 일기 내용은 \"%s\"야. %s", emotionString, AgeConverter.convertDateToAge(member.getBirthDate()), member.getJob(), - event + event, + prompt ); } From d8828b310883df7a2ce02a36d30c5f0895d6b516 Mon Sep 17 00:00:00 2001 From: tjdtn0219 Date: Wed, 20 Nov 2024 17:14:06 +0900 Subject: [PATCH 2/2] refactor: Check Style --- .../domain/content/service/ContentService.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/swm/betterlife/antifragile/domain/content/service/ContentService.java b/src/main/java/swm/betterlife/antifragile/domain/content/service/ContentService.java index 4d6b434..5b706c3 100644 --- a/src/main/java/swm/betterlife/antifragile/domain/content/service/ContentService.java +++ b/src/main/java/swm/betterlife/antifragile/domain/content/service/ContentService.java @@ -54,7 +54,8 @@ public ContentListResponse saveRecommendContents(String memberId, LocalDate date prompt = recommendService.createPrompt( analysis.getEmotions(), analysis.getEvent(), member, prompt ); - List recommendedContents = getRecommendContentsByAnalysis(analysis, member, prompt); + List recommendedContents + = getRecommendContentsByAnalysis(analysis, member, prompt); List savedContents = saveOrUpdateContents(recommendedContents); diaryAnalysisService.saveRecommendContents(analysis, savedContents); @@ -86,7 +87,8 @@ public ContentListResponse saveReRecommendContents( prompt = recommendService.createPrompt( analysis.getEmotions(), analysis.getEvent(), member, prompt ); - List recommendedContents = getRecommendContentsByAnalysis(analysis, member, prompt); + List recommendedContents + = getRecommendContentsByAnalysis(analysis, member, prompt); // TODO: 추후에 feedback을 통해서 재추천 컨텐츠를 가져와야 함 List savedContents = saveOrUpdateContents(recommendedContents); @@ -134,9 +136,9 @@ private List getRecommendContentsByAnalysis( ) { List videoIds = new ArrayList<>(); int lambdaCnt = 0; - while(lambdaCnt < 5) { + while (lambdaCnt < 5) { videoIds = lambdaService.getRecommendations(prompt); - if(!videoIds.isEmpty()) { + if (!videoIds.isEmpty()) { break; } lambdaCnt++;