feat: expand AI workflow support and refresh docs

This commit is contained in:
2026-03-12 13:47:42 +08:00
parent 8688422578
commit 4ecab597f4
28 changed files with 4806 additions and 1907 deletions

View File

@@ -1,5 +1,30 @@
from pathlib import Path
from pydantic_settings import BaseSettings, SettingsConfigDict
BASE_DIR = Path(__file__).resolve().parents[2]
ENV_FILE = BASE_DIR / ".env"
PLACEHOLDER_SECRET_VALUES = {
"",
"your-super-secret-key-change-this",
"admin-secret-token-change-this",
}
def resolve_database_url(raw_url: str) -> str:
"""Resolve relative SQLite paths against the Server directory."""
if not raw_url.startswith("sqlite:///"):
return raw_url
sqlite_path = raw_url.removeprefix("sqlite:///")
if not sqlite_path or sqlite_path == ":memory:":
return raw_url
path_obj = Path(sqlite_path)
if path_obj.is_absolute():
return raw_url
return f"sqlite:///{(BASE_DIR / path_obj).resolve().as_posix()}"
class Settings(BaseSettings):
ENV: str = "development"
PROJECT_NAME: str = "DesignerCEP Backend"
@@ -25,17 +50,41 @@ class Settings(BaseSettings):
QINIU_BUCKET: str = ""
QINIU_DOMAIN: str = ""
# AI 配置 — 通义千问 QwenDashScope
AI_API_KEY: str = "" # LLM API KeyOpenAI / DeepSeek 等)
AI_BASE_URL: str = "" # LLM API 地址(留空则用 OpenAI 默认)
AI_MODEL: str = "qwen3-max-2026-01-23" # 默认模型通义千问3深度思考
AI_VISION_MODEL: str = "qwen-vl-max-latest" # 视觉分析模型(看图分析成衣)
AI_IMAGE_EDIT_MODEL: str = "qwen-image-edit-max-2026-01-16" # 图片编辑/生成模型
# AI 配置
AI_PROVIDER: str = "ark"
AI_API_KEY: str = ""
AI_BASE_URL: str = "https://ark.cn-beijing.volces.com/api/v3"
AI_CHAT_BASE_URL: str = ""
AI_VISION_BASE_URL: str = ""
AI_IMAGE_BASE_URL: str = ""
AI_MODEL: str = "doubao-seed-2-0-mini-260215"
AI_VISION_MODEL: str = "doubao-seed-2-0-mini-260215"
AI_IMAGE_EDIT_MODEL: str = "doubao-seedream-5-0-260128"
AI_CHAT_MODELS: str = ""
AI_VISION_MODELS: str = ""
AI_IMAGE_EDIT_MODELS: str = ""
# AI 配置 — Gemini第三方代理
GEMINI_API_KEY: str = ""
GEMINI_BASE_URL: str = "https://api.apiqik.online"
# 兼容旧字段
ARK_API_KEY: str = ""
ARK_BASE_URL: str = "https://ark.cn-beijing.volces.com/api/v3"
model_config = SettingsConfigDict(env_file=".env", extra="ignore")
model_config = SettingsConfigDict(
env_file=ENV_FILE,
env_file_encoding="utf-8",
extra="ignore"
)
def runtime_warnings(self) -> list[str]:
warnings: list[str] = []
if not ENV_FILE.exists():
warnings.append("未找到 Server/.env当前使用的是代码默认配置。")
if self.SECRET_KEY in PLACEHOLDER_SECRET_VALUES:
warnings.append("SECRET_KEY 仍是默认值,请在部署前替换。")
if self.ADMIN_TOKEN in PLACEHOLDER_SECRET_VALUES:
warnings.append("ADMIN_TOKEN 仍是默认值,请在部署前替换。")
if not self.AI_API_KEY and not self.ARK_API_KEY:
warnings.append("AI_API_KEY / ARK_API_KEY 未配置;如果走用户自带 Key 模式可忽略此项。")
return warnings
settings = Settings()
settings.DATABASE_URL = resolve_database_url(settings.DATABASE_URL)