2121@ RequiredArgsConstructor
2222public class TodayQuestionService {
2323
24- private final QuestionPersistenceService interviewQuestionService ;
24+ private final QuestionPersistenceService questionPersistenceService ;
2525 private final QuestionNotificationService questionNotificationService ;
2626 private final QuestionRepository questionRepository ;
2727 private final MemberServiceClient memberServiceClient ;
2828 private final OpenAiClient openAiClient ;
2929 private final PromptBuilder promptBuilder ;
3030
31- public void generateTodayQuestions () {
31+ public void sendTodayQuestions () {
3232 List <MemberSchedulerInfo > members = memberServiceClient .getMembers ();
3333 DayOfWeek today = LocalDate .now (ZoneId .of ("Asia/Seoul" )).getDayOfWeek ();
3434
@@ -40,17 +40,17 @@ public void generateTodayQuestions() {
4040 .toList ();
4141
4242 log .info ("질문 생성 대상: {} / {} 명" , targetMembers .size (), members .size ());
43- targetMembers .forEach (this ::processTodayQuestion );
43+ targetMembers .forEach (this ::generateAndSend );
4444 }
4545
46- private void processTodayQuestion (MemberSchedulerInfo member ) {
46+ private void generateAndSend (MemberSchedulerInfo member ) {
4747 try {
4848 List <InterviewQuestion > previousQuestions = questionRepository .findByMemberId (member .id ());
4949 String prompt = promptBuilder .buildDailyQuestionPrompt (member .job (), previousQuestions );
5050 QuestionWithTags result = openAiClient .generateQuestion (prompt );
5151 log .info ("질문 생성 완료 | memberId={}" , member .id ());
5252
53- InterviewQuestion question = interviewQuestionService .saveTodayQuestion (member .id (), result );
53+ InterviewQuestion question = questionPersistenceService .saveTodayQuestion (member .id (), result );
5454 log .info ("질문 저장 완료 | memberId={}" , member .id ());
5555
5656 questionNotificationService .notifyMember (member , question );
@@ -59,22 +59,6 @@ private void processTodayQuestion(MemberSchedulerInfo member) {
5959 }
6060 }
6161
62- private boolean shouldSendToday (MemberSchedulerInfo member , DayOfWeek today ) {
63- return switch (member .frequency ()) {
64- case EVERY -> true ;
65- case WEEKLY -> today == DayOfWeek .MONDAY ;
66- };
67- }
68-
69-
70- private boolean isValidNotification (MemberSchedulerInfo member ) {
71- if (member .notification () == null ) {
72- log .warn ("멤버 스킵 | memberId={} | reason=no_notification" , member .id ());
73- return false ;
74- }
75- return true ;
76- }
77-
7862 private boolean isValidFrequency (MemberSchedulerInfo member ) {
7963 if (member .frequency () == null ) {
8064 log .warn ("멤버 스킵 | memberId={} | reason=no_frequency" , member .id ());
@@ -90,4 +74,19 @@ private boolean isValidJob(MemberSchedulerInfo member) {
9074 }
9175 return true ;
9276 }
77+
78+ private boolean isValidNotification (MemberSchedulerInfo member ) {
79+ if (member .notification () == null ) {
80+ log .warn ("멤버 스킵 | memberId={} | reason=no_notification" , member .id ());
81+ return false ;
82+ }
83+ return true ;
84+ }
85+
86+ private boolean shouldSendToday (MemberSchedulerInfo member , DayOfWeek today ) {
87+ return switch (member .frequency ()) {
88+ case EVERY -> true ;
89+ case WEEKLY -> today == DayOfWeek .MONDAY ;
90+ };
91+ }
9392}
0 commit comments