Skip to content

项目与画布

项目(Project)是组织工作的顶层容器,每个项目包含一个画布(Canvas)和多个对话。

概念层次

项目 (Project)
 ├─ 画布 (Canvas) — 一对一,节点+边的可视化编辑器
 ├─ 对话 (Conversation) — 一对多,与AI的聊天
 └─ 节点组 (NodeGroup) — 可复用的节点集合

项目端点

方法路径说明
GET/api/v1/projects项目列表
POST/api/v1/projects创建项目
GET/api/v1/projects/{id}项目详情(含画布和对话列表)
PATCH/api/v1/projects/{id}更新项目
DELETE/api/v1/projects/{id}删除项目
WebSocket/api/v1/projects/{id}/ws?token=xxx项目实时协作

画布端点

方法路径说明
GET/api/v1/canvas画布列表
POST/api/v1/canvas创建画布
GET/api/v1/canvas/{id}画布详情
PATCH/api/v1/canvas/{id}更新画布
DELETE/api/v1/canvas/{id}删除画布
GET/api/v1/canvas/{id}/nodes获取画布节点
POST/api/v1/canvas/{id}/nodes批量创建节点
GET/api/v1/canvas/{id}/edges获取画布边
POST/api/v1/canvas/{id}/edges批量创建边
WebSocket/api/v1/canvas/{id}/ws?token=xxx画布实时编辑

节点组端点

方法路径说明
GET/api/v1/node-groups节点组列表
POST/api/v1/node-groups创建节点组
GET/api/v1/node-groups/{id}节点组详情
PATCH/api/v1/node-groups/{id}更新节点组
DELETE/api/v1/node-groups/{id}删除节点组

画布节点类型

类型说明
text文本节点
image图片节点
video视频节点
code代码节点
markdownMarkdown 节点
file文件节点
group打组节点

节点响应示例

json
{
  "id": "f1a2b3c4-...",
  "type": "text",
  "x": 100.0,
  "y": 200.0,
  "width": 200.0,
  "height": 100.0,
  "rotation": 0.0,
  "data": {
    "label": "需求分析",
    "text": "功能需求描述..."
  },
  "canvas_id": "e0d1c2b3-...",
  "created_by_id": "550e8400-..."
}

项目 WebSocket

项目 WebSocket 是融合端点,同时承载画布操作和对话通信。消息通过 domain 字段区分:

json
{
  "domain": "canvas",
  "action": "create",
  "payload": [...]
}
json
{
  "domain": "conversation",
  "type": "request_completion",
  "payload": {...},
  "conversation_id": "d4e5f6a7-..."
}

详见 项目 WebSocket

测试要点

测试建议

  1. 项目-画布一对一:创建项目时自动创建画布,删除项目时级联删除
  2. 节点坐标:x、y、width、height、rotation 应接受合理范围的浮点数
  3. 批量操作原子性:批量创建节点时,任一个失败应全部回滚
  4. 临时 ID 映射:批量创建中使用 temp_id 时,边的 source_id/target_id 应正确映射
  5. 并发编辑:通过项目 WebSocket 模拟多用户同时编辑画布
  6. AI 画布操作:AI 通过工具调用创建/修改/删除画布元素,需要用户确认
  7. 节点组:节点组可以跨画布复用,测试组的引用完整性

狐线 AI Pro 外部测试文档