refactor: 前端JS拆分为8个模块(base/list/monitor/editor/tasks/tools/apps/admin,按依赖顺序加载)+ 删除废弃文件(start_web.bat/main.py/fix_web.bat/cleanup.py,web已全覆盖)+ 文档同步 + 修复/api/summary缺导入

This commit is contained in:
2026-08-11 14:53:04 +08:00
parent 2e491b19e2
commit 060157ea1a
19 changed files with 2584 additions and 2767 deletions
+28 -38
View File
@@ -45,8 +45,6 @@ python web_server.py
启动后访问 **http://localhost:18050/**,默认账号 `admin` / `admin123`。
> Windows 用户也可双击 `start_web.bat` 启动(自动提权 + 添加防火墙规则,支持局域网访问)。
### 验证启动
控制台看到以下日志即表示启动成功:
@@ -73,11 +71,9 @@ python web_server.py
```
platform-tools/
├── config.py # 根配置(STF地址/token、adb路径、web端口)
├── config.py # 根配置(部署配置统一从 .env 读,模板见 .env.example)
├── web_server.py # Flask 入口(API + 登录 + 单页应用)
├── main.py # 命令行入口(单设备跑一次,不走 web)
├── requirements.txt # Python 依赖清单
├── start_web.bat # Windows 一键启动(提权 + 防火墙)
│
├── core/ # 核心基础设施层
│ ├── logger.py # 统一日志(分文件、10MB 滚动)
@@ -88,49 +84,50 @@ platform-tools/
│ ├── u2_helper.py # uiautomator2 通用辅助函数
│ ├── uiauto_helper.py # uiautodev 元素抓取客户端
│ ├── apk_manager.py # APK 上传/解析/批量安装
│ ├── ocr.py # 屏幕 OCR(RapidOCR,条件判断 OCR 选择器)
│ ├── ssh_client.py # SSH 统一执行(paramiko 纯密码 / 免密密钥)
│ ├── stf_device_mgmt.py # STF 设备池管理(读写 220 脚本 + adb connect/disconnect)
│ ├── tailscale_client.py # Tailscale API v2 客户端
│ ├── models.py # SQLAlchemy 数据模型 + 数据库初始化
│ └── actions/
│ ├── __init__.py # 全局 Action 框架导出
│ └── base.py # BaseAction 基类 + 注册机制
│ └── actions/ # 全局 Action 框架
│
├── tasks/ # 任务定义层(每个 App 一个子包)
│ ├── __init__.py # 全局任务注册表
│ ├── base.py # BaseTask 基类 + @register_task 装饰器
│ ├── douyin/ # 抖音养号任务
│ │ ├── __init__.py
│ │ ├── task.py # DEFAULT_PARAMS + Worker + Task
│ │ └── actions/ # 抖音专属操作(点赞等)
│ │ ├── __init__.py
│ │ ├── base.py # 抖音 ACTIONS 注册表
│ │ └── like.py # 点赞操作(找红心/双击回退)
│ └── generic/ # 通用步骤任务(可视化编辑器编排)
│ ├── __init__.py
│ └── task.py # 步骤执行引擎(open_app/click/swipe/loop...)
│ └── task.py # 步骤执行引擎(open_app/click/swipe/if_el...)
│
├── templates/admin/ # 前端页面
│ ├── monitor.html # 单页应用(监控/任务/分组/日志/用户 5 Tab)
│ ├── monitor.html # 单页应用(监控/任务/分组/日志/用户/维护/工具)
│ └── login.html # 登录页
│
├── static/admin/
│ ├── custom.css # 自定义样式
│ └── monitor.js # 前端 JS(已从 monitor.html 拆分)
├── static/admin/ # 前端 JS 模块(monitor.html 按依赖顺序加载)
│ ├── base.js # 通用基础:API/CSRF/权限/Tab切换/子分栏/模态框
│ ├── list.js # 统一列表组件(搜索+分页+排序)
│ ├── monitor.js # 监控页(设备表/截图/异常汇总)
│ ├── editor.js # 步骤编辑器(拖拽/条件判断/元素抓取)
│ ├── tasks.js # 任务 Tab + 自定义动作
│ ├── tools.js # 工具 Tab(剪贴板/应用版本/STF设备/adb终端/Tailscale)
│ ├── apps.js # 工具 Tab-应用管理(APK/设备已装应用)
│ ├── admin.js # 管理 Tab(分组/日志/用户)+ 初始化
│ └── custom.css # 自定义样式
│
├── data/ # 运行时数据
│ ├── users.db # SQLite(用户/分组/任务/自定义动作/APK记录)
│ └── apks/ # 上传的 APK 文件存储
│
├── logs/ # 日志文件(自动生成,10MB 滚动保留 5 份)
│ ├── core.log # 核心程序日志
│ ├── task.log # 任务执行日志
│ ├── web.log # Web 请求日志
│ └── action.log # 操作执行日志
│
├── bin/adb/ # adb 可执行文件(Windows: adb.exe + dll)
├── scripts/ # 实用脚本
│ ├── cleanup.py # 清理 STF 残留设备占用
│ └── pack.py # 打包项目为 zip(排除运行时产物)
│ ├── pack.py # 打包项目为 zip(排除运行时产物)
│ └── supervise.sh # 进程守护(崩溃自动重启)
└── doc/ # 项目文档
├── TASK_DEV.md # 任务开发指南(新增 App 任务模板)
├── API.md # API 文档
├── ARCHITECTURE.md # 架构详解
├── DEPLOY.md # 部署指南
├── DEVELOPMENT.md # 开发指南
└── TASK_DEV.md # 任务开发指南(新增 App 任务模板)
├── ARCHITECTURE.md # 架构详解
├── DEPLOY.md # 部署指南
└── API.md # API 接口文档
@@ -382,10 +379,8 @@ Web 后台"日志"Tab 可实时查看各模块日志。
| 脚本 | 用途 |
|------|------|
| `python web_server.py` | 启动 Web 管理后台 |
| `python main.py` | 命令行跑一次抖音养号(单设备,不走 web) |
| `python scripts/cleanup.py` | 清理 STF 残留设备占用(强杀进程后用) |
| `python scripts/pack.py` | 打包项目为 zip(排除日志/数据库/APK) |
| `start_web.bat` | Windows 一键启动(提权 + 防火墙规则) |
| `bash scripts/supervise.sh` | 进程守护(web_server 崩溃自动重启) |
---
@@ -407,13 +402,8 @@ STF 状态有缓存,`present=True` 不代表设备真在线。用"扫描前台
### 设备一直被占用无法释放
运行清理脚本:
```bash
python scripts/cleanup.py
```
会释放当前账户占用的所有设备。
监控页点"**强制释放占用**"按钮释放当前账户占用的所有设备;
无人值守场景可在 `.env` 设置 `AUTO_RELEASE_STALE_OCCUPY=true`(单实例)启动自动清理。
### u2.connect 卡死