完善图片画布撤销保护与操作提示
为画布历史记录补充操作类型和内容消失保护 增加撤销成功及撤销阻止提示并在三秒后隐藏 补充拖动、上传、生成和替换等操作的历史语义 移除重做按钮、快捷键和重做历史 补充撤销规则的定向测试和说明文档
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
- [图片画布编辑器前端拆分计划](./technical/【前端架构】图片画布编辑器前端拆分计划-2026-06-17.md)
|
||||
- [画布 Agent 对话面板](./【编辑器】画布Agent对话面板-2026-07-03.md)
|
||||
- [画布 Agent 会话消息存 OSS](./adr/【ADR】画布Agent会话消息存OSS-2026-07-03.md)
|
||||
- [图片画布撤销范围与操作提示方案](./【图片画布】撤销范围与操作提示方案-2026-07-17.md)
|
||||
- [浏览器内 AI Web 工程沙箱预览](./technical/【技术方案】浏览器内AIWeb工程沙箱预览方案-2026-06-13.md)
|
||||
- [AI Web 工程 Runner 安全模型](./technical/【安全模型】AIWeb工程Runner与预览隔离威胁模型-2026-06-13.md)
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
# 图片画布撤销范围与操作提示方案
|
||||
|
||||
更新时间:`2026-07-17`
|
||||
|
||||
## 产品规则
|
||||
|
||||
- 用户通过画布“撤销”按钮或 `Ctrl+Z` 触发撤销。
|
||||
- 撤销成功后,在画布工作区顶部居中显示 `已撤销:XX操作`,3 秒后自动消失。
|
||||
- 如果目标快照会删除当前图层、把当前可见图层重新隐藏,或者用旧素材替换当前素材,则不得恢复快照,并显示 `无法撤销:XX操作,可能会使图片消失`,3 秒后自动消失。
|
||||
- 被阻止的历史记录不得出栈,也不得自动跳过到更早记录;画布状态不变,因此不会触发项目自动保存。
|
||||
- 图片画布不提供重做按钮、重做快捷键或重做历史栈。
|
||||
|
||||
## 操作边界
|
||||
|
||||
允许撤销的典型操作包括移动图片、移动生成结果、调整层级、组合与取消组合、删除或剪切图片、隐藏图片、锁定与解锁、翻转、修改素材类型和调整工具栏视口。删除与剪切允许撤销,是因为恢复目标只会让内容重新出现。
|
||||
|
||||
添加素材、上传到画布、粘贴、创建副本、生成图片、扩图新增结果、显示隐藏图片、替换图片以及其它会让当前结果消失的操作必须被撤销安全检查阻止。`Ctrl+C`、选择变化、滚轮或抓手视口移动、导出下载、项目重命名、素材库后端删除和生成任务副作用不进入画布撤销历史。
|
||||
|
||||
## 技术实现
|
||||
|
||||
- 每条历史记录保存操作类型、操作前 `CanvasHistorySnapshot` 和创建时间,最多保留 60 条。
|
||||
- 操作类型只负责生成用户提示;能否恢复由当前快照与目标快照的差异检查决定。
|
||||
- 图层安全检查以稳定的 `layer.id` 判断当前图层是否仍存在,以媒体地址、对象存储标识和序列帧等字段组成内容签名,识别同 ID 图层的素材替换;仅刷新内部资源 ID 不视为图片消失。
|
||||
- 位置、尺寸、层级、分组、锁定、翻转、标题和素材类型不进入内容签名,避免误拦截普通编辑。
|
||||
- 鼠标拖动在按下时暂存操作前快照,位移超过点击阈值后只提交一条历史;单击不产生历史记录。
|
||||
- 顶部消息复用 `PlatformRuntimeStatusToast`,成功使用中性色,被阻止使用警告色;连续触发会替换消息并重新开始 3 秒计时。
|
||||
|
||||
## 验收重点
|
||||
|
||||
1. 添加、上传、粘贴、复制、生成和替换图片后撤销,当前图片不消失且出现准确警告。
|
||||
2. 删除、剪切、隐藏、移动、分组和层级调整可以正常撤销,并出现成功提示。
|
||||
3. 被阻止后历史记录仍位于栈顶,连续撤销不会越过保护边界。
|
||||
4. 一次鼠标拖动只产生一条历史,单击不产生历史。
|
||||
5. 页面不存在重做按钮和可用的 `Ctrl+Shift+Z` 重做入口。
|
||||
6. 提示在 3 秒后消失,连续提示按最后一次触发重新计时。
|
||||
Reference in New Issue
Block a user