修复多个问题
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
@@ -7,16 +8,74 @@ backend_dir = Path(__file__).resolve().parent.parent
|
||||
load_dotenv(backend_dir / ".env")
|
||||
|
||||
|
||||
def _get_int_env(name: str, default: int) -> int:
|
||||
value = os.getenv(name, "").strip()
|
||||
if not value:
|
||||
return default
|
||||
|
||||
try:
|
||||
return int(value)
|
||||
except ValueError:
|
||||
return default
|
||||
|
||||
|
||||
def _get_bool_env(name: str, default: bool = False) -> bool:
|
||||
value = os.getenv(name)
|
||||
if value is None:
|
||||
return default
|
||||
|
||||
return value.strip().lower() in {"1", "true", "yes", "on"}
|
||||
|
||||
|
||||
def _get_list_env(name: str, default: list[str]) -> list[str]:
|
||||
value = os.getenv(name, "").strip()
|
||||
if not value:
|
||||
return default
|
||||
|
||||
try:
|
||||
parsed = json.loads(value)
|
||||
except json.JSONDecodeError:
|
||||
parsed = None
|
||||
|
||||
if isinstance(parsed, list):
|
||||
return [str(item).strip() for item in parsed if str(item).strip()]
|
||||
|
||||
return [item.strip() for item in value.split(",") if item.strip()]
|
||||
|
||||
|
||||
def _get_path_env(name: str, default: Path) -> Path:
|
||||
value = os.getenv(name, "").strip()
|
||||
if not value:
|
||||
return default.resolve()
|
||||
|
||||
path = Path(value)
|
||||
if not path.is_absolute():
|
||||
path = backend_dir / path
|
||||
|
||||
return path.resolve()
|
||||
|
||||
|
||||
class Settings:
|
||||
app_name = "HTML Generator API"
|
||||
api_prefix = "/api"
|
||||
app_name = os.getenv("APP_NAME", "HTML Knowledge API")
|
||||
api_prefix = os.getenv("API_PREFIX", "/api").rstrip("/") or "/api"
|
||||
backend_dir = backend_dir
|
||||
data_dir = backend_dir / "data"
|
||||
database_path = data_dir / "html_generator.db"
|
||||
database_url = f"sqlite:///{database_path.as_posix()}"
|
||||
allowed_origins = ["*"]
|
||||
frontend_base_url = os.environ.get("FRONTEND_BASE_URL", "http://localhost:3000")
|
||||
static_dir = backend_dir / "../frontend/public/static"
|
||||
allowed_origins = _get_list_env("ALLOWED_ORIGINS", ["*"])
|
||||
public_base_url = os.getenv("PUBLIC_BASE_URL", "http://localhost:8000").rstrip("/")
|
||||
html_storage_dir = _get_path_env(
|
||||
"HTML_STORAGE_DIR",
|
||||
data_dir / "generated_html",
|
||||
)
|
||||
default_retention_days = max(1, _get_int_env("DEFAULT_RETENTION_DAYS", 7))
|
||||
max_retention_days = max(
|
||||
default_retention_days,
|
||||
_get_int_env("MAX_RETENTION_DAYS", 30),
|
||||
)
|
||||
max_html_length = max(1024, _get_int_env("MAX_HTML_LENGTH", 200_000))
|
||||
api_key = os.getenv("API_KEY", "").strip()
|
||||
allow_unsafe_html = _get_bool_env("ALLOW_UNSAFE_HTML", False)
|
||||
|
||||
|
||||
settings = Settings()
|
||||
settings = Settings()
|
||||
|
||||
Reference in New Issue
Block a user