配套原型交互稿说明:[[我的笔记/NAS需求文档/同步备份/Figma原型交互稿说明(PC端+移动端)]]
| 项目 | 内容 |
|---|---|
| 产品名称 | 客户端同步备份 |
| 所属模块 | NAS 客户端 / AWOL backup 应用 |
| 文档类型 | 产品需求文档(PRD) |
| 版本号 | v1.0 |
| 文档状态 | 待评审 |
| 创建日期 | 2026-04-24 |
| 更新日期 | 2026-05-05 |
| 参考资料 | [[客户端备份功能615需求说明]]、[[我的笔记/NAS需求文档/同步备份/备份功能说明(PRD表格版)]]、[[我的笔记/NAS需求文档/同步备份/API_REFERENCE]] |
当前客户端已具备基于 Zima OS 的同步与备份能力,但现有材料主要聚焦能力清单和界面草图,尚未形成一份对功能范围、状态流转、异常处理和边界条件定义清晰的需求文档。本期需要基于现有备份能力,对同步备份功能进行产品化定义,形成一套可直接供产品、设计、研发评审的同步备份 PRD。
需要解决的问题主要包括:
客户端同步备份是 NAS 客户端中的基础数据保护能力模块,负责将当前设备本地目录备份到 NAS 目标目录,并在应用进程存在时根据源目录内容变化自动触发备份任务,提供任务创建、任务执行、任务状态展示、异常恢复和排除规则配置能力,是后续文件管理、自动归档和跨端访问能力的重要底层模块。
用户第一次打开 AWOL backup,希望快速选择本地目录和 NAS 目标目录,创建第一个备份任务。
用户已经存在多个任务,希望在任务列表中快速查看它们各自的状态,并按需暂停、恢复、取消或删除。
用户创建任务后,继续在当前设备的源目录中新增、修改或删除文件,希望应用在进程存在时自动检测变化并触发备份。
用户希望排除 node_modules、缓存目录或临时文件,避免占用 NAS 空间和备份时间。
用户在任务过程中遇到 NAS 不可达、网络中断、目标路径不可写或空间不足,希望看到清晰提示并可直接重试或恢复。
flowchart LR
A[打开 AWOL backup 应用] --> B{是否已有备份任务}
B -- 否 --> C[创建任务]
B -- 是 --> D[查看任务列表]
C --> E[配置源路径 目标路径 排除规则]
E --> F{配置校验是否通过}
F -- 否 --> G[提示错误并修正]
F -- 是 --> H[任务创建完成]
H --> I[idle]
D --> I
I --> J{应用进程存在且源目录内容变动}
J --> K[running]
K --> L{执行结果}
L -- 成功 --> M[completed]
L -- 失败 --> N[error]
L -- 暂停 --> O[paused]
O --> P[resume]
P --> K
| 功能模块 | 功能点 | 是否本期支持 | 定义 |
|---|---|---|---|
| 应用入口 | AWOL backup 入口 | 是 | 提供客户端统一入口进入同步备份功能 |
| 任务创建 | 新建备份任务 | 是 | 为单个源路径与单个目标路径建立一条备份任务 |
| 任务配置 | 源路径配置 | 是 | 选择当前设备本地目录作为备份源 |
| 任务配置 | 目标路径配置 | 是 | 选择 NAS 目录作为备份目标 |
| 任务配置 | 排除规则 | 是 | 使用多条 glob 规则排除文件或目录 |
| 任务配置 | 自动备份 | 是 | 应用进程存在时,无论前台或后台,检测到源目录内容变化后自动触发任务 |
| 任务管理 | 查询任务列表 | 是 | 查询所有任务的状态、进度、时间信息 |
| 任务管理 | 暂停任务 | 是 | 对运行中的任务执行暂停 |
| 任务管理 | 恢复任务 | 是 | 对暂停中的任务恢复执行 |
| 任务管理 | 取消任务 | 是 | 对当前任务执行取消;取消后下次文件变动触发备份任务时继续执行备份 |
| 任务管理 | 删除任务 | 是 | 删除任务配置,删除任务不影响已备份的文件 |
| 执行反馈 | 进度反馈 | 是 | 返回进度百分比、速度、已传输、总量、剩余时间、当前文件 |
| 执行反馈 | 完成反馈 | 是 | 返回耗时、总文件数、总大小 |
| 执行反馈 | 错误反馈 | 是 | 返回错误信息和可选错误码 |
| 字段 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
id | string | 是 | 任务 ID |
name | string | 是 | 任务名称;已用户选择的源路径名来自动命名,不支持修改 |
source | string | 是 | 本地源路径 |
destination | string | 是 | NAS 目标路径 |
status | enum | 是 | idle / running / paused / completed / error |
config.exclude | string[] | 否 | 排除规则,glob 模式 |
config.autoBackup | boolean | 否 | 自动备份开关;若研发未提供显式字段,则作为产品侧默认能力处理 |
createdAt | number | 是 | 创建时间 |
lastRunAt | number | 否 | 最近执行时间 |
updatedAt | number | 否 | 最近状态或进度更新时间 |
idle 空闲状态;立即过渡到 running 运行状态start 接口,因此“用户主动开始任务”是否作为入口能力需研发确认;| 项目 | 定义 | 当前待确认点 |
|---|---|---|
| 生效条件 | AWOL backup 应用进程存在 | 进程被完全退出后是否仍有系统级后台能力待确认 |
| 生效范围 | 前台运行、后台运行均应生效 | 不同端侧的后台保活能力待确认 |
| 触发条件 | 源目录内文件或目录发生新增、修改、删除等变化 | 本地删除不影响 NAS 侧(本地删除,NAS 不自动删除) |
| 触发对象 | 单个任务绑定的源路径与目标路径 | 同一路径被多个任务监听时的处理策略待确认 |
| 执行策略 | 变化触发后启动对应任务,并更新任务状态与进度 | 高频变更下的合并、去抖、排队策略待确认 |
string[];*.tmp、*.log、node_modules/**、dist/**;running 状态任务生效;暂停后进入 paused 状态;paused 状态任务生效;恢复后进入 running 状态;| 状态 | 英文枚举 | 定义 | 可进入下一状态 | 备注 |
|---|---|---|---|---|
| 无任务 | - | 系统中尚未创建任何任务 | 创建任务 | UI 概念,不属于任务枚举 |
| 空闲 | idle | 任务已创建但当前未执行 | running / paused* / error* | paused/error 是否可直接进入取决于实现 |
| 运行中 | running | 任务正在扫描或传输数据 | paused / completed / error | 需实时刷新进度 |
| 已暂停 | paused | 任务被用户或系统中断并暂停 | running / error | 支持恢复 |
| 已完成 | completed | 本轮任务成功结束 | running / idle | 再次执行后的回流状态待确认 |
| 失败 | error | 本轮任务执行失败 | running / idle | 需保留失败原因 |
text无任务 -> idle -> running -> completed -> paused -> running -> error
补充说明:
idle / running / paused / completed / error;cancel 操作,但没有明确 cancelled 状态枚举;running 状态下必须展示实时进度;completed 状态下必须展示最近一次成功执行时间;error 状态下必须展示错误摘要;paused 状态下必须可被识别为“可恢复”状态。| 异常类型 | 触发条件 | 影响范围 | 系统处理 | 用户反馈 | 恢复方式 |
|---|---|---|---|---|---|
| 源路径不存在 | 源目录被删除、移动 | 单任务 | 阻止启动或中断任务 | 提示重新选择源路径 | 修正源路径后重新执行 |
| 源路径无权限 | 本地目录无读取权限 | 单任务 | 阻止启动或中断任务 | 提示授权或更换目录 | 权限恢复后重试 |
| 目标路径不存在 | NAS 目录不存在 | 单任务 | 启动失败或尝试创建 | 提示检查目标路径 | 目标路径修正后重试 |
| 目标路径不可写 | NAS 无写权限 | 单任务 | 启动失败或执行失败 | 提示检查权限 | 权限修复后重试 |
| NAS 不可达 | 设备离线、连接失败 | 单任务 / 多任务 | 任务暂停或失败 | 引导检查 NAS 连接 | 恢复连接后继续 |
| NAS 空间不足 | 可用空间低于任务需求 | 单任务 | 任务失败或暂停 | 提示清理空间 | 空间恢复后重试 |
| 网络异常 | 网络断开、链路中断 | 单任务 / 多任务 | 暂停或失败 | 提示网络异常 | 网络恢复后继续 |
| 单文件读取失败 | 文件损坏、被占用 | 单任务局部 | 跳过或记录失败项 | 展示失败摘要 | 支持后续重试 |
| 配置非法 | 路径格式错误、排除规则格式错误 | 单任务 | 禁止创建 | 给出具体错误提示 | 修正配置后保存 |
| 任务被取消 | 用户主动取消 | 单任务 | 终止当前执行 | 提示已取消 | 后续重新执行待确认 |
| 边界项 | 当前定义 |
|---|---|
| 自动备份生效条件 | 应用进程存在时生效,前台和后台均应支持 |
| 自动备份触发条件 | 监听源目录内容变化后触发对应任务 |
| 任务数量 | 支持多个任务,未见上限定义 |
| 源路径数量 | 单任务单源路径 |
| 目标路径数量 | 单任务单目标路径 |
| 排除规则数量 | 支持多条,未见上限定义 |
| 任务编辑 | API 文档未体现编辑接口 |
| 任务启动 | API 文档未体现独立 start 接口,需确认 |
| 删除语义 | 仅删除任务配置还是同时删除远端文件,未明确 |
| 取消后的状态 | 未明确 |
completed 状态任务在源目录再次变化后允许重新进入执行;error 状态任务允许恢复或重试;running,是否允许直接删除,需确认是先取消再删除还是直接删除;lastRunAt 可为空;AWOL backup 应用;idle / running / paused / completed / error 状态;start 接口,但任务列表原型中可能存在“开始”操作,需确认真实启动方式;cancel 操作后的状态名称和 UI 表现待确认;本文作者:oyph
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!