From 6699538e0a4f9b2a40f9c7e3d527c0e89205be9b Mon Sep 17 00:00:00 2001 From: "mula.liu" Date: Tue, 2 Dec 2025 23:29:26 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=B7=A8=E8=B6=8A=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/config.py | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/backend/app/config.py b/backend/app/config.py index 0884b67..f4d599a 100644 --- a/backend/app/config.py +++ b/backend/app/config.py @@ -1,28 +1,38 @@ """ Application configuration """ -from pydantic_settings import BaseSettings -from pydantic import Field, field_validator +from typing import Union +from pydantic_settings import BaseSettings, SettingsConfigDict +from pydantic import Field, field_validator, ValidationInfo + + +def parse_cors_origins(v: Union[str, list]) -> list[str]: + """Parse CORS origins from comma-separated string or list""" + if isinstance(v, str): + # Parse comma-separated string + return [origin.strip() for origin in v.split(',') if origin.strip()] + if isinstance(v, list): + return v + return ["*"] class Settings(BaseSettings): """Application settings""" + model_config = SettingsConfigDict(env_file=".env") + # Application app_name: str = "Cosmo - Deep Space Explorer" api_prefix: str = "/api" # CORS settings - allow all origins for development (IP access support) - cors_origins: list[str] = ["*"] + cors_origins: list[str] = Field(default_factory=lambda: ["*"]) @field_validator('cors_origins', mode='before') @classmethod - def parse_cors_origins(cls, v): + def validate_cors_origins(cls, v: Union[str, list], info: ValidationInfo) -> list[str]: """Parse CORS origins from comma-separated string or JSON array""" - if isinstance(v, str): - # Parse comma-separated string - return [origin.strip() for origin in v.split(',') if origin.strip()] - return v + return parse_cors_origins(v) # Cache settings cache_ttl_days: int = 3 @@ -67,8 +77,5 @@ class Settings(BaseSettings): return f"redis://:{self.redis_password}@{self.redis_host}:{self.redis_port}/{self.redis_db}" return f"redis://{self.redis_host}:{self.redis_port}/{self.redis_db}" - class Config: - env_file = ".env" - settings = Settings()