Files
2026-06-15 23:48:37 +08:00

56 lines
2.1 KiB
Python

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