""" 추천 시스템 메인 실행 스크립트 초기 학습 또는 추가 학습을 실행하는 진입점 """ import os import sys import argparse from datetime import datetime # 프로젝트 루트 디렉토리를 파이썬 경로에 추가 current_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(current_dir) # 수정된 방법 - 상대 경로 임포트 사용 try: from initial_training import run_initial_training from incremental_training import run_incremental_training except ImportError: # 스크립트가 scripts 폴더 안에 있는 경우 대비 try: from scripts.initial_training import run_initial_training from scripts.incremental_training import run_incremental_training except ImportError: print("❌ 오류: initial_training 또는 incremental_training 모듈을 찾을 수 없습니다.") print("프로젝트 구조를 확인해주세요.") sys.exit(1) def main(): """메인 함수: 명령행 인자를 파싱하고 적절한 학습 모드 실행""" parser = argparse.ArgumentParser(description='추천 시스템 학습 스크립트') parser.add_argument('--mode', type=str, choices=['initial', 'incremental'], default='incremental', help='학습 모드: initial (초기 학습) 또는 incremental (추가 학습)') parser.add_argument('--window', type=int, default=30, help='추가 학습 시 유지할 데이터의 일수 (기본값: 30일)') args = parser.parse_args() # 환경 변수 확인 if not os.getenv("HF_API_TOKEN"): print("❌ 오류: 환경 변수 HF_API_TOKEN이 설정되지 않았습니다.") print(" Hugging Face API 토큰을 환경 변수로 설정해주세요.") return 1 # 현재 시간 출력 print(f"📅 실행 시간: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}") # 모드에 따라 적절한 학습 실행 if args.mode == 'initial': print("🔄 초기 학습 모드로 실행합니다.") success = run_initial_training() else: # incremental print(f"🔄 추가 학습 모드로 실행합니다. (윈도우 크기: {args.window}일)") success = run_incremental_training(args.window) # ✅ 실행이 끝나면 무조건 종료 if success: print("✅ 학습이 성공적으로 완료되었습니다. 프로그램을 종료합니다.") sys.exit(0) # 정상 종료 else: print("❌ 학습 중 오류가 발생했습니다. 프로그램을 종료합니다.") sys.exit(1) # 오류 종료 if __name__ == "__main__": sys.exit(main())