feat(canvas): 画布工作区 - 整合侧栏与风格预设并修复提示词回填

选择性整合 #547,保留主分支节点与工具条设计。新增默认折叠的节点、资产、任务和历史面板,风格与预设保留在节点内,移除重复入口。

补齐工具权限、提示词解析、资源引用保护及数据库迁移,修复提示词清空和连续编辑后的生成配置同步。

验证:前端全量 1925 项测试、构建、类型检查及 lint 通过;后端 go test ./... 通过。真实模型、PostgreSQL 实库与登录态页面验收仍待进行。

Refs #547

Co-authored-by: bensharp <bensharp@qq.com>
This commit is contained in:
ddCat
2026-09-20 16:40:08 +08:00
parent 0ea9f7d94b
commit 9148ceab66
66 changed files with 6127 additions and 97 deletions

View File

@@ -26,6 +26,62 @@ tags:
- name: agent
- name: admin
paths:
/tools:
get:
tags: [canvas]
summary: 列出可见且启用的生成工具
parameters:
- {in: query, name: scope, schema: {type: string, enum: [public, favorites, custom], default: public}}
- {in: query, name: type, schema: {type: string, enum: [style, motion, nine_grid, effect]}}
- {in: query, name: tag, schema: {type: string}}
- {in: query, name: search, schema: {type: string}}
- {in: query, name: page, schema: {type: integer, minimum: 1, default: 1}}
- {in: query, name: pageSize, schema: {type: integer, minimum: 1, maximum: 80, default: 20}}
responses:
"200": {description: "标准信封 data 为 tools(摘要不含 prompt/extraInfo)、totalCount、page、pageSize、hasMore"}
"401": {description: 未登录}
post:
tags: [canvas]
summary: 创建当前用户的工具
requestBody:
required: true
content:
application/json:
schema: {$ref: '#/components/schemas/ToolMutation'}
responses:
"200": {description: 标准信封 data 为完整工具}
"400": {description: 参数无效或预览资源不符合要求}
"401": {description: 未登录}
/tools/{id}:
parameters:
- {in: path, name: id, required: true, schema: {type: integer, format: int64, minimum: 1}}
get:
tags: [canvas]
summary: 查询可见且启用工具的完整详情
responses:
"200": {description: 标准信封 data 为完整工具,包含 prompt 和 extraInfo}
"404": {description: 工具不存在或不可见}
delete:
tags: [canvas]
summary: 删除自己的用户工具及关联收藏,不删除预览文件
responses:
"200": {description: "标准信封 data 为 {deleted: true}"}
"404": {description: 工具不存在或不能删除}
/tools/{id}/favorite:
parameters:
- {in: path, name: id, required: true, schema: {type: integer, format: int64, minimum: 1}}
post:
tags: [canvas]
summary: 幂等收藏可见工具
responses:
"200": {description: 标准信封 data 为完整工具和收藏状态}
"404": {description: 工具不存在或不可见}
delete:
tags: [canvas]
summary: 幂等取消收藏可见工具
responses:
"200": {description: 标准信封 data 为完整工具和收藏状态}
"404": {description: 工具不存在或不可见}
/model-catalog:
get:
tags: [models]
@@ -971,6 +1027,20 @@ components:
in: cookie
name: open_ai_canvas_session
schemas:
ToolMutation:
type: object
required: [type, label, prompt]
properties:
type: {type: string, enum: [style, motion, nine_grid, effect]}
label: {type: string, description: 名称最多 120 字节}
prompt: {type: string, description: 最多 8000 字节,不允许嵌套工具标签}
visibility: {type: string, enum: [private, public], default: private}
desc: {type: string}
tag: {type: string}
cover: {type: string, description: 本人已上传完成的资源 URL,仅限私有工具}
mediaUrl: {type: string, description: 本人已上传完成的资源 URL,仅限私有工具}
extraInfo: {type: array, items: {type: string}}
ratio: {type: string}
ModelRequestIntent:
type: object
required: [capability]