4.9 KiB
backup-restore Specification
Purpose
TBD - created by archiving change add-complete-environment-backup-restore. Update Purpose after archive.
Requirements
Requirement: Complete Environment Backup
The system SHALL support a complete backup mode that captures all durable user-facing environment data needed to restore the app to the backed-up state.
Scenario: Complete backup includes durable domains
- GIVEN the user has projects, assets, tasks, workflows, prompts, knowledge base content, chats, playlists, skills, model preferences, and UI preferences
- WHEN the user creates a complete backup
- THEN the backup SHALL include every selected durable domain
- AND the manifest SHALL record v4 schema metadata, selected domains, per-domain stats, and backup mode
Requirement: Replace Restore
The system SHALL support replace restore for complete backups by clearing selected local domains before importing backup data.
Scenario: Replace restore mirrors the backup
- GIVEN the current browser has existing local data
- AND the user selects replace restore for a complete backup
- WHEN restore completes
- THEN selected domains SHALL match the backup content instead of being merged with previous local content
- AND the workspace SHALL reload and restore the backed-up current board when available
Requirement: Encrypted Secrets
The system SHALL export sensitive configuration only when the user explicitly includes secrets and provides a backup password.
Scenario: Secrets require password
- GIVEN settings contain API keys, provider profiles, or sync credentials
- WHEN the user creates a backup without enabling secrets
- THEN sensitive values SHALL NOT be written to normal backup JSON
- WHEN the user enables secrets and provides a password
- THEN sensitive values SHALL be written only to an encrypted secrets payload
Requirement: Full Task and Prompt Fidelity
The system SHALL include full terminal and archived generation history required by prompt history, media library, PPT, audio, and task queue views.
Scenario: Task and prompt data survives restore
- GIVEN completed or archived image, video, audio, PPT, text, and agent tasks exist
- WHEN the user backs up and restores data
- THEN restored task records SHALL be persisted to IndexedDB
- AND prompt preset settings SHALL include all supported prompt types, deleted prompt contents, and prompt overrides
Requirement: Backward Compatibility
The system SHALL continue importing existing v2 and v3 backups.
Scenario: Legacy backups import incrementally
- GIVEN a valid v2 or v3 backup without environment files
- WHEN the user imports it
- THEN existing prompt, project, asset, task, and knowledge base import behavior SHALL continue to work
- AND missing v4 environment data SHALL be reported as skipped, not as a fatal error
Requirement: Shared Backup Restore Core
系统 SHALL 提供一套由主应用与 sw-debug 共用的备份恢复核心逻辑,用于统一备份格式、导出筛选、导入恢复顺序与去重规则。
Scenario: Main App and sw-debug export the same data semantics
- GIVEN 主应用与
sw-debug访问的是同一份项目、素材、任务、提示词与知识库数据 - WHEN 用户分别从主应用与
sw-debug执行备份 - THEN 两边都必须产出兼容的 manifest 与 ZIP 目录结构
- AND 音频、任务结果、知识库、项目目录和素材元数据的导出语义必须一致
Scenario: Shared core fixes apply to both environments
- GIVEN 共享备份恢复核心修复了素材命名冲突或音频任务筛选问题
- WHEN 主应用或
sw-debug执行备份恢复 - THEN 两边都必须同时继承同一修复行为
- AND 不允许再出现仅一端生效、另一端仍保留旧逻辑的情况
Requirement: Environment Adapter Boundary
系统 SHALL 将备份恢复中的环境相关能力限制在适配层,以隔离核心逻辑与平台依赖。
Scenario: Core stays independent from app-specific services
- GIVEN 共享备份恢复核心需要读取或写入数据
- WHEN 核心执行导出或导入
- THEN 核心只能通过适配接口访问项目、素材、任务、提示词、知识库与缓存能力
- AND 核心不得直接依赖主应用 UI、React 状态或
sw-debugDOM 节点
Requirement: Knowledge Base Parity
系统 SHALL 保证主应用与 sw-debug 在共享内核接入后,对知识库备份与恢复采用同一数据结构与导入顺序。
Scenario: Knowledge base backup is available in both environments
- GIVEN 知识库中存在目录、笔记、标签和图片
- WHEN 用户从主应用或
sw-debug执行备份恢复 - THEN 两边都必须使用同一份知识库序列化结构
- AND 导入后笔记数量、目录映射和标签关联必须保持一致