6044b006852d231fbc0f5600a9e78844ba941293
- 上游 Key 命名改为 {prefix}-{upstream.id}-{safe_group_name}-{group_id}
- 唯一约束 (upstream_id, group_id, managed_prefix) 加 managed_prefix 列
- 上游检测成功时同步 Key 状态,远端已删/分组已删自动清理
- 重复分组导入跳过,目标网站已存在同名分组返回 exists
- 账号导入平台自动识别(auto/manual 模式)
- 全选可导入 Key 按钮 + 目标分组自动匹配
- 导入幂等:已导入过的 Key 校验远端账号,不存在则重建
- 新增同步接口 POST /sync-imported-upstream-keys
- account_exists() 通过拉取账号列表判断,避免 404 误判
- credentials.base_url 注入来源上游地址,避免 401
- 前端导入弹窗自动同步+刷新按钮+并发/优先级设置
- 新增 12 个测试覆盖同步、幂等、远端删除、校验失败路径
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. 准备配置文件
cp .env.example .env
# 编辑 .env,至少填写 ADMIN_PASSWORD 和 JWT_SECRET
2. 启动
docker compose up -d --build
首次启动时自动:
- 创建 SQLite 数据库(
./data/app.db) - 初始化管理员账号
3. 访问
打开浏览器:http://localhost:8899
默认账号:.env 中配置的 ADMIN_EMAIL / ADMIN_PASSWORD
本地开发
后端
cd backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
playwright install chromium
# 创建 .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
前端
cd frontend
npm install
npm run dev # 代理到 localhost:8000
数据备份
SQLite 数据库位于 ./data/app.db,直接复制即可备份:
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 |
BROWSER_PROFILES_DIR |
远程浏览器登录态/profile 存储目录 | /app/data/browser-profiles |
BROWSER_HEADLESS |
远程浏览器是否无头运行 | true |
目录结构
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
Description
Languages
Python
64.3%
Vue
28.2%
TypeScript
3.3%
CSS
2.1%
JavaScript
1.1%
Other
1%