Files
auto_control/requirements.txt
T
butubb 3f041668ec feat: 设备配置二维码——设备池里出码,Agent 扫一下配好
配合设备端 Agent 新增的「扫码配置」:人在机架前、设备还没接进平台时,
不用插线也不用在手机上打字输地址/令牌(还容易漏指纹)。

- `GET /api/devices/qrcode?serial=`:生成配置二维码(PNG data-url),内容为
  {"v":1,"server":…,"token":…,"fingerprint":…,"name":…}
  * 前置:设备端商店已启用(令牌从那儿来),否则 400 并说明去哪儿开
  * `warn` 非空必须显示:①用 localhost 打开平台时,二维码里的地址手机会连不上
    (提示改用局域网地址,_lan_ip() 优先挑 192.168/10.x,**不用** gethostbyname ——
     那会返回 Tailscale 的 100.x 或 docker 的 172.17,手机根本连不上)
    ②设备还没采到指纹 → 扫完平台认不出是哪台
- 设备池每行加「二维码」按钮 → 弹窗显示二维码 + 设备名/地址 + 可展开看原始内容
- requirements 加 qrcode(纯 Python,配合已有的 Pillow 出 PNG,不引前端二维码库)
- 文档:API.md §6.2.2 新增、§6.2.1 名称呈现表补齐(剪贴板/安装弹窗/版本管理/
  安装进度四处);DEVICE_AGENT.md §5.3 新增二维码内容格式(设备端契约)

验证:二维码用 cv2.QRCodeDetector 解回来与 payload 完全一致;手机上实测——
扫 A07 的码 → 相机启动 → 解码 → 保存 → 立刻拉清单,平台认出「A07」。
2026-09-13 16:42:53 +08:00

50 lines
1.8 KiB
Plaintext
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.
# 设备自动化后台 依赖清单
# 安装:pip install -r requirements.txt
#
# 注意:uiautomator2 依赖 adb,本项目的 bin/adb/ 已自带 adb.exe,
# 无需单独安装 Android SDK Platform Tools。
# uiautomator2 首次连接设备时会自动推送 atx-agent 到设备。
# Web 框架
Flask>=2.3,<4.0
# Flask 扩展
Flask-Login>=0.6
Flask-SQLAlchemy>=3.0,<4.0
# MySQL 驱动(纯 Python,slim 容器里无需编译依赖)。
# 连接参数与多环境配置见 core/db_config.py 与 .env.example 的「数据库」段。
PyMySQL>=1.1
# 设备端 Agent 的「扫码配置」二维码(设备池面板生成,手机扫一下配好 server/token/指纹)。
# 纯 Python,配合已有的 Pillow 出 PNG,不引前端二维码库。
qrcode>=7.4
# 定时任务调度
APScheduler>=3.10,<4.0
# HTTP 客户端
requests>=2.28
# SSH 远程执行(预留运维用;.env 配 STF_SSH_PASSWORD 时走密码认证,
# 跨平台无需 sshpass;未配置则退回系统 ssh 免密密钥)
paramiko>=3.0
# Android UI 自动化(uiautomator2)
uiautomator2>=3.0
# UI 元素抓取(步骤编辑器"抓取元素"功能,本地服务端口 20242)
uiautodev>=0.14
# 屏幕 OCR(条件判断的 OCR识别 选择器,ONNX 推理,跨平台:Windows/Linux/macOS,
# 中英文模型随包内置;服务器/容器环境必须用 headless 版 opencv——
# opencv-python 依赖 X11 库(libxcb),slim 容器里 import cv2 直接崩,OCR 步骤任务失败退出)
rapidocr_onnxruntime>=1.4
opencv-python-headless>=4.8,<5 # 锁定 4.x:5.x wheel 打包异常(无 cv2 模块)
# APK 元信息解析(应用管理功能:自动读取包名/版本/应用名)
pyaxmlparser>=0.3.27
# MCP Server + AI 控制台 Agent(fastmcp:Streamable HTTP 服务端/客户端)
fastmcp>=2.0