# ============================================================ # 后端入口(moduleId: server-main, 可重生 ✅) # 用法:python -m uvicorn server.main:app --reload --port 8000 # 职责:加载 .env → 构建应用 →(首次启动时)确保世界已播种 # ============================================================ from dotenv import load_dotenv # .env 加载器 # 先于一切导入加载环境变量(ModelProvider 构造依赖 LLM_* 变量) load_dotenv() # 仓库根 .env(不存在则静默跳过) # 桌面端 APS_MODE=desktop → 确保 ~/.aps/{skills,sessions,data,…} # Web 端 → 确保 APS_DATA_DIR(容器内 /app/server/data,PVC 持久卷); # 数据目录不可写时立即在日志给出显式告警(创建项目等写入会失败),不再静默跳过。 import sys as _sys try: from server.aps_home import ensure_aps_home, storage_status ensure_aps_home() _storage = storage_status() if not _storage["writable"]: print( "[APS][FATAL] 数据目录不可写: %s — 创建项目/排产等写入将失败。%s" % (_storage["dataDir"], _storage.get("remedy") or ""), file=_sys.stderr, flush=True, ) except Exception as _exc: print("[APS][WARN] APS 数据目录初始化失败: %s" % _exc, file=_sys.stderr, flush=True) from server.gateway.app import create_app # 应用工厂(置于 load_dotenv 之后) # ASGI 应用实例(uvicorn 入口点) app = create_app() # 构建 FastAPI 应用