[F1] @vue-flow/core 依赖 + DagCanvas 基础组件

- apps/web-antd/src/components/iot-dag/ 7 文件
  - DagCanvas.vue / DagCanvasToolbar.vue
  - hooks/useDagState.ts(50 步撤销栈 + structuredClone 深拷贝)
  - hooks/useDagShortcuts.ts(Del/Ctrl+Z/Ctrl+Y + input guard)
  - types.ts(DagNode/DagEdge/DagCanvasProps + 6 emits)
  - index.ts barrel + __tests__/DagCanvas.spec.ts(16 用例全绿)
- pnpm-workspace.yaml: catalog 新增 @vue-flow/{core,background,controls,minimap}
- apps/web-antd/package.json: 4 包全部 'catalog:' 引用
- i18n: zh-CN/en-US iot.dag.toolbar.* + iot.dag.canvas.* 同步
- Known Pitfalls 落地: ⚠️ catalog 约束 / 样式 import / TS 严格零 any

note: Acceptance #7 (Storybook/playground) 项目未集成 Storybook,
      由 F7 规则链编辑页自然 dogfood。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
lzh
2026-04-23 21:32:11 +08:00
parent c0646a4f4f
commit 7dbf41b75f
12 changed files with 1159 additions and 0 deletions

View File

@@ -39,5 +39,21 @@
"video": "Video",
"voice": "Voice"
}
},
"iot": {
"dag": {
"toolbar": {
"zoomIn": "Zoom In",
"zoomOut": "Zoom Out",
"fitView": "Fit View",
"undo": "Undo (Ctrl+Z)",
"redo": "Redo (Ctrl+Y)",
"save": "Save"
},
"canvas": {
"readonly": "Read-only mode",
"empty": "Drag nodes to canvas to start"
}
}
}
}

View File

@@ -39,5 +39,21 @@
"video": "视频",
"voice": "语音"
}
},
"iot": {
"dag": {
"toolbar": {
"zoomIn": "放大",
"zoomOut": "缩小",
"fitView": "适应视图",
"undo": "撤销 (Ctrl+Z)",
"redo": "重做 (Ctrl+Y)",
"save": "保存"
},
"canvas": {
"readonly": "只读模式",
"empty": "拖拽节点到画布开始编排"
}
}
}
}