docs: 迁移收尾——部署信息同步到 Oracle 新机 129.146.26.249

- backend/.env.example: AI 网关地址 129.146.203.203 → 129.146.26.249;
  MariaDB 注释段更新为生产实际(garmin 专用账号 @ 127.0.0.1:3306,socket 已不用)
- README: 生产数据层/数据库说明改为 Oracle 新机本地 MariaDB 10.3
- docs/REQUIREMENTS: 部署目标 NAS → Oracle 新机;公网方式 frp 隧道 → gunicorn 直绑 8123
- docs/ARCHITECTURE: 部署架构改为真实生产栈(Flask+gunicorn+MariaDB+SPA)
This commit is contained in:
ericwyuan
2026-08-25 23:59:47 +08:00
parent e7c336b9df
commit ac99c1342d
4 changed files with 22 additions and 28 deletions

View File

@@ -21,7 +21,7 @@
### 后端
- Python 3.10+ + Flask
- Gunicorn生产运行
- 可插拔数据层SQLite本地开发/ MariaDB生产运行于 NAS,经 PyMySQL
- 可插拔数据层SQLite本地开发/ MariaDB生产Oracle 云服务器本地 MariaDB 10.3,经 PyMySQL
- JWT 鉴权 + scrypt 密码哈希
- garminconnect可选Garmin API 集成)
@@ -92,15 +92,16 @@ CORS_ORIGIN=http://localhost:3000,http://localhost:5173
数据层通过 `DB_TYPE` 环境变量切换后端,**业务代码无需改动**
- **SQLite默认本地开发**:零配置,由 `DATABASE_PATH` 指定文件位置。
- **MariaDB生产,运行在 NAS 上)**:经 `mysql2` 连接,优先走 socket`MARIADB_SOCKET`),也可用 `MARIADB_HOST` + `MARIADB_PORT`
- **MariaDB生产**:运行于 Oracle 云服务器129.146.26.249)本地的 MariaDB 10.3,专用账号 `garmin` `127.0.0.1:3306` 连接PyMySQL
生产使用 NAS 上的独立库 `garmin_health_lab`(与 `sentinel_home_ai` 隔离)。完整配置见 `backend/.env.example`
生产使用独立库 `garmin_health_lab`(与 `sentinel_home_ai` 隔离)。完整配置见 `backend/.env.example`
```env
DB_TYPE=mariadb
MARIADB_SOCKET=/run/mysqld/mysqld10.sock
MARIADB_USER=root
MARIADB_PASSWORD=your_nas_mariadb_root_password
MARIADB_HOST=127.0.0.1
MARIADB_PORT=3306
MARIADB_USER=garmin
MARIADB_PASSWORD=your_production_mariadb_password
MARIADB_DATABASE=garmin_health_lab
```

View File

@@ -8,12 +8,13 @@ DB_TYPE=sqlite
# SQLite file (used when DB_TYPE=sqlite)
DATABASE_PATH=./data/health.db
# MariaDB (used when DB_TYPE=mariadb) — runs on the NAS
# MARIADB_SOCKET=/run/mysqld/mysqld10.sock
# MariaDB (used when DB_TYPE=mariadb) — production DB on the Oracle server
# (129.146.26.249, local MariaDB 10.3). Dedicated account over TCP 127.0.0.1;
# MARIADB_SOCKET is only needed if TCP auth is disabled for the app user.
# MARIADB_HOST=127.0.0.1
# MARIADB_PORT=3306
# MARIADB_USER=root
# MARIADB_PASSWORD=your_nas_mariadb_root_password
# MARIADB_USER=garmin
# MARIADB_PASSWORD=your_production_mariadb_password
# MARIADB_DATABASE=garmin_health_lab
# --- Auth ---
@@ -36,7 +37,7 @@ CORS_ORIGIN=http://localhost:3000,http://localhost:5173
# absorbs single-vendor quota limits. Reached directly, bypassing any local
# HTTP proxy. NOTE: its NVIDIA upstream is a large reasoning model — replies
# can take 2-3 minutes, so set AI_TIMEOUT_SECONDS accordingly.
AI_GATEWAY_BASE_URL=http://129.146.203.203:5100/v1
AI_GATEWAY_BASE_URL=http://129.146.26.249:5100/v1
AI_GATEWAY_TOKEN=
AI_GATEWAY_MODEL=ai-gateway-auto

View File

@@ -159,17 +159,9 @@ AnalysisService.generateRecommendations()
## 部署架构
```
┌─────────────────────────────────┐
Development 本地开发 │
│ └─ npm run dev (同时运行前后端) │
└─────────────────────────────────┘
┌─────────────────────────────────┐
│ Production 生产环境 │
│ ├─ Docker 容器化 │
│ ├─ Nginx 反向代理 │
│ ├─ Node.js 后端服务 │
│ └─ SQLite 数据持久化 │
└─────────────────────────────────┘
```
- **Development 本地开发**`npm run dev` 同时启动前后端 —— Vite/React (3000/5173) + Flask (5000, SQLite)。
- **Production 生产环境**Oracle 云服务器 129.146.26.249
- Flask + gunicorn 直绑 `0.0.0.0:8123`systemd `garmin-health-lab.service`,开机自启)
- React SPA 静态包由后端 `STATIC_DIR` 提供
- MariaDB 10.3`127.0.0.1:3306`,专用账号 `garmin`,库 `garmin_health_lab`
- AI 网关 `129.146.26.249:5100/v1`

View File

@@ -4,7 +4,7 @@
状态:`✅ 已完成` · `🚧 进行中` · `📋 待做` · `⏸ 已搁置`
最后更新2026-08-24
最后更新2026-08-25
---
@@ -13,8 +13,8 @@
| # | 需求 | 理解 | 状态 |
|---|---|---|---|
| 1.1 | 新建项目分析佳明海外账号健康数据 | Gitea 自建仓库Web 应用 | ✅ |
| 1.2 | 部署到 NAS (192.168.50.64),用 MariaDB | Flask + gunicorn + MariaDB(socket)SQLite 供开发 | ✅ |
| 1.3 | 公网可访问 | frp 隧道 NAS:8123 → Oracle:8123 | ✅ |
| 1.2 | 部署到 Oracle 云服务器 (129.146.26.249),用 MariaDB | Flask + gunicorn + MariaDB(127.0.0.1:3306)SQLite 供开发 | ✅ |
| 1.3 | 公网可访问 | gunicorn 直绑 Oracle:8123frp 隧道已移除) | ✅ |
| 1.4 | 单元测试 / 界面自测 / 性能测试 | 446 项 pytest界面用浏览器实测接口逐个计时 | ✅ |
| 1.5 | 一任务一 commit完成即推送 | 已成为固定流程 | ✅ |