34 lines
1.6 KiB
Python
34 lines
1.6 KiB
Python
# ============================================================
|
||
# 后端入口(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 应用
|