refactor: web_server 模块化拆分(web/ 蓝图包 auth/monitor/tasks/admin/tools/devices/apks/tailscale + context/common,web_server 1796→193 行仅留装配与启动)+ 大屏优化(网格 5s 轮询、弹窗独占缩略图、流支持 q/fps)+ 三修复(MIUI 屏幕状态检测改 dumpsys power、补 ADB_PATH 导入修复一键亮屏、renderGrid 增量渲染不重载缩略图)

This commit is contained in:
2026-08-19 14:55:29 +08:00
parent e07b339a51
commit ce47a5b83d
16 changed files with 1922 additions and 1780 deletions
+46
View File
@@ -0,0 +1,46 @@
"""跨模块共享工具(web 层)。"""
from core import device_pool
from core.adb_helper import _adb
from core.logger import get_logger
_log = get_logger("web")
def _merged_device_list():
"""本地 adb(含 USB)+ 设备池的合并列表([{serial, state}])。
供维护终端/剪贴板注入/应用版本管理等设备选择场景共用。
状态:device/offline=本机 adb 实际状态;pool=设备池已配置但本机未连接。
"""
states = {}
out = _adb("devices")
for line in (out or "").splitlines()[1:]:
parts = line.split()
if len(parts) >= 2 and parts[0] and not parts[0].startswith("*"):
states[parts[0]] = parts[1]
try:
for serial in device_pool.list_configured():
if serial not in states:
states[serial] = "pool"
except Exception:
pass
return [{"serial": s, "state": st} for s, st in sorted(states.items())]
def _device_screen_state(serial):
"""设备屏幕状态:on/off/unknown(dumpsys power 只读查询)。
用 mWakefulness 判断(Asleep=熄屏):MIUI 的 dumpsys display 没有
mScreenState 字段,power 字段全机型存在。USB 设备查询失败返回 unknown。
"""
try:
if ":" not in serial:
return "unknown"
out = _adb("-s", serial, "shell", "dumpsys", "power") or ""
import re
m = re.search(r"mWakefulness=(\w+)", out)
if m:
return "off" if m.group(1).lower() == "asleep" else "on"
except Exception:
pass
return "unknown"