Skip to content

模块:Workspace(工作台)

唯一职责:管理画布列表,提供画布的创建、删除、重命名和打开入口。

边界

属于本模块:

  • 展示画布列表(按 updatedAt 倒序)
  • 触发创建新画布,跳转到画布编辑器
  • 触发删除画布(含确认对话框)
  • 触发重命名画布
  • 展示空状态提示

不属于本模块:

  • 画布数据的持久化逻辑(由 State Management 模块负责)
  • 画布内容的编辑(由 Canvas Editor 模块负责)

对外接口

Workspace 是顶层页面组件(路由 /),不对外暴露 API。仅通过 Vue Router 路由参数访问,无 props / emits。

消费的接口

依赖模块调用的方法/属性用途
canvasStorecanvases读取画布列表
canvasStoreloadAllCanvases()初始化加载
canvasStorecreateCanvas(name?)创建画布
canvasStoredeleteCanvas(id)删除画布
canvasStorerenameCanvas(id, name)重命名
Vue RouternavigateTo('/canvas/:id')打开画布

不变量

  1. 画布列表始终按 updatedAt 降序排列
  2. 删除操作必须经过用户确认
  3. 新建画布后立即跳转到编辑器页面

错误场景

场景模块行为调用方职责
loadAllCanvases() 读取 localStorage 失败(数据损坏/格式非法)返回空列表,不阻塞页面渲染页面展示空状态
createCanvas() 时 localStorage 已满(QuotaExceededError)创建失败,抛出异常页面捕获异常并显示 toast 提示用户清理空间
deleteCanvas(id) 传入不存在的 id静默忽略,不修改任何数据无需处理
renameCanvas(id, name) 传入空字符串不接受空名称,保持原名输入层做前置校验

实现位置

角色文件路径
页面apps/web/app/pages/index.vue
卡片组件apps/web/app/components/CanvasCard.vue
测试apps/web/test/nuxt/canvasStore.test.ts