导出: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 排除运行产物。
54 lines
678 B
Plaintext
54 lines
678 B
Plaintext
# Python
|
|
__pycache__/
|
|
*.py[cod]
|
|
*$py.class
|
|
*.so
|
|
.Python
|
|
venv/
|
|
.venv/
|
|
env/
|
|
|
|
# 运行时数据
|
|
logs/*.log
|
|
data/apks/*.apk
|
|
data/*.migrated
|
|
data/*.db-shm
|
|
data/*.db-wal
|
|
|
|
# 数据库(含用户和任务数据,按需决定是否提交)
|
|
|
|
|
|
# IDE
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
*.swo
|
|
|
|
# Trae / AI 工具产物
|
|
.claude/
|
|
|
|
# OS
|
|
.DS_Store
|
|
Thumbs.db
|
|
desktop.ini
|
|
|
|
# 临时文件
|
|
*.tmp
|
|
*.bak
|
|
|
|
# 密钥/环境变量(真实 .env 含 token/密钥,绝不提交)
|
|
.env
|
|
.env.local
|
|
|
|
|
|
bin/adb/*
|
|
# 数据备份与损坏库(运维临时文件,不入库)
|
|
data/db_backup_*/
|
|
data/*.corrupt_*
|
|
data/users.db*
|
|
data/users.db-wal
|
|
data/users.db-shm
|
|
data/backups/
|
|
data/restore_staging/
|
|
data/restore_pending/
|