import os import sys from datetime import datetime # .env 파일 로드 (python-dotenv 사용) # Docker 환경: docker-compose.yml에서 env_file로 환경 변수 주입 + volume mount로 .env 파일 접근 # 로컬 개발 환경: python-dotenv로 .env 파일 로드 try: from dotenv import load_dotenv load_dotenv() except ImportError: pass TODAY = datetime.now().strftime('%Y%m%d') def _get_required_env(key: str, description: str = "") -> str: """필수 환경 변수 조회. 없으면 에러 출력 후 종료""" value = os.getenv(key) if not value: desc = f" ({description})" if description else "" error_msg = f"[ERROR] 필수 환경 변수가 설정되지 않았습니다: {key}{desc}" print(error_msg) sys.exit(1) return value def _get_optional_env(key: str) -> str: """선택적 환경 변수 조회. 없으면 빈 문자열 반환""" return os.getenv(key, '') # 게시판 설정 (필수) MAIN = { 'board': _get_required_env('BOARD_ID', '게시판 ID'), 'ca_name': _get_required_env('BOARD_CA_NAME', '게시판 카테고리'), 'subject': '', 'content': _get_required_env('BOARD_CONTENT', '게시판 기본 내용'), 'mb_id': _get_required_env('BOARD_MB_ID', '게시자 ID'), 'nickname': _get_required_env('BOARD_NICKNAME', '게시자 닉네임'), 'file1': '', 'file2': '', } # 데이터베이스 설정 (필수) DB_CONFIG = { 'HOST': _get_required_env('DB_HOST', 'MySQL 호스트'), 'USER': _get_required_env('DB_USER', 'MySQL 사용자명'), 'DBNAME': _get_required_env('DB_NAME', 'MySQL 데이터베이스명'), 'PASS': _get_required_env('DB_PASSWORD', 'MySQL 비밀번호'), 'CHARSET': _get_optional_env('DB_CHARSET') or 'utf8mb4', } # FTP 설정 (필수) FTP_CONFIG = { 'HOST': _get_required_env('FTP_HOST', 'FTP 호스트'), 'USER': _get_required_env('FTP_USER', 'FTP 사용자명'), 'PASS': _get_required_env('FTP_PASSWORD', 'FTP 비밀번호'), 'UPLOAD_DIR': _get_required_env('FTP_UPLOAD_DIR', 'FTP 업로드 디렉토리'), } # 날씨 API 서비스 키 (필수) serviceKey = _get_required_env('SERVICE_KEY', '기상청 API 서비스 키') # Mattermost 설정 (선택적 - 없어도 실행 가능하지만 알림은 미발송) MATTERMOST_CONFIG = { 'URL': _get_optional_env('MATTERMOST_URL'), 'TOKEN': _get_optional_env('MATTERMOST_TOKEN'), 'CHANNEL_ID': _get_optional_env('MATTERMOST_CHANNEL_ID'), }