aps-agent/server/main.py

34 lines
1.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ============================================================
# 后端入口(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 应用