diff --git a/config.py b/config.py index b0c94aa..94c7c7c 100644 --- a/config.py +++ b/config.py @@ -1,14 +1,19 @@ +import os from pathlib import Path from zoneinfo import ZoneInfo +from dotenv import load_dotenv from pydantic import Field from pydantic_settings import BaseSettings, SettingsConfigDict -# 프로젝트 전역 타임존 설정 (서울) -TIMEZONE = ZoneInfo("Asia/Seoul") - PROJECT_DIR = Path(__file__).resolve().parent +# .env 파일 로드 (Settings 클래스보다 먼저 TIMEZONE을 사용하기 위함) +load_dotenv(PROJECT_DIR / ".env") + +# 프로젝트 전역 타임존 설정 (기본값: 서울) +TIMEZONE = ZoneInfo(os.getenv("TIMEZONE", "Asia/Seoul")) + # 미디어 파일 저장 디렉토리 MEDIA_ROOT = PROJECT_DIR / "media" MEDIA_ROOT.mkdir(exist_ok=True) @@ -27,6 +32,10 @@ class ProjectSettings(BaseSettings): DESCRIPTION: str = Field(default="FastAPI 기반 CastAD 프로젝트") ADMIN_BASE_URL: str = Field(default="/admin") DEBUG: bool = Field(default=True) + TIMEZONE: str = Field( + default="Asia/Seoul", + description="프로젝트 전역 타임존 (예: Asia/Seoul, UTC, America/New_York)", + ) model_config = _base_config diff --git a/pyproject.toml b/pyproject.toml index 4380915..751a21c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,6 +15,7 @@ dependencies = [ "openai>=2.13.0", "playwright>=1.57.0", "pydantic-settings>=2.12.0", + "python-dotenv>=1.0.0", "python-jose[cryptography]>=3.5.0", "python-multipart>=0.0.21", "redis>=7.1.0", diff --git a/uv.lock b/uv.lock index 2d00834..35c2838 100644 --- a/uv.lock +++ b/uv.lock @@ -657,6 +657,7 @@ dependencies = [ { name = "openai" }, { name = "playwright" }, { name = "pydantic-settings" }, + { name = "python-dotenv" }, { name = "python-jose", extra = ["cryptography"] }, { name = "python-multipart" }, { name = "redis" }, @@ -685,6 +686,7 @@ requires-dist = [ { name = "openai", specifier = ">=2.13.0" }, { name = "playwright", specifier = ">=1.57.0" }, { name = "pydantic-settings", specifier = ">=2.12.0" }, + { name = "python-dotenv", specifier = ">=1.0.0" }, { name = "python-jose", extras = ["cryptography"], specifier = ">=3.5.0" }, { name = "python-multipart", specifier = ">=0.0.21" }, { name = "redis", specifier = ">=7.1.0" },