@@ -510,23 +510,41 @@ def run(self) -> None:
510510 if (total_processed + total_failed ) > 0
511511 else 0
512512 )
513+ elapsed_time = (get_local_now () - start_time ).total_seconds ()
513514
514515 if total_processed > total_failed :
515516 # 과반수 이상 성공시에만 processed로 마킹
516517 self ._update_weekly_trend_result ()
517518 logger .info (
518- f"Newsletter batch process completed successfully in { ( get_local_now () - start_time ). total_seconds () } seconds. "
519+ f"Newsletter batch process completed successfully in { elapsed_time } seconds. "
519520 f"Processed: { total_processed } , Failed: { total_failed } , Success Rate: { success_rate :.2%} "
520521 )
521522 else :
522523 logger .warning (
523- f"Newsletter batch process failed to meet success criteria in { ( get_local_now () - start_time ). total_seconds () } seconds. "
524+ f"Newsletter batch process failed to meet success criteria in { elapsed_time } seconds. "
524525 f"Processed: { total_processed } , Failed: { total_failed } , Success Rate: { success_rate :.2%} . "
525526 f"WeeklyTrend remains unprocessed due to low success rate (< 50%)"
526527 )
527528
529+ # 결과 파일 저장 (for slack notification)
530+ try :
531+ with open ("newsletter_batch_result.txt" , "w" ) as f :
532+ f .write (
533+ f"✅ 뉴스레터 발송 완료: 성공 { total_processed } 명, 실패 { total_failed } 명\\ n"
534+ )
535+ f .write (f" - 소요 시간: { elapsed_time } 초\\ n" )
536+ f .write (f" - 성공률: { success_rate :.2%} \\ n" )
537+ except Exception as e :
538+ logger .error (f"Failed to save newsletter batch result: { e } " )
539+
528540 except Exception as e :
529541 logger .error (f"Newsletter batch process failed: { e } " )
542+ try :
543+ with open ("newsletter_batch_result.txt" , "w" ) as f :
544+ f .write (f"❌ 뉴스레터 발송 실패: { e } " )
545+ except Exception as e :
546+ logger .error (f"Failed to save newsletter batch result: { e } " )
547+
530548 raise
531549
532550
0 commit comments