feat: scaffold agentic interior design workflow
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
from functools import lru_cache
|
||||
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
model_config = SettingsConfigDict(
|
||||
env_file=".env",
|
||||
env_file_encoding="utf-8",
|
||||
case_sensitive=False,
|
||||
extra="ignore",
|
||||
)
|
||||
|
||||
app_env: str = "development"
|
||||
app_name: str = "zhuangxiu-api"
|
||||
log_level: str = "INFO"
|
||||
api_host: str = "0.0.0.0"
|
||||
api_port: int = 8000
|
||||
cors_origins: str = "http://localhost:3000"
|
||||
|
||||
database_url: str = "postgresql+psycopg://zhuangxiu:zhuangxiu@localhost:5432/zhuangxiu"
|
||||
redis_url: str = "redis://localhost:6379/0"
|
||||
|
||||
s3_endpoint: str = ""
|
||||
s3_public_endpoint: str = ""
|
||||
s3_access_key_id: str = ""
|
||||
s3_secret_access_key: str = ""
|
||||
s3_region: str = "us-east-1"
|
||||
s3_bucket_inputs: str = "renovation-inputs"
|
||||
s3_bucket_derived: str = "renovation-derived"
|
||||
s3_bucket_renders: str = "renovation-renders"
|
||||
s3_force_path_style: bool = True
|
||||
s3_presigned_url_ttl_seconds: int = 900
|
||||
|
||||
baidu_ocr_enabled: bool = False
|
||||
baidu_ocr_api_key: str = ""
|
||||
baidu_ocr_secret_key: str = ""
|
||||
baidu_ocr_token_url: str = "https://aip.baidubce.com/oauth/2.0/token"
|
||||
|
||||
llm_default_provider: str = "openai"
|
||||
openai_api_key: str = ""
|
||||
openai_base_url: str = "https://api.openai.com/v1"
|
||||
openai_text_model: str = "gpt-5"
|
||||
openai_image_model: str = "gpt-image-2"
|
||||
gemini_api_key: str = ""
|
||||
gemini_model: str = "gemini-3-pro"
|
||||
ark_api_key: str = ""
|
||||
seedream_model_endpoint: str = ""
|
||||
image_provider_priority: str = "seedream,openai,gemini"
|
||||
|
||||
gpu_service_url: str = "http://localhost:8100"
|
||||
gpu_service_token: str = ""
|
||||
|
||||
jwt_secret: str = ""
|
||||
session_secret: str = ""
|
||||
app_encryption_key: str = ""
|
||||
webhook_signing_secret: str = ""
|
||||
|
||||
langfuse_enabled: bool = False
|
||||
langfuse_host: str = "http://localhost:3001"
|
||||
langfuse_public_key: str = ""
|
||||
langfuse_secret_key: str = ""
|
||||
sentry_dsn: str = ""
|
||||
sentry_environment: str = "development"
|
||||
sentry_traces_sample_rate: float = 0
|
||||
|
||||
@property
|
||||
def cors_origin_list(self) -> list[str]:
|
||||
return [origin.strip() for origin in self.cors_origins.split(",") if origin.strip()]
|
||||
|
||||
|
||||
@lru_cache
|
||||
def get_settings() -> Settings:
|
||||
return Settings()
|
||||
Reference in New Issue
Block a user