为把数据库从单文件 SQLite 迁到 MySQL 5.7 铺路。本期不改后端: DB_HOST 为空时仍走 SQLite,本地开发无感。 - config.py: 新增 DEPLOY_ENV(默认 dev)与 DB_HOST/PORT/USER/PASSWORD/NAME/ CHARSET/COLLATION、DATABASE_URL、两个逃生阀(DB_ALLOW_ENV_MISMATCH / DB_ALLOW_SQLITE_FALLBACK) - core/db_config.py(新增): URI 组装;按方言分叉的引擎参数(utf8mb4、 pool_pre_ping、pool_recycle=1800、READ COMMITTED、STRICT_TRANS_TABLES); 连接探活;app_meta 方言中立读写(MySQL 里 key 是保留字,需反引号) - 防混库三层: ①库名与环境绑定(dev→auto_control_dev / prod→auto_control) ②库标签 app_meta.deployment_env 与 .env 声明比对 ③启动横幅打印当前库 (生产用 WARNING 级)。不符直接拒绝启动并说明两边分别是什么 - web_server.py: 硬编码 sqlite URI → db_config;配置错在装配期就 exit 2; init_db 之后跑库标签校验 + 横幅 - core/models.py: PRAGMA 监听器加 sqlite 类型守卫——它挂在 Engine 基类上, MySQL 连接执行 PRAGMA 会直接导致建连失败 - requirements.txt 加 PyMySQL;scripts/start.sh 依赖守卫加 pymysql, 并在 exec 前打印 DEPLOY_ENV/DB_NAME/DB_HOST - .env.example 新增「数据库」段;DEVELOPMENT.md §4.1/4.2、DEPLOY.md §2.2 同步 验证: 用 DATABASE_URL 指向 users.db 的一致快照副本跑通主要只读接口 (health/devices/jobs/pool/groups/discovery/summary 全 200,app_meta 读写正常); DEPLOY_ENV=prod 且无 DB_HOST 时退出码 2;开 DB_ALLOW_SQLITE_FALLBACK 后可回退。
46 lines
1.6 KiB
Plaintext
46 lines
1.6 KiB
Plaintext
# 设备自动化后台 依赖清单
|
||
# 安装: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
|
||
|
||
# 定时任务调度
|
||
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
|