阶段3: 摘除 STF——删除 stf_client/stf_device_mgmt 与全部引用(STF 容器重启/设备管理/强制释放占用/agent 按钮/占用列),调度与设备管理完全基于本地设备池+adb;错误类迁入 device_worker,create_worker 去 stf 参数
This commit is contained in:
@@ -312,7 +312,6 @@ select.form-control{cursor:pointer}
|
||||
<button class="btn btn-danger" onclick="apiAction('/api/stop_all')" data-perm="devices">停止全部</button>
|
||||
<button class="btn btn-danger" id="btn-stop-selected" onclick="stopSelectedDevices()" title="停止所有勾选的运行中设备" data-perm="devices">停止选中</button>
|
||||
<button class="btn btn-danger" onclick="clearAllErrors()" title="清除所有异常/失败设备的错误状态(运行中/等待重试的跳过)" data-perm="devices">清除全部异常</button>
|
||||
<button class="btn" onclick="apiAction('/api/release')" data-perm="devices">强制释放占用</button>
|
||||
<button class="btn btn-primary" id="btn-scan-fg" onclick="scanForeground()" data-perm="devices">扫描前台App</button>
|
||||
<button class="btn" onclick="screenAllDevices('on')" data-perm="devices" title="所有在线设备亮屏并解锁">一键亮屏</button>
|
||||
<button class="btn" onclick="screenAllDevices('off')" data-perm="devices" title="所有在线设备息屏(运行中任务会中断)">一键息屏</button>
|
||||
@@ -325,7 +324,6 @@ select.form-control{cursor:pointer}
|
||||
<th class="col-cb"><input type="checkbox" id="cb-all" onclick="toggleAllDevices(this.checked)" title="全选/取消全选"></th>
|
||||
<th data-sort="serial" onclick="_lpSort('devices','serial')">设备</th>
|
||||
<th data-sort="model" onclick="_lpSort('devices','model')">型号</th>
|
||||
<th data-sort="stf_occupied" onclick="_lpSort('devices','stf_occupied')">STF</th>
|
||||
<th data-sort="worker_status" onclick="_lpSort('devices','worker_status')">任务状态</th>
|
||||
<th data-sort="foreground_app" onclick="_lpSort('devices','foreground_app')">前台App</th>
|
||||
<th data-sort="progress" onclick="_lpSort('devices','progress')">进度</th>
|
||||
@@ -455,19 +453,6 @@ select.form-control{cursor:pointer}
|
||||
</div>
|
||||
|
||||
<!-- ========== Tab 7: 维护(仅管理员) ========== -->
|
||||
<div id="tab-maintenance" class="tab-panel">
|
||||
<div class="page-title">维护</div>
|
||||
<div class="page-sub">管理员专用:STF 服务管理(adb 远程终端与 Tailscale 管理已移至"工具")</div>
|
||||
<div class="toolbar">
|
||||
<button class="btn btn-danger" onclick="restartStf()">一键重启 STF 容器</button>
|
||||
<span id="stf-restart-status" class="text-muted"></span>
|
||||
</div>
|
||||
<div class="help" style="margin-top:8px">
|
||||
通过 SSH 到部署机执行 <code>docker restart</code>(目标与容器名可用环境变量
|
||||
<code>STF_SSH_TARGET</code> / <code>STF_DOCKER_CONTAINER</code> 配置)。
|
||||
影响:STF 约 30 秒不可用,期间设备占用状态重置;<b>有任务在运行时会被拒绝执行</b>。
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ========== Tab 8: 工具(仅管理员) ========== -->
|
||||
<div id="tab-tools" class="tab-panel">
|
||||
@@ -482,7 +467,6 @@ select.form-control{cursor:pointer}
|
||||
<button class="sub-tab" data-sub="appver" onclick="showSubTab('tools','appver')">应用版本管理</button>
|
||||
<button class="sub-tab" data-sub="devapps" onclick="showSubTab('tools','devapps')">设备已装应用</button>
|
||||
<button class="sub-tab" data-sub="devpool" onclick="showSubTab('tools','devpool')">设备池管理</button>
|
||||
<button class="sub-tab" data-sub="stfdev" onclick="showSubTab('tools','stfdev')">STF 设备管理</button>
|
||||
<button class="sub-tab" data-sub="screen" onclick="showSubTab('tools','screen')">远程看屏</button>
|
||||
</div>
|
||||
|
||||
@@ -507,7 +491,7 @@ select.form-control{cursor:pointer}
|
||||
</div>
|
||||
<div style="flex:1;min-width:280px">
|
||||
<div class="form-group">
|
||||
<label>目标设备(本地 adb 含 USB + STF 池,可多选)</label>
|
||||
<label>目标设备(本地 adb 含 USB + 设备池,可多选)</label>
|
||||
<div class="device-list" id="clip-devices" style="max-height:300px">
|
||||
<div class="empty" style="padding:20px">点击"刷新设备"加载</div>
|
||||
</div>
|
||||
@@ -527,7 +511,7 @@ select.form-control{cursor:pointer}
|
||||
<div class="sub-panel" id="tools-sub-adb">
|
||||
<div class="help">选中目标设备后,命令里的 <code>-s <设备></code> 自动附加,直接写
|
||||
<code>shell ls /sdcard</code> 即可。离线设备也可选,用"重连设备"恢复。
|
||||
<b>禁止 kill-server / disconnect</b>(会中断 STF provider 的设备监控)。</div>
|
||||
<b>禁止 kill-server / disconnect</b>(会中断共享的 adb transport,导致设备连接全部重建)。</div>
|
||||
<div style="display:flex;gap:8px;margin:8px 0;align-items:center">
|
||||
<label style="font-size:12px;color:var(--text-light)">目标设备</label>
|
||||
<select id="adb-device" class="form-control" style="flex:1;max-width:340px;font-family:monospace"></select>
|
||||
@@ -548,9 +532,7 @@ select.form-control{cursor:pointer}
|
||||
<button class="btn btn-xs" onclick="fillAdbCmd('tcpip 5555')" title="USB 设备开启网络调试(重启设备后失效,需重新执行)">tcpip 5555 转网络调试</button>
|
||||
</div>
|
||||
<div style="display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap">
|
||||
<button class="btn btn-xs btn-danger" onclick="uninstallStfAgent()" title="自动先 adb connect 再卸载 jp.co.cyberagent.stf,STF 会在设备重连时重新推送">卸载 STF agent(卡死时用)</button>
|
||||
<button class="btn btn-xs" onclick="reconnectAdbDevice()" title="重新 adb connect 该设备">重连设备</button>
|
||||
<button class="btn btn-xs" onclick="checkStfAgent()" title="自动先 adb connect 再查看 jp.co.cyberagent.stf 是否已安装">检查 agent</button>
|
||||
</div>
|
||||
<pre id="adb-output" class="adb-console">(执行命令后输出显示在这里)</pre>
|
||||
</div>
|
||||
@@ -571,7 +553,7 @@ select.form-control{cursor:pointer}
|
||||
<tbody id="tb-tailscale"><tr><td colspan="8" class="empty">点击"刷新设备"加载</td></tr></tbody>
|
||||
</table>
|
||||
<div class="list-pager" id="pager-tailscale"></div>
|
||||
<div class="help">"设置IP"可修改设备 IPv4(会断开当前连接,平台 serial 随之变化,需同步 STF 设备池);"密钥不过期"= 关闭设备密钥验证,设备不会被定期踢下线;auth key 生成后只显示一次,请立即复制。</div>
|
||||
<div class="help">"设置IP"可修改设备 IPv4(会断开当前连接,平台 serial 随之变化,需同步设备池);"密钥不过期"= 关闭设备密钥验证,设备不会被定期踢下线;auth key 生成后只显示一次,请立即复制。</div>
|
||||
</div>
|
||||
|
||||
<!-- 子分栏 4:应用管理 -->
|
||||
@@ -613,7 +595,7 @@ select.form-control{cursor:pointer}
|
||||
<tbody id="tb-appver"><tr><td colspan="4" class="empty">输入包名后点击"查询版本"</td></tr></tbody>
|
||||
</table>
|
||||
<div class="list-pager" id="pager-appver"></div>
|
||||
<div class="help">查询所有设备(本地 adb 含 USB + STF 池)上该包名的安装情况与版本号,用于对比各设备 App 版本是否一致;未连接的 STF 设备会自动连接(绝不断开,不影响任务)。</div>
|
||||
<div class="help">查询所有设备(本地 adb 含 USB + 设备池)上该包名的安装情况与版本号,用于对比各设备 App 版本是否一致;未连接的设备会自动连接(绝不断开,不影响任务)。</div>
|
||||
</div>
|
||||
|
||||
<!-- 子分栏 6:设备已装应用 -->
|
||||
@@ -661,36 +643,6 @@ select.form-control{cursor:pointer}
|
||||
新增设备流程:手机开 USB 调试 → 连上后「adb 终端」执行 <code>tcpip 5555</code> 转网络调试 →
|
||||
Tailscale 上线(同一账号)→ 在此添加 <code>IP:5555</code>(自动尝试连接)→
|
||||
任务运行时 u2 自动推送 atx-agent。<b>停用 = 不参与任务调度</b>,删除 = 从池中移除(不影响其他系统)。
|
||||
迁移期如需 STF 侧也接入,再到「STF 设备管理」添加同一 IP。
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 子分栏 6:STF 设备管理 -->
|
||||
<div class="sub-panel" id="tools-sub-stfdev">
|
||||
<div class="toolbar">
|
||||
<input type="text" id="stfdev-ip" class="form-control" style="width:220px;font-family:monospace"
|
||||
placeholder="设备 IP,如 100.100.10.20" onkeydown="if(event.key==='Enter')addStfDev()">
|
||||
<button class="btn btn-primary" onclick="addStfDev()">添加设备并连接</button>
|
||||
<button class="btn" onclick="reconnectStfDevices()" title="立即运行 220 的 connect_devices.sh,补连所有配置设备">一键重连</button>
|
||||
<button class="btn" onclick="loadStfDevMgmt()">刷新</button>
|
||||
<input class="form-control list-search" id="search-stfdev" placeholder="搜索 IP...">
|
||||
<span id="stfdev-status" class="text-muted"></span>
|
||||
</div>
|
||||
<div class="help" id="stfdev-reconnect-out" style="display:none;background:#0f172a;color:#e2e8f0;font-family:monospace;font-size:12px;padding:10px;border-radius:8px;margin-bottom:10px;white-space:pre-wrap"></div>
|
||||
<table class="table">
|
||||
<thead><tr>
|
||||
<th data-sort="ip" onclick="_lpSort('stfdev','ip')">设备</th>
|
||||
<th data-sort="cfg" onclick="_lpSort('stfdev','cfg')">脚本配置</th>
|
||||
<th data-sort="state" onclick="_lpSort('stfdev','state')">连接状态(220 adb)</th>
|
||||
<th>操作</th>
|
||||
</tr></thead>
|
||||
<tbody id="tb-stfdev"><tr><td colspan="4" class="empty">点击"刷新"加载</td></tr></tbody>
|
||||
</table>
|
||||
<div class="list-pager" id="pager-stfdev"></div>
|
||||
<div class="help">
|
||||
管理 220 上 OpenSTF 设备池:添加 = 写入 connect_devices.sh 的 DEVICES 列表并立即 adb connect;
|
||||
移除 = 从脚本删除并 adb disconnect(设备从 STF 池下线,任务将不再分配到它)。
|
||||
脚本的 cron 每 5 分钟自动补连掉线设备。adb 操作发生在 220(STF provider 侧),不影响本机任务直连。
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user