Files
SmartUp/README.md
T
2026-06-02 19:25:20 +08:00

119 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SmartUp — API 上游管理与 Webhook 通知系统
SmartUp 是一个独立的 Web 后台,用于管理多个 API 上游的分组倍率监听,并通过 Webhook(通用 JSON / 钉钉机器人)发送变更通知。
## 功能
- **上游管理**:支持 none / bearer / api_key / 邮箱密码 四种认证方式
- **定时检测**:每个上游独立配置检测间隔,APScheduler 后台运行
- **倍率快照**:检测变化后保存快照,diff 比对历史
- **Webhook 通知**:支持通用 JSON 和钉钉机器人(带签名)
- **通知日志**:记录每次发送结果,支持筛选查看
- **自定义页面**:支持外部控制台入口管理
## 技术栈
- 后端:FastAPI + SQLite + APScheduler
- 前端:Vue 3 + Element Plus + Vite
- 部署:Docker Compose 单容器
## 快速部署
### 1. 准备配置文件
```bash
cp .env.example .env
# 编辑 .env,至少填写 ADMIN_PASSWORD 和 JWT_SECRET
```
### 2. 启动
```bash
docker compose up -d --build
```
首次启动时自动:
- 创建 SQLite 数据库(`./data/app.db`
- 初始化管理员账号
### 3. 访问
打开浏览器:http://localhost:8899
默认账号:`.env` 中配置的 `ADMIN_EMAIL` / `ADMIN_PASSWORD`
## 本地开发
### 后端
```bash
cd backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
# 创建 .env(可复制根目录的 .env.example
cat > .env << 'EOF'
ADMIN_EMAIL=admin@smartup.local
ADMIN_PASSWORD=dev123
JWT_SECRET=dev-secret
DATABASE_URL=sqlite:///./data/app.db
EOF
mkdir -p data
uvicorn app.main:app --reload --port 8000
```
### 前端
```bash
cd frontend
npm install
npm run dev # 代理到 localhost:8000
```
## 数据备份
SQLite 数据库位于 `./data/app.db`,直接复制即可备份:
> **WAL 模式说明**:启用 WAL 后,备份前请先执行 checkpoint 将 WAL 合并入主库:
> ```bash
> sqlite3 ./data/app.db "PRAGMA wal_checkpoint(TRUNCATE);"
> ```
```bash
cp ./data/app.db ./data/app.db.$(date +%Y%m%d)
```
## 环境变量
| 变量 | 说明 | 默认值 |
|------|------|--------|
| `ADMIN_EMAIL` | 管理员邮箱 | `admin@smartup.local` |
| `ADMIN_PASSWORD` | 管理员密码(必填) | — |
| `JWT_SECRET` | JWT 签名密钥 | `change-me-in-production` |
| `SERVER_PORT` | 宿主机端口 | `8899` |
| `TZ` | 时区 | `Asia/Shanghai` |
| `UNHEALTHY_THRESHOLD` | 连续失败多少次标记为异常 | `3` |
## 目录结构
```
SmartUp/
├── backend/ # FastAPI 应用
│ └── app/
│ ├── models/ # SQLAlchemy ORM
│ ├── schemas/ # Pydantic schemas
│ ├── routers/ # API 路由
│ ├── services/ # 业务逻辑(client/scheduler/webhook
│ └── utils/ # JWT / 钉钉签名
├── frontend/ # Vue 3 前端
│ └── src/
│ ├── views/ # 页面组件
│ ├── api/ # Axios 封装
│ └── stores/ # Pinia 状态
├── data/ # SQLite 数据目录(Docker volume
├── Dockerfile # 多阶段构建
├── docker-compose.yml
└── .env.example
```