补齐真实子画布端口与外部连线原子创建接口 #14
Reference in New Issue
Block a user
Delete Branch "codex/canvas-connections"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
前端无法给没有现成端口的子画布节点新建外部连线:普通 Canvas PATCH 会拒绝端口变更,而现有接口只在迁移/移动内容时产生端口。
新增
POST B/connections,由两个真实端点的最近共同祖先画布协调。在同一事务内校验用户会话、完整父链权限和所有参与版本,逐层创建/复用稳定端口,并在共同祖先保存唯一一条带完整 V2 data 的连线。覆盖父子、兄弟和多层子图;普通 PATCH 的端口保护保持不变。请求:
{source:{board_id,node_id,handle},target:{board_id,node_id,handle},edge:{id,data?},expected_versions:{board_id:version}},要求 V2 Accept 和 UUID Idempotency-Key。201 返回 parent、所有参与 snapshots、实际存储的 connection.edge、created_ports 和7天 undo receipt。所有参与版本各增加一次;同 key 同 body 重试不重复创建。现有 undo 接口可原子撤销新建连线和新增端口。拒绝错用共同祖先、无权/跨 workspace/无关画布、非法节点/handle、重复 edge ID、缺失或过期版本、端口/节点/边/快照超限,失败不残留端口、连线、版本或 receipt。capabilities.subgraphs.connections 标明能力。README 提供最终请求/响应、错误、版本吸收和撤销契约,前端无需自行生成或 PATCH frame.ports。
验证:在用户确认的 ECS runner 上运行全量 Go 测试、Linux 构建及隔离 PostgreSQL 迁移/集成测试。新增覆盖多层双向端口链、端口复用/碰撞/容量、完整快照和样式保留、撤销/redo、四个并发相同 key、缺失/过期版本、权限和跨 workspace 拒绝、容量整体回滚,以及新端口链能被实际 AI reader 解析。本机未编译构建。
本 PR 不包含前端变更或真实画布修改;合并部署前,新接口尚不可在线调用。Base main,head codex/canvas-connections,等待用户手动合并,不代为合并。