from pydantic_settings import BaseSettings from pydantic import Field from functools import lru_cache class Settings(BaseSettings): mongodb_url: str = Field( default="mongodb://mongodb:27017", description="MongoDB 연결 URL", ) mongodb_database: str = Field( default="todos2", alias="DB_NAME", description="MongoDB 데이터베이스 이름", ) redis_url: str = Field( default="redis://redis:6379", description="Redis 연결 URL", ) frontend_url: str = Field( default="http://localhost:3000", description="프론트엔드 URL (CORS 허용)", ) upload_dir: str = Field( default="/app/uploads", description="파일 업로드 디렉토리", ) max_file_size: int = Field( default=10 * 1024 * 1024, description="최대 파일 크기 (bytes, 기본 10MB)", ) max_files_per_todo: int = Field( default=5, description="Todo당 최대 첨부 파일 수", ) class Config: env_file = ".env" populate_by_name = True # alias와 필드명 모두 허용 @lru_cache def get_settings() -> Settings: return Settings()