Files
auto_control/web/__init__.py
T
butubb 55b1b74944 feat: 系统数据备份导出/导入后端——sqlite 在线快照 + apk 打包导出;上传校验预览→应用(自动快照当前库)+ 重启生效
导出:sqlite3 在线备份 API 对 data/users.db 做一致快照 → zip(users.db +
manifest.json:schema_version/逐表行数/apk 清单)+ 可选 data/apks/*.apk。
导出文件读入内存(BytesIO)发送后即删磁盘副本,避免 Windows 流式句柄锁残留。
导入:上传 zip/db → 暂存校验(integrity + 必需表 app_meta/user/task_job/
device_group + schema 版本提示)→ 确认应用:先自动快照当前库到
data/backups/pre_restore_*.db,再把备份落到 data/restore_pending/,由
web_server.py 在 init_db 之前 consume 换库——TaskManager 启动时才读库入内存、
Windows 不能热替换正被持有的库文件,故导入必须重启生效。

新增 web/system_api.py(export/preview/apply,全 @admin_required)与目录常量
BACKUP_DIR/RESTORE_STAGING_DIR/RESTORE_PENDING_DIR;.gitignore 排除运行产物。
2026-09-09 14:49:40 +08:00

34 lines
1.4 KiB
Python

"""Web 层蓝图包:web_server.py 只保留 app 初始化与装配,路由按功能域拆分。
模块划分(按功能定位问题):
auth — 登录/登出/CSRF/权限装饰器/页面路由(/、/wall)
monitor — 状态/运行控制/设备操作/远程看屏
tasks — 任务计划/分组/自定义动作/元素抓取/步骤测试
admin — 用户管理/日志
tools — adb 终端/剪贴板注入/应用版本
devices — 设备池管理
apks — 应用管理
tailscale — Tailscale 管理
system — 系统数据备份导出/导入
"""
from flask import Blueprint
def register_blueprints(app):
"""注册全部蓝图(url_prefix 为空,路由路径保持原样)。"""
from .auth import bp as auth_bp
from .monitor import bp as monitor_bp
from .tasks_api import bp as tasks_bp
from .admin_api import bp as admin_bp
from .tools_api import bp as tools_bp
from .devices_api import bp as devices_bp
from .apks_api import bp as apks_bp
from .tailscale_api import bp as tailscale_bp
from . import agent_api as _agent_mod
from .agent_api import bp as agent_bp
_agent_mod.set_app(app)
from .system_api import bp as system_bp
for bp in (auth_bp, monitor_bp, tasks_bp, admin_bp, tools_bp,
devices_bp, apks_bp, tailscale_bp, agent_bp, system_bp):
app.register_blueprint(bp)