解决跨越问题

main
mula.liu 2025-12-02 23:29:26 +08:00
parent 31812c706d
commit 6699538e0a
1 changed files with 18 additions and 11 deletions

View File

@ -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()