fix: 备份覆盖补全(动作库/系统配置入清单)+ 覆盖自检与未登记表告警;发布流程/红线文档更新
问题(2026-09-10 用户反馈):动作库"没有备份"。实测导出 zip 里 agent_action 数据其实在 (导出是 users.db 全库快照),但清单/预览没列它 → 看起来像没备份。同类还有 app_meta。 修复(core/system_backup.py): - SUMMARY_TABLES 补 agent_action(动作库) 与 app_meta(系统配置) + 中文标签; - 导出侧**覆盖自检**:登记表若在快照缺失 → manifest.coverage_missing + 日志告警; - 导入侧**反向自检**:备份含未登记表 → 预览告警提示登记(extra_tables); - 顶部注释写明新增持久化表必须登记(红线)。 其余: - monitor.html:数据备份面板文案改为明列全部业务表 + 指引(预览见表行数 / 新增表须登记); - doc/DEPLOY.md §3.5:新增「备份覆盖清单(红线)」小节(含清单与两侧自检说明); - doc/DEVELOPMENT.md:§5.6 增「备份覆盖红线」;§6 发布流程重写为分支流程 (本机建分支 → 用户确认 → 合 dev → dev 整体就绪 → 合 main → 220 部署,附部署命令); - doc/ARCHITECTURE.md §3.6:补备份覆盖登记提示。 实测:导出清单 12 表(含动作库 3 行、系统配置 8 行),coverage_missing 空;上传预览同样显示、 extra_tables 空。
This commit is contained in:
@@ -246,6 +246,15 @@ server {
|
||||
- **导出**:`POST /api/system/backup/export` → 用 sqlite 在线备份 API 对 `data/users.db` 做一致快照,打包 zip(`users.db` + `manifest.json` + 可选 `apks/*.apk`)
|
||||
- **导入**:上传 zip/`.db` → 校验预览(完整性/必需表/schema 版本告警)→ 确认后自动把当前库快照到 `data/backups/pre_restore_*.db`(安全网可回滚)→ 落 `data/restore_pending/` → **重启 web_server 生效**(web_server 在 `init_db` 前自动消费恢复任务)
|
||||
|
||||
**备份覆盖清单(红线)**:覆盖清单 = `core/system_backup.py` 的 `SUMMARY_TABLES`,当前包含
|
||||
`app_meta`(系统配置) / `user` / `device_group` / `task_job` / `custom_action` / `apk_file` / `device` /
|
||||
`pending_device` / `agent_conversation` / `agent_experience` / `experience_audit` / `agent_action`(动作库)。
|
||||
|
||||
> **新增任何持久化表,必须同步登记进该清单**——否则导出清单/预览里看不到它,会被误判为"没有备份"
|
||||
> (2026-09-10 动作库 `agent_action` 即因此被误判:数据其实在 `users.db` 快照里,只是清单漏列)。
|
||||
> 导出侧有**覆盖自检**(登记表若缺失 → `manifest.coverage_missing` + 日志告警);导入侧有**反向自检**
|
||||
> (备份含未登记表 → 预览告警提示登记)。
|
||||
|
||||
目录与常量:
|
||||
|
||||
| 目录 | 用途 |
|
||||
|
||||
Reference in New Issue
Block a user