import os from dotenv import load_dotenv load_dotenv() class Config: # 서버 설정 SERVER_DOMAIN = os.getenv('SERVER_DOMAIN', 'localhost') SERVER_PROTOCOL = os.getenv('SERVER_PROTOCOL', 'http') WEBHOOK_SERVER_HOST = os.getenv('WEBHOOK_SERVER_HOST', '0.0.0.0') WEBHOOK_SERVER_PORT = int(os.getenv('WEBHOOK_SERVER_PORT', 5000)) # 노션 API NOTION_API_SECRET = os.getenv('NOTION_API_SECRET') NOTION_API_BASE = "https://api.notion.com/v1" NOTION_VERSION = "2022-06-28" # 웹훅 서명 검증용 비밀키 (옵션) NOTION_WEBHOOK_SECRET = os.getenv('NOTION_WEBHOOK_SECRET', None) # Mattermost 관련 MATTERMOST_SERVER_URL = os.getenv('MATTERMOST_SERVER_URL', '').rstrip('/') MATTERMOST_WEBHOOK_URL = os.getenv('MATTERMOST_WEBHOOK_URL') MATTERMOST_BOT_TOKEN = os.getenv('MATTERMOST_BOT_TOKEN') MATTERMOST_CH_ID = os.getenv('MATTERMOST_CH_ID') # 기타 설정 DEBUG = os.getenv('DEBUG', 'false').lower() in ['true', '1', 'yes'] LOG_LEVEL = os.getenv('LOG_LEVEL', 'INFO') @classmethod def mattermost_post_api_url(cls): if cls.MATTERMOST_SERVER_URL: return f"{cls.MATTERMOST_SERVER_URL}/api/v4/posts" return None @classmethod def validate(cls): missing = [] # NOTION_API_SECRET 필수 확인 if not cls.NOTION_API_SECRET: missing.append('NOTION_API_SECRET') # Mattermost는 둘 중 하나 이상 설정 필수 if not cls.MATTERMOST_WEBHOOK_URL and not (cls.MATTERMOST_BOT_TOKEN and cls.MATTERMOST_CH_ID): if not cls.MATTERMOST_WEBHOOK_URL: missing.append('MATTERMOST_WEBHOOK_URL') if not cls.MATTERMOST_BOT_TOKEN: missing.append('MATTERMOST_BOT_TOKEN') if not cls.MATTERMOST_CH_ID: missing.append('MATTERMOST_CH_ID') if missing: err_msg = ( f"환경변수 설정 오류: 아래 필수 항목이 누락되었습니다:\n" + "\n".join(f" - {var}" for var in missing) + "\n설정 후 다시 실행해주세요." ) raise EnvironmentError(err_msg) else: print("필수 항목 검증 완료") # 초기 검증 실행 Config.validate()