|
| 1 | +# 实现计划 |
| 2 | + |
| 3 | +- [-] 1. 扩展类型定义和数据模型 |
| 4 | + - [x] 1.1 创建增强的数据结构类型定义 |
| 5 | + - 在 `src/types/` 目录下创建 `dataStructures.ts` 文件 |
| 6 | + - 定义 TreeNode、GraphNode、GraphEdge、HashMapEntry 等接口 |
| 7 | + - 定义 DataStructureType 联合类型 |
| 8 | + - _Requirements: 3.1, 3.2, 3.3, 3.4_ |
| 9 | + - [x] 1.2 创建增强的动画步骤类型定义 |
| 10 | + - 在 `src/types/` 目录下创建 `animationStep.ts` 文件 |
| 11 | + - 定义 EnhancedAnimationStep、StepSubType、DataFlow 等接口 |
| 12 | + - 定义 ExecutionContext、StackFrame 接口 |
| 13 | + - _Requirements: 6.1, 6.2, 9.1_ |
| 14 | + - [x] 1.3 创建多语言代码行映射类型定义 |
| 15 | + - 在 `src/types/` 目录下创建 `codeMapping.ts` 文件 |
| 16 | + - 定义 StepId、MultiLanguageCodeLineMapping 接口 |
| 17 | + - 定义 EnhancedCodeSnippet 接口 |
| 18 | + - _Requirements: 8.1, 8.2_ |
| 19 | + - [ ] 1.4 编写类型定义的属性测试 |
| 20 | + - **Property 7: 代码行映射完整性属性** |
| 21 | + - **Validates: Requirements 8.1, 8.2, 8.3, 8.4** |
| 22 | + |
| 23 | +- [ ] 2. 实现布局引擎 |
| 24 | + - [ ] 2.1 创建布局引擎核心模块 |
| 25 | + - 在 `src/services/` 目录下创建 `LayoutEngine.ts` 文件 |
| 26 | + - 实现 calculateLayout 方法计算多数据结构布局 |
| 27 | + - 实现边界框计算和间距分配逻辑 |
| 28 | + - _Requirements: 10.1, 10.2_ |
| 29 | + - [ ] 2.2 实现标签冲突解决算法 |
| 30 | + - 实现 resolveLabelsCollision 方法 |
| 31 | + - 使用贪心算法调整标签位置避免重叠 |
| 32 | + - _Requirements: 4.5_ |
| 33 | + - [ ] 2.3 实现自适应缩放计算 |
| 34 | + - 实现 calculateFitScale 方法 |
| 35 | + - 根据内容边界和视口大小计算最佳缩放比例 |
| 36 | + - _Requirements: 2.3_ |
| 37 | + - [ ] 2.4 编写布局引擎的属性测试 |
| 38 | + - **Property 1: 布局不重叠属性** |
| 39 | + - **Validates: Requirements 3.5, 4.5, 7.4, 10.1** |
| 40 | + - [ ] 2.5 编写自适应缩放的属性测试 |
| 41 | + - **Property 3: 自适应缩放适应属性** |
| 42 | + - **Validates: Requirements 2.3** |
| 43 | + |
| 44 | +- [ ] 3. 实现数据结构渲染器 |
| 45 | + - [ ] 3.1 创建渲染器基础接口和工厂 |
| 46 | + - 在 `src/services/renderers/` 目录下创建 `types.ts` 文件 |
| 47 | + - 定义 DataStructureRenderer 接口 |
| 48 | + - 创建 `RendererFactory.ts` 工厂类 |
| 49 | + - _Requirements: 3.1, 3.2, 3.3, 3.4_ |
| 50 | + - [ ] 3.2 实现二叉树渲染器 |
| 51 | + - 创建 `BinaryTreeRenderer.ts` 文件 |
| 52 | + - 实现层次布局算法绘制树节点和边 |
| 53 | + - 支持节点标签和边标签 |
| 54 | + - _Requirements: 3.1_ |
| 55 | + - [ ] 3.3 实现数组/网格渲染器 |
| 56 | + - 创建 `ArrayRenderer.ts` 文件 |
| 57 | + - 支持一维数组和二维网格布局 |
| 58 | + - 支持索引显示和值显示 |
| 59 | + - _Requirements: 3.2_ |
| 60 | + - [ ] 3.4 实现 HashMap 渲染器 |
| 61 | + - 创建 `HashMapRenderer.ts` 文件 |
| 62 | + - 清晰区分 key 和 value 的显示 |
| 63 | + - 支持哈希桶可视化 |
| 64 | + - _Requirements: 3.3_ |
| 65 | + - [ ] 3.5 实现图渲染器 |
| 66 | + - 创建 `GraphRenderer.ts` 文件 |
| 67 | + - 支持有向图和无向图 |
| 68 | + - 实现力导向布局或层次布局 |
| 69 | + - _Requirements: 3.4_ |
| 70 | + - [ ] 3.6 编写数据结构渲染器的属性测试 |
| 71 | + - **Property 4: 数据结构完整渲染属性** |
| 72 | + - **Validates: Requirements 3.1, 3.2, 3.3, 3.4, 7.3** |
| 73 | + |
| 74 | +- [ ] 4. Checkpoint - 确保所有测试通过 |
| 75 | + - 确保所有测试通过,如有问题请询问用户。 |
| 76 | + |
| 77 | +- [ ] 5. 实现数据流可视化 |
| 78 | + - [ ] 5.1 创建箭头绘制模块 |
| 79 | + - 在 `src/services/` 目录下创建 `ArrowRenderer.ts` 文件 |
| 80 | + - 实现带标签的箭头绘制 |
| 81 | + - 支持曲线箭头避免遮挡 |
| 82 | + - _Requirements: 5.1, 5.2_ |
| 83 | + - [ ] 5.2 实现数据流动画效果 |
| 84 | + - 实现箭头沿路径的动画效果 |
| 85 | + - 支持值传递的视觉反馈 |
| 86 | + - _Requirements: 5.3, 5.4_ |
| 87 | + - [ ] 5.3 实现多数据流颜色区分 |
| 88 | + - 为不同类型的数据流分配不同颜色 |
| 89 | + - 支持自定义颜色配置 |
| 90 | + - _Requirements: 5.5_ |
| 91 | + - [ ] 5.4 编写箭头端点的属性测试 |
| 92 | + - **Property 5: 箭头端点正确性属性** |
| 93 | + - **Validates: Requirements 5.1, 5.2** |
| 94 | + |
| 95 | +- [ ] 6. 实现执行上下文可视化 |
| 96 | + - [ ] 6.1 创建栈帧可视化组件 |
| 97 | + - 在 `src/components/` 目录下创建 `StackVisualization/` 组件 |
| 98 | + - 显示调用栈和递归深度 |
| 99 | + - 支持参数和返回值显示 |
| 100 | + - _Requirements: 6.1, 6.2, 6.3, 6.4_ |
| 101 | + - [ ] 6.2 实现递归深度指示器 |
| 102 | + - 在画布上显示当前递归深度 |
| 103 | + - 支持深度变化的动画效果 |
| 104 | + - _Requirements: 6.5_ |
| 105 | + - [ ] 6.3 编写递归栈帧的属性测试 |
| 106 | + - **Property 6: 递归栈帧一致性属性** |
| 107 | + - **Validates: Requirements 6.1, 6.2** |
| 108 | + |
| 109 | +- [ ] 7. 增强画布组件 |
| 110 | + - [ ] 7.1 优化画布空间分配 |
| 111 | + - 修改 `App.tsx` 和相关样式文件 |
| 112 | + - 确保画布占据页面至少 70% 空间 |
| 113 | + - 实现响应式布局 |
| 114 | + - _Requirements: 1.1, 1.2, 1.3_ |
| 115 | + - [ ] 7.2 增强缩放交互 |
| 116 | + - 实现以鼠标点为中心的缩放 |
| 117 | + - 实现双击重置视图功能 |
| 118 | + - _Requirements: 2.4, 2.5_ |
| 119 | + - [ ] 7.3 集成布局引擎和渲染器 |
| 120 | + - 修改 `Canvas.tsx` 使用新的布局引擎 |
| 121 | + - 集成多种数据结构渲染器 |
| 122 | + - _Requirements: 3.5, 10.1_ |
| 123 | + - [ ] 7.4 实现动态标注系统 |
| 124 | + - 支持节点上方/下方/左侧/右侧的标签 |
| 125 | + - 实现标签自动换行和截断 |
| 126 | + - _Requirements: 4.1, 4.2, 4.3, 4.4_ |
| 127 | + - [ ] 7.5 编写缩放中心点的属性测试 |
| 128 | + - **Property 2: 缩放中心点不变属性** |
| 129 | + - **Validates: Requirements 2.5** |
| 130 | + |
| 131 | +- [ ] 8. Checkpoint - 确保所有测试通过 |
| 132 | + - 确保所有测试通过,如有问题请询问用户。 |
| 133 | + |
| 134 | +- [ ] 9. 实现多语言代码行映射 |
| 135 | + - [ ] 9.1 创建代码行映射器服务 |
| 136 | + - 在 `src/services/` 目录下创建 `CodeLineMapper.ts` 文件 |
| 137 | + - 实现基于 stepId 的多语言映射查询 |
| 138 | + - 实现映射验证功能 |
| 139 | + - _Requirements: 8.1, 8.2_ |
| 140 | + - [ ] 9.2 重构代码片段数据结构 |
| 141 | + - 修改 `src/data/codeSnippets.ts` 使用新的映射结构 |
| 142 | + - 为每个步骤定义唯一的 stepId |
| 143 | + - _Requirements: 8.3, 8.4_ |
| 144 | + - [ ] 9.3 实现代码高亮同步 |
| 145 | + - 修改 CodePanel 组件使用新的映射器 |
| 146 | + - 支持多行代码同时高亮 |
| 147 | + - _Requirements: 8.4, 8.5_ |
| 148 | + |
| 149 | +- [ ] 10. 增强算法引擎步骤生成 |
| 150 | + - [ ] 10.1 重构步骤生成逻辑 |
| 151 | + - 修改 `AlgorithmEngine.ts` 生成更细粒度的步骤 |
| 152 | + - 为每个原子操作创建独立步骤 |
| 153 | + - _Requirements: 9.1_ |
| 154 | + - [ ] 10.2 添加比较操作步骤 |
| 155 | + - 为比较操作创建独立步骤 |
| 156 | + - 显示比较的两个值和结果 |
| 157 | + - _Requirements: 9.2_ |
| 158 | + - [ ] 10.3 添加赋值操作步骤 |
| 159 | + - 为赋值操作创建独立步骤 |
| 160 | + - 显示值的来源和目标 |
| 161 | + - _Requirements: 9.3_ |
| 162 | + - [ ] 10.4 添加递归调用步骤 |
| 163 | + - 为递归进入和退出创建独立步骤 |
| 164 | + - 显示参数传递和返回值 |
| 165 | + - _Requirements: 9.4_ |
| 166 | + - [ ] 10.5 添加条件判断步骤 |
| 167 | + - 为条件判断创建独立步骤 |
| 168 | + - 显示判断条件和结果 |
| 169 | + - _Requirements: 9.5_ |
| 170 | + - [ ] 10.6 编写步骤原子性的属性测试 |
| 171 | + - **Property 9: 步骤原子性属性** |
| 172 | + - **Validates: Requirements 9.1, 9.2, 9.3, 9.4, 9.5** |
| 173 | + |
| 174 | +- [ ] 11. 实现状态高亮系统 |
| 175 | + - [ ] 11.1 创建高亮管理器 |
| 176 | + - 在 `src/services/` 目录下创建 `HighlightManager.ts` 文件 |
| 177 | + - 管理元素的高亮状态和颜色 |
| 178 | + - 支持多角色颜色区分 |
| 179 | + - _Requirements: 11.1, 11.3_ |
| 180 | + - [ ] 11.2 实现高亮动画效果 |
| 181 | + - 实现平滑的颜色过渡动画 |
| 182 | + - 支持脉冲效果突出当前元素 |
| 183 | + - _Requirements: 11.2_ |
| 184 | + - [ ] 11.3 实现高亮状态恢复 |
| 185 | + - 操作完成后恢复元素到正常状态 |
| 186 | + - 保持高亮直到下一步骤开始 |
| 187 | + - _Requirements: 11.4, 11.5_ |
| 188 | + - [ ] 11.4 编写高亮颜色区分的属性测试 |
| 189 | + - **Property 8: 高亮颜色区分属性** |
| 190 | + - **Validates: Requirements 11.1, 11.3** |
| 191 | + |
| 192 | +- [ ] 12. 增强时间轴导航 |
| 193 | + - [ ] 12.1 实现时间轴点击跳转 |
| 194 | + - 修改 PlaybackControls 组件 |
| 195 | + - 支持点击时间轴跳转到指定步骤 |
| 196 | + - _Requirements: 12.1_ |
| 197 | + - [ ] 12.2 实现当前步骤标注 |
| 198 | + - 在时间轴上突出显示当前步骤位置 |
| 199 | + - 支持步骤预览悬浮提示 |
| 200 | + - _Requirements: 12.2, 12.4_ |
| 201 | + - [ ] 12.3 实现大量步骤的缩略显示 |
| 202 | + - 当步骤数量较多时提供缩略视图 |
| 203 | + - 支持分页或滚动浏览 |
| 204 | + - _Requirements: 12.3_ |
| 205 | + - [ ] 12.4 编写时间轴跳转的属性测试 |
| 206 | + - **Property 10: 时间轴跳转一致性属性** |
| 207 | + - **Validates: Requirements 12.1, 12.2** |
| 208 | + |
| 209 | +- [ ] 13. 实现状态变量可视化 |
| 210 | + - [ ] 13.1 创建变量监视面板 |
| 211 | + - 在 `src/components/` 目录下创建 `VariableWatch/` 组件 |
| 212 | + - 显示算法中使用的状态变量 |
| 213 | + - 支持复杂数据结构的展开显示 |
| 214 | + - _Requirements: 7.1, 7.3_ |
| 215 | + - [ ] 13.2 实现变量变更动画 |
| 216 | + - 当变量值变更时显示动画效果 |
| 217 | + - 高亮显示变更的部分 |
| 218 | + - _Requirements: 7.2_ |
| 219 | + - [ ] 13.3 集成变量面板到画布 |
| 220 | + - 在画布上合理布局变量面板 |
| 221 | + - 避免与其他元素重叠 |
| 222 | + - _Requirements: 7.4_ |
| 223 | + |
| 224 | +- [ ] 14. Final Checkpoint - 确保所有测试通过 |
| 225 | + - 确保所有测试通过,如有问题请询问用户。 |
0 commit comments