|
|
@@ -178,3 +178,14 @@ MVP 不引入:
|
|
|
- 其余 L1/L2 路由渲染统一的"待开发"占位组件。
|
|
|
- 占位机制:非可用模块复用同一占位组件(`src/modules/placeholder/`),文案统一"待开发",可正常进入、不报错、不空白。
|
|
|
- L2 子菜单(域内多模块)与 L3 报表列表后续按路线图补;当前 MVP 导航可先平铺 7 个 L1 + 漏斗页,不强求展开全部 L2。
|
|
|
+
|
|
|
+## 10. 部署架构
|
|
|
+
|
|
|
+线上服务器 `100.64.0.62`(CentOS 7,glibc 2.17),内网访问 `http://100.64.0.62:8080/`。
|
|
|
+
|
|
|
+- **单进程同源托管**:服务器跑 **uvicorn**(`app.main:app`),用 `STATIC_DIR` 环境变量同源托管前端 SPA(`~/hs-data`,实时读盘)+ `/api`,端口 8080。前端相对 `/api` 调用走同源,免 CORS、免反向代理,只有一个常驻进程。本地开发/测试不设 `STATIC_DIR`,uvicorn 仅出 `/api`,前端由 Vite dev 提供。
|
|
|
+- **隔离运行时**:服务器装用户态 Miniconda Python 3.11(`~/miniconda3`,旧版 py311_24.7.1 以兼容 glibc 2.17),依赖走 manylinux 轮子(`pip --only-binary`,无需编译器);不动系统 Python(3.6/3.7,其他项目依赖)。
|
|
|
+- **取数**:`apps/api/.env`(gitignored)配 `DATABASE_URL`(直连内网 PG `100.64.0.10:25432`)+ `DB_SCHEMA=ads` + `USE_FAKE_DATA=false`;`session.py` 给连接挂 `search_path=ads`。
|
|
|
+- **两份 clone**:`~/hs-data`(deploy 分支,纯前端产物)+ `~/hs-api`(feature 分支,后端源码)。
|
|
|
+- **发布链路**(`infra/look.sh`,纯 git):本地 `test + build(VITE_USE_MOCK=false)` → 推 `feature`(源码)+ `deploy`(产物)→ 服务器 `git pull` 更新 `~/hs-data`(uvicorn 实时读盘,前端改动**无需重启**)+ `~/serve-hs-api.sh`(`nohup setsid`,幂等)确保后端在跑。
|
|
|
+- **后端代码更新**(非前端):需在服务器 `cd ~/hs-api && git pull` 后**重启 uvicorn**(`pkill -f "uvicorn app.main:app"; ~/serve-hs-api.sh`)——`look.sh` 不自动重启健康的后端以免抖动。
|