task_plan.md
5.53 KB
任务计划:流程编辑器重构调研
目标
输出一份完整的需求与迁移设计方案,用于将 vue-flow-editor 重构为基于 Vue 3、Element Plus、LogicFlow 2.0、Vite 的新项目,并采用“测试优先、分阶段迁移”的安全升级策略。
当前阶段
阶段 10
阶段拆分
阶段 1:需求与旧项目调研
- 理解用户诉求
- 确认新项目当前起点
- 审计旧项目架构、行为能力和对外 API
- 记录迁移约束与测试风险
- 状态: 已完成
阶段 2:迁移策略与安全方案设计
- 定义分阶段迁移路径
- 定义重构前的基线保护策略
- 定义兼容口径与验收清单
- 状态: 已完成
阶段 3:文档编写
- 编写需求与设计文档
- 编写分阶段迁移方案
- 编写测试迁移与验证方案
- 状态: 已完成
阶段 4:复核与收敛
- 基于旧项目再次核对关键假设
- 收紧风险、开放问题和优先级
- 形成可直接开工的初始方案
- 状态: 已完成
阶段 5:实施计划细化
- 将迁移方案细化成可执行任务清单
- 补充双仓目录规划和阶段性产物
- 输出下一步的明确实施顺序
- 状态: 已完成
阶段 6:旧项目基线测试落地
- 固定旧项目基线回归页说明
- 接入 Playwright 最小测试基础设施
- 跑通第一条旧项目冒烟测试
- 状态: 已完成
阶段 7:新项目骨架与测试底座初始化
- 初始化 Vue 3 + Vite + TypeScript + pnpm workspace 工程
- 接入 Element Plus 与 LogicFlow 2.x 基础依赖
-
建立
apps/demo、packages/flow-editor、tests目录结构 - 迁入首批基线测试语义(冒烟、工具栏、实例契约)
-
跑通新项目
build、test:unit、test:e2e - 状态: 已完成
阶段 8:新项目数据适配层
- 梳理旧项目图数据与当前规范数据的差异
-
实现
g6-to-logicflow兼容适配层 - 让 demo 与编辑器内部统一走适配器
- 补齐单节点、线性流、分支流三类夹具与单元测试
- 跑通适配层相关验证
- 状态: 已完成
阶段 9:新项目基础编辑闭环
- 接通工具栏主要按钮的真实点击行为
- 支持新增节点、选中节点、删除节点
- 支持打开预览面板
- 为基础交互补齐 E2E 回归
- 状态: 已完成
阶段 10:新项目命令闭环增强
- 移除遮挡画布的过渡提示层
- 支持节点名称更新
- 支持基于当前选中节点创建连线
- 支持图数据撤销/重做
- 为命令闭环补齐 E2E 回归
- 状态: 已完成
关键问题
- 旧项目里哪些行为必须被视为严格兼容项,哪些属于可接受的现代化调整?
- 如何在迁移编辑器内核之前,先建立可靠的自动化回归护栏?
- 应该优先迁移哪些能力,才能保证每一阶段都可验证、可回退?
已做决策
| 决策 | 原因 |
|---|---|
| 先写文档和迁移设计,再启动代码搭建 | 新仓库当前为空,且用户明确希望优先保证升级安全性 |
| 采用“行为优先”的迁移方式,而不是“依赖升级优先” | 旧项目存在混合技术栈,直接升级依赖风险高 |
| 将测试视为本次迁移的一等产物 | 用户无法在重构后进行大量人工点击回归 |
先把旧项目 doc/index.vue 作为第一份基线回归样板 |
该页面已覆盖 hooks、事件、插槽和复杂业务接入 |
| 在新项目大规模开发前先迁移基线测试 | 这是保住现有业务行为最稳妥的方式 |
| 继续补一份“实施级迁移计划”文档 | 这样后续可以按任务直接开工,而不是重复讨论阶段划分 |
| 旧项目基线测试先采用“Node 16 + 接口拦截”的运行方式 | 这是当前成本最低、稳定性最高的自动化起步方案 |
| 新项目先用“兼容壳层 + 最小 LogicFlow 2.x 实例”承接测试语义 | 这样可以在不提前实现全部交互的前提下,尽快建立新仓回归护栏 |
| 新项目 E2E 改为脚本自管 Vite 生命周期 | 当前环境中 Playwright webServer 预检查会被本机代理/旧服务误导,脚本启动更稳 |
| 新项目内部图数据统一先归一化,再映射到 LogicFlow 2.x | 这样后续命令系统、事件兼容层和保存链路都只面对一套稳定结构 |
| 先做“可操作的基础编辑闭环”,再补复杂命令和业务面板 | 这样用户可以尽早看到真实可交互页面,而不是一直停留在只读状态 |
| 连线创建和撤销/重做先基于兼容层图数据历史实现 | 先把用户操作闭环跑通,再逐步下沉到更完整的 LogicFlow 命令栈 |
遇到的问题
| 问题 | 次数 | 处理方式 |
|---|---|---|
rg --files 在新仓库中没有返回文件 |
1 | 通过 ls -la 确认新仓库确实为空仓库,因此先从规划与文档开始 |
corepack pnpm install 出现签名 keyid 校验失败 |
1 | 改为使用 npx pnpm@10.9.0 install 绕过本机 corepack 问题 |
Playwright webServer 会误判本地端口已被占用 |
1 | 移除 webServer 配置,改为仓库脚本显式启动 Vite 并回收进程 |
备注
- 在做重大决策前,重新回看本计划文件
- 继续将旧项目调研结论记录到
findings.md - 最终设计文档路径为
docs/plans/2026-03-31-flow-editor-rebuild-design.md - 实施计划文档路径为
docs/plans/2026-03-31-flow-editor-migration-implementation-plan.md