diff --git a/README.md b/README.md index ddf4a41..954838e 100644 --- a/README.md +++ b/README.md @@ -198,9 +198,9 @@ Orchestrator 视觉阶段按 `fallback` 模式顺序降级:Gemini → NVIDIA N | Model-Adapters | `model_adapters/` | `BaseModelAdapter.analyze_video(video_path, known_members_context, event_start_time)`;Gemini(Files API)/ NVIDIA(整视频 `video_url`)——**只有视觉分析用,2026-08-23 起不再含 Ollama/文字模型**,问答模型完全移交 AI-Gateway | | QA-Proxy | `qa.py` | **2026-08-23 重写为 HTTP 转发客户端**(原来自己遍历适配器 `chat()` 做 NVIDIA→Gemini→Ollama 三级降级的逻辑已整个搬到 AI-Gateway):调 AI-Gateway `/v1/chat/completions`,把 OpenAI 兼容响应翻译回原有 `run_qa`/`run_qa_stream` 契约,`api_gateway.py` 和 FAM-Core 调用方零改动 | -### 3.3 FAM-UI(NAS 端) +### 3.3 FAM-UI(云服务器端,Caddy 托管) -Vue3 + Vite + Tailwind SPA(`fam-ui/src/views/*.vue`,构建产物 `fam-ui/dist/` 由 FAM-Core `static_app.py` 托管,Vue Router history 模式),页面均读本地同步镜像: +Vue3 + Vite + Tailwind SPA(`fam-ui/src/views/*.vue`,构建产物 `fam-ui/dist/` 部署到甲骨文云服务器由 Caddy 静态托管,Vue Router history 模式;`/api/*` 经 frp 隧道反代回 NAS FAM-Core),页面均读本地同步镜像: | 页面 | 功能 | |------|------| @@ -541,7 +541,7 @@ task_id=289(30s 测试片段)全链路打通:推送 5.7MB → Edge 分析 | 组件 | 节点 | 路径 | 启动 | |------|------|------|------| | FAM-Core | NAS | `/volume1/web/sentinel-home-ai/fam-core/` | `bash start_core.sh`(gunicorn -w 1 :8000,source .env 注入 DSM_*/ORACLE_SYNC_TOKEN/AUTH_HUB_*) | -| FAM-UI | NAS | `/volume1/web/sentinel-home-ai/fam-ui/dist/` | Vue3 构建产物,由 FAM-Core `static_app.py` 托管(无需独立进程);本地改代码后 `npm run build` 并 tar 部署 dist | +| FAM-UI | 云服务器(甲骨文,129.146.26.249) | `/var/www/fam-ui/` | Vue3 构建产物,由 Caddy :80 静态托管(无需独立进程);本地改代码后 `npm run build`,`dist/` rsync/tar 到云服务器 | | FAM-Edge | Oracle | `/opt/fam-edge/` | **systemd `fam-edge.service` 守护**(Restart=always);部署代码后 `sudo systemctl restart fam-edge`(勿手动 setsid,会端口冲突) | | **AI-Gateway** | Oracle | `/opt/ai-gateway/` | **systemd `ai-gateway.service` 守护**(Restart=always),独立 venv(Python 3.8);gunicorn 绑定 `0.0.0.0:5100`(对外直接开放,非仅本机);部署代码后 `sudo systemctl restart ai-gateway` | | Ollama | Oracle | systemd 托管 | 环境变量 `OLLAMA_KEEP_ALIVE=-1`;**被 AI-Gateway 调用,不再被 FAM-Edge 调用** | @@ -557,7 +557,7 @@ task_id=289(30s 测试片段)全链路打通:推送 5.7MB → Edge 分析 ### 8.2 依赖 - **FAM-Core(NAS, Python 3.10 venv)**:Flask, Gunicorn, **PyMySQL**(45KB 纯 Python 替代 19MB mysql-connector), PyYAML, requests -- **FAM-UI(NAS, Node)**:Vue3 + Vite + Tailwind(`fam-ui/`,构建产物 dist 不入库);**不再依赖 Streamlit** +- **FAM-UI(云服务器, Node)**:Vue3 + Vite + Tailwind(`fam-ui/`,构建产物 dist 不入库);**不再依赖 Streamlit** - **FAM-Edge(Oracle, Python venv)**:Flask, Gunicorn, requests, PyYAML, opencv-python, numpy, **openai**(NVIDIA NIM 兼容 OpenAI API 规范,仅视觉分析用);Gemini 用 requests 直调 REST;**问答不再直接调模型,只用 requests 转发到 AI-Gateway** - **AI-Gateway(Oracle, Python 3.8 venv,独立部署单元)**:Flask, Gunicorn, requests, PyYAML, **openai**(NVIDIA 问答模型用) - **系统级**:FFmpeg(两端;Oracle 端用于运动片段分割 + 帧图/头像)、Ollama + qwen2.5:7b(Oracle,**被 AI-Gateway 调用**)、MariaDB 10.11(NAS)、rclone(Oracle,同步 Google Drive 素材) @@ -733,7 +733,7 @@ cd fam-ui && npm run build # 产物 fam-ui/dist/ ## 10. 服务器访问信息 -### 10.1 Synology NAS(FAM-Core + FAM-UI + MariaDB) +### 10.1 Synology NAS(FAM-Core + MariaDB) | 项目 | 值 | |------|-----| diff --git a/docs/DEPLOY.md b/docs/DEPLOY.md index db550da..fc6f894 100644 --- a/docs/DEPLOY.md +++ b/docs/DEPLOY.md @@ -1,6 +1,6 @@ # 部署指南(v3 运动事件驱动架构,2026-08-22 同步) -## 1. NAS 端部署 (FAM-Core + FAM-UI + MariaDB) +## 1. NAS 端部署 (FAM-Core + MariaDB;FAM-UI 见 §1.3,部署在云服务器) ### 1.1 MariaDB ```bash @@ -94,7 +94,7 @@ tar czf - --exclude=venv --exclude=__pycache__ --exclude=data --exclude=gdrive_v | NAS MariaDB | `mysql -u root -p -e "SHOW DATABASES"` | 包含 sentinel_home_ai | | NAS FAM-Core | `curl http://localhost:8000/health` | `{"status":"ok"}` | | NAS 运动监测 | `curl http://localhost:8000/api/ss/status` | `poll_enabled: true, running: true` | -| NAS FAM-UI | 浏览器访问 `http://192.168.50.64:8000` | 未登录被 302 到 auth-hub 登录页;登录(审批过的 auth-hub 账号)后跳回展示 Vue3 SPA(时间轴/人物管理/统计) | +| 云服务器 FAM-UI | 浏览器访问 `http://129.146.26.249/`(Caddy 托管) | 未登录被 302 到 auth-hub 登录页;登录(审批过的 auth-hub 账号)后跳回展示 Vue3 SPA(时间轴/人物管理/统计) | | Oracle FAM-Edge | `curl http://localhost:5000/health` | `{"status":"ok","queue_alive":true}` | | Oracle 运动事件 | `sqlite3 /opt/fam-edge/data/oracle.db "SELECT COUNT(*) FROM ss_motion_events"` | >0(NAS 推送) | | Oracle 运动片段 | `ls /opt/fam-edge/motion_clips/` | 存在 motion_*.mp4(素材分割产物) |