29 lines
906 B
Python
29 lines
906 B
Python
from pydantic_settings import BaseSettings
|
|
from functools import lru_cache
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
admin_email: str = "admin@smartup.local"
|
|
admin_password: str = ""
|
|
jwt_secret: str = ""
|
|
jwt_expire_hours: int = 24
|
|
cors_origins: str = "http://localhost:8899,http://127.0.0.1:8899"
|
|
login_rate_limit_attempts: int = 5
|
|
login_rate_limit_window_seconds: int = 300
|
|
snapshot_retention_count: int = 500
|
|
database_url: str = "sqlite:////app/data/app.db"
|
|
tz: str = "Asia/Shanghai"
|
|
# consecutive failures before upstream goes unhealthy
|
|
unhealthy_threshold: int = 3
|
|
|
|
@property
|
|
def cors_origin_list(self) -> list[str]:
|
|
return [item.strip() for item in self.cors_origins.split(",") if item.strip()]
|
|
|
|
model_config = {"env_file": ".env", "case_sensitive": False, "extra": "ignore"}
|
|
|
|
|
|
@lru_cache
|
|
def get_settings() -> Settings:
|
|
return Settings()
|