@@ -84,12 +84,13 @@ public List<Issue> getSuggestedIssues(Member member) {
8484 issueCacheService .evict (memberId );
8585 issueCacheService .evictInterestHash (memberId );
8686
87+ //List<Repo> suggestedRepos = repoQueryService.getSuggestedReposBySplitQuery(memberId);
8788 List <Repo > suggestedRepos = repoQueryService .getSuggestedRepos (memberId );
8889 log .info ("[ISSUE_RECOMMEND] Suggested repos count = {}" , suggestedRepos .size ());
8990
9091 List <Issue > collectedIssues = new ArrayList <>();
9192 List <Issue > fallbackIssues = new ArrayList <>();
92- OffsetDateTime threeMonthsAgo = OffsetDateTime .now ().minusMonths (3 );
93+ OffsetDateTime threeMonthsAgo = OffsetDateTime .now ().minusMonths (9 );
9394
9495 for (Repo repo : suggestedRepos ) {
9596 String owner = repo .getOwnerName ();
@@ -104,6 +105,9 @@ public List<Issue> getSuggestedIssues(Member member) {
104105
105106 List <GitHubIssueResponse .IssueNode > nodes = response .getData ().getRepository ().getIssues ().getNodes ();
106107
108+ int repoCollected = 0 ;
109+ int repoFallback = 0 ;
110+
107111 for (GitHubIssueResponse .IssueNode node : nodes ) {
108112 OffsetDateTime updatedAt = OffsetDateTime .parse (node .getUpdatedAt ());
109113 if (updatedAt .isBefore (threeMonthsAgo )) continue ;
@@ -144,14 +148,18 @@ public List<Issue> getSuggestedIssues(Member member) {
144148 );
145149 if (isBeginnerLabel ) {
146150 collectedIssues .add (issue );
151+ repoCollected ++;
147152 } else {
148153 fallbackIssues .add (issue );
154+ repoFallback ++;
149155 }
150156 if (collectedIssues .size () >= 50 ) break ;
151157 }
158+ log .info ("[ISSUE_RECOMMEND] Repo: {} -> Collected: {}, Fallback: {}" , name , repoCollected , repoFallback );
152159 if (collectedIssues .size () >= 50 ) break ;
153160 }
154161
162+ // 상위 추천 20개로 구성
155163 int need = 20 ;
156164 List <Issue > top20 = collectedIssues .stream ()
157165 .sorted (Comparator .comparing (Issue ::getUpdatedAt ).reversed ())
@@ -168,6 +176,7 @@ public List<Issue> getSuggestedIssues(Member member) {
168176 }
169177
170178 // 요약 + 저장 (중복 방지 포함)
179+ log .info ("[ISSUE_RECOMMEND] Recommended Issues:" );
171180 List <Issue > summarized = top20 .stream ()
172181 .map (issue -> {
173182 String summary ;
@@ -179,18 +188,21 @@ public List<Issue> getSuggestedIssues(Member member) {
179188 summary = "요약을 생성할 수 없습니다." ;
180189 }
181190 issue .setSummary (summary );
191+ log .info (" - [{}] {} ({})" , issue .getIssueId (), issue .getTitle (), issue .getGithubUrl ());
192+
182193 // 중복 저장 방지
183194 return issueRepository .findByGithubUrl (issue .getGithubUrl ())
184195 .orElseGet (() -> issueRepository .save (issue ));
185196 })
186197 .toList ();
187198
188- issueCacheService .saveRecommendedIssues (memberId , summarized );
189- log .info ("[ISSUE_RECOMMEND] Final recommended issues count = {}" , summarized .size ());
190-
191- // 저장
199+ // 캐시 저장
192200 issueCacheService .saveRecommendedIssues (memberId , summarized );
193201 issueCacheService .saveInterestHash (memberId , currentHash );
202+ log .info ("[ISSUE_RECOMMEND] Final recommended issues count = {}" , summarized .size ());
203+ if (summarized .size () < 20 ) {
204+ log .warn ("[ISSUE_RECOMMEND] WARNING: Recommended issue count below target ({} / 20)" , summarized .size ());
205+ }
194206 return summarized ;
195207 }
196208
0 commit comments