"""PPT Worker 配置模块""" import os from pathlib import Path from dotenv import load_dotenv load_dotenv() class Config: # 服务 HOST: str = os.getenv("WORKER_HOST", "0.0.0.0") PORT: int = int(os.getenv("WORKER_PORT", "8090")) CONCURRENCY: int = int(os.getenv("WORKER_CONCURRENCY", "2")) # 数据库 DATABASE_URL: str = os.getenv("DATABASE_URL", "postgres://postgres:postgres@localhost:5432/govai") # Redis REDIS_URL: str = os.getenv("REDIS_URL", "redis://localhost:6379/0") TASK_QUEUE: str = "ppt:tasks" TASK_STATUS_PREFIX: str = "ppt:status:" # PPT Master PPT_MASTER_PATH: Path = Path(os.getenv("PPT_MASTER_PATH", "/Users/freedak/Documents/go-new/ppt-master")) SKILL_DIR: Path = PPT_MASTER_PATH / "skills" / "ppt-master" SCRIPTS_DIR: Path = SKILL_DIR / "scripts" # 文件存储 UPLOAD_DIR: Path = Path(os.getenv("UPLOAD_DIR", "/tmp/govai/uploads")) OUTPUT_DIR: Path = Path(os.getenv("OUTPUT_DIR", "/tmp/govai/outputs")) PROJECTS_DIR: Path = Path(os.getenv("PROJECTS_DIR", "/tmp/govai/ppt-projects")) # LLM(通义千问,DashScope OpenAI 兼容接口) LLM_PROVIDER: str = os.getenv("LLM_PROVIDER", "openai") OPENAI_API_KEY: str = os.getenv("OPENAI_API_KEY", "") OPENAI_BASE_URL: str = os.getenv("OPENAI_BASE_URL", "https://dashscope.aliyuncs.com/compatible-mode/v1") OPENAI_MODEL: str = os.getenv("OPENAI_MODEL", "qwen-max") # 图片生成(通义万相) IMAGE_BACKEND: str = os.getenv("IMAGE_BACKEND", "wanx") IMAGE_API_KEY: str = os.getenv("IMAGE_API_KEY", "") # 留空则复用 OPENAI_API_KEY WANX_MODEL: str = os.getenv("WANX_MODEL", "wanx-v1") DASHSCOPE_IMAGE_URL: str = "https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis" DASHSCOPE_TASK_URL: str = "https://dashscope.aliyuncs.com/api/v1/tasks" @classmethod def ensure_dirs(cls): """确保所有必需目录存在""" cls.UPLOAD_DIR.mkdir(parents=True, exist_ok=True) cls.OUTPUT_DIR.mkdir(parents=True, exist_ok=True) cls.PROJECTS_DIR.mkdir(parents=True, exist_ok=True) config = Config()