Skip to content

Commit 52efd97

Browse files
authored
refactor: lambda로 받아온 videoid 없을 시 오류 해결
refactor: lambda로 받아온 videoid 없을 시 오류 해결
2 parents 6d81d2a + d8828b3 commit 52efd97

File tree

2 files changed

+30
-11
lines changed

2 files changed

+30
-11
lines changed

src/main/java/swm/betterlife/antifragile/domain/content/service/ContentService.java

+26-8
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.util.function.Function;
1010
import java.util.stream.Collectors;
1111
import lombok.RequiredArgsConstructor;
12+
import org.checkerframework.checker.units.qual.A;
1213
import org.springframework.data.mongodb.core.MongoTemplate;
1314
import org.springframework.data.mongodb.core.query.Criteria;
1415
import org.springframework.data.mongodb.core.query.Query;
@@ -48,7 +49,13 @@ public ContentListResponse saveRecommendContents(String memberId, LocalDate date
4849
DiaryAnalysis analysis =
4950
diaryAnalysisService.getDiaryAnalysisByMemberIdAndDate(memberId, date);
5051
Member member = memberService.getMemberById(memberId);
51-
List<Content> recommendedContents = getRecommendContentsByAnalysis(analysis, member);
52+
53+
String prompt = "이 일기의 감정에 정신적으로 도움이 되는 메타데이터를 10개 추천해줘";
54+
prompt = recommendService.createPrompt(
55+
analysis.getEmotions(), analysis.getEvent(), member, prompt
56+
);
57+
List<Content> recommendedContents
58+
= getRecommendContentsByAnalysis(analysis, member, prompt);
5259

5360
List<Content> savedContents = saveOrUpdateContents(recommendedContents);
5461
diaryAnalysisService.saveRecommendContents(analysis, savedContents);
@@ -76,7 +83,12 @@ public ContentListResponse saveReRecommendContents(
7683
Member member = memberService.getMemberById(memberId);
7784
List<String> recommendedUrls = extractRecommendContentUrls(analysis);
7885

79-
List<Content> recommendedContents = getRecommendContentsByAnalysis(analysis, member);
86+
String prompt = "지금 사용자의 상태에 따라 관련되거나 정신적으로 도움 되는 콘텐츠 10개를 추천해줘";
87+
prompt = recommendService.createPrompt(
88+
analysis.getEmotions(), analysis.getEvent(), member, prompt
89+
);
90+
List<Content> recommendedContents
91+
= getRecommendContentsByAnalysis(analysis, member, prompt);
8092
// TODO: 추후에 feedback을 통해서 재추천 컨텐츠를 가져와야 함
8193

8294
List<Content> savedContents = saveOrUpdateContents(recommendedContents);
@@ -119,12 +131,18 @@ public void unlikeContent(String memberId, String contentId) {
119131
}
120132
}
121133

122-
private List<Content> getRecommendContentsByAnalysis(DiaryAnalysis analysis, Member member) {
123-
124-
String prompt = recommendService.createPrompt(
125-
analysis.getEmotions(), analysis.getEvent(), member);
126-
127-
List<String> videoIds = lambdaService.getRecommendations(prompt);
134+
private List<Content> getRecommendContentsByAnalysis(
135+
DiaryAnalysis analysis, Member member, String prompt
136+
) {
137+
List<String> videoIds = new ArrayList<>();
138+
int lambdaCnt = 0;
139+
while (lambdaCnt < 5) {
140+
videoIds = lambdaService.getRecommendations(prompt);
141+
if (!videoIds.isEmpty()) {
142+
break;
143+
}
144+
lambdaCnt++;
145+
}
128146

129147
try {
130148
YouTubeResponse youTubeResponse = recommendService.getYoutubeInfo(videoIds);

src/main/java/swm/betterlife/antifragile/domain/recommend/service/RecommendService.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,17 @@ public class RecommendService {
4242
@Value("${youtube.api.key}")
4343
private String apiKey;
4444

45-
public String createPrompt(List<String> emotions, String event, Member member) {
45+
public String createPrompt(List<String> emotions, String event, Member member, String prompt) {
4646

4747
String emotionString = String.join(", ", emotions);
4848

4949
return String.format(
50-
"%s 감정을 가진 나이가 %d인 %s이 쓴 일기 내용은 %s야. 이 일기의 감정에 정신적으로 도움이 되는 메타데이터를 10개 추천해줘",
50+
"%s 감정을 가진 나이가 %d인 %s이 쓴 일기 내용은 \"%s\"야. %s",
5151
emotionString,
5252
AgeConverter.convertDateToAge(member.getBirthDate()),
5353
member.getJob(),
54-
event
54+
event,
55+
prompt
5556
);
5657
}
5758

0 commit comments

Comments
 (0)