调整图片画布路由和画布数据模型

将图片画布入口改为 /editor/canvas

新增 editor_canvas 表并关联 editor_project 默认画布

更新 project API 响应中的 canvas 快照兼容层

统一图片画布侧栏列表项和图标按钮组件

同步前端测试、SpacetimeDB bindings、技术文档和 TRACKING 记录
This commit is contained in:
2026-06-13 22:09:45 +08:00
parent a1b9ac8544
commit 242860e2d3
21 changed files with 1649 additions and 295 deletions

View File

@@ -1,11 +1,11 @@
# 图片画布编辑器 Lovart 化执行跟踪
更新时间:`2026-06-12`
更新时间:`2026-06-13`
## 目标
- 先落文档、测试用例和进度跟踪文件。
- 再实施 `/editor` 的 Lovart 风格画布交互、缩放二级菜单、吸附线、元数据窗口、真实生成 / 修改入口和工程持久化。
- 再实施 `/editor/canvas` 的 Lovart 风格画布交互、缩放二级菜单、吸附线、元数据窗口、真实生成 / 修改入口和工程 / 画布持久化。
## 进度
@@ -20,10 +20,10 @@
## 待办清单
- [x] 更新图片画布编辑器技术方案,明确 v2 范围。
- [x] 补充 `/editor` 领域词,区分图片画布工程和单图资产编辑。
- [x] 补充 `/editor/canvas` 领域词,区分图片画布工程和单图资产编辑。
- [x] 添加前端组件交互测试。
- [x] 添加 editor project API client 测试。
- [x] 新增 `editor_project``editor_project_resource` 表。
- [x] 新增 `editor_project``editor_canvas``editor_project_resource` 表。
- [x] 同步 SpacetimeDB migration 表清单、生成绑定和后端架构表目录。
- [x] 新增 api-server `/api/editor/projects*` BFF。
- [x] 接入前端自动保存与资源创建 API。
@@ -35,8 +35,8 @@
## 决策记录
- `/editor` 的长期领域对象命名为“图片画布工程”。
- 资源表保存 OSS 引用和上传 / 生成元数据;图层位置、缩放、层级保存在 project 布局 JSON
- `/editor/canvas` 的长期领域对象命名为“图片画布工程的画布入口”。
- project 保存工程元数据canvas 保存 viewport 与图层布局;资源表保存 OSS 引用和上传 / 生成元数据。
- 本期工程与资源持久化真实落库;图片生成 / 修改已接入 api-server VectorEngine BFF暂不接入计费和队列进度。
- `适合视图` 的语义为显示画布所有可见元素。
- 吸附范围为核心对齐:左右 / 上下边缘和水平 / 垂直中心线。
@@ -64,3 +64,10 @@
- 2026-06-13 真实生图修正:`/api/editor/images/generations``/api/editor/images/edits` 统一走 api-server VectorEngine `gpt-image-2` BFF前端不再创建 mock 成功图,生成 / 修改失败会留在对话框内显示错误;生成图右上角 `{}` 元数据按钮可直接点击打开元数据窗口。
- 2026-06-13 素材库修正:素材栏按文件夹分组,文件夹支持折叠和新建;上传入口可定向到当前文件夹,上传素材进入素材库并支持删除,内置素材只保留添加和重命名。
- 2026-06-13 生图鉴权修正:编辑器工程和真实生图请求不再使用禁止 refresh 的局部鉴权策略,可通过 refresh cookie 静默补 access token真实生图遇到 401 / 403 时弹窗显示“请先登录后再生成图片”,不再暴露后端 requestId 主文案。
- 2026-06-13 Lovart 生图交互修正:纯文本生图不再使用居中弹窗,点击底部生成工具后在画布中心显示 `Image Generator` 占位框,并在占位框下方显示跟随式生成输入框、参考图入口、比例和模型占位按钮;生成成功后真实图片落在占位框位置。
- 2026-06-13 Lovart 生图 smoke`http://127.0.0.1:10003/editor` 点击底部生成工具后已显示画布内占位框和底部浮动输入框,截图留存于 `output/playwright/editor-lovart-generation-composer.png`
- 2026-06-13 生图占位交互修正:`Image Generator` 占位框支持拖拽移动,生成输入框跟随占位框;生成成功图层沿用拖拽后的占位位置,生成输入框继续锚定在新生成图片下方,点击其它图片或画布空白不会自动关闭。
- 2026-06-13 生图锚定 smoke`http://127.0.0.1:10003/editor` 中占位框拖拽前后坐标从 `(616,217)``(712,289)`,生成输入框同步从 `(516,571)``(612,643)`,保持锚定在生成对象下方;截图留存于 `output/playwright/editor-generation-composer-anchored.png`
- 2026-06-13 Lovart 小地图与背景色修正:画布左下角补回背景色圆点、小地图开关和小地图预览;小地图展示图层缩略分布与当前视口框,点击执行显示所有元素,背景色菜单可切换工作区底色且不恢复网格 / 棋盘底纹。
- 2026-06-13 小地图与背景色 smoke`http://127.0.0.1:10003/editor` 可见左下角小地图、背景色按钮和小地图开关;切换暖灰后画布工作区 `background-color``rgb(243, 240, 234)``background-image` 仍为 `none`;截图留存于 `output/playwright/editor-minimap-background-warm.png`
- 2026-06-13 路由与数据归属修正:图片画布页面路由改为 `/editor/canvas`;新增 `editor_canvas` 表作为 project 下的画布数据表,当前工程创建时同步创建默认画布,保存 layout 时写入默认画布API 响应同时返回 `project.canvas` 和兼容顶层 `viewport/layers`