aps-agent/server/main.py

34 lines
1.6 KiB
Python
Raw Normal View History

2026-07-21 11:05:57 +08:00
# ============================================================
# 后端入口(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)
2026-07-21 11:05:57 +08:00
from server.gateway.app import create_app # 应用工厂(置于 load_dotenv 之后)
2026-07-21 11:05:57 +08:00
# ASGI 应用实例(uvicorn 入口点)
app = create_app() # 构建 FastAPI 应用