Skip to content

Commit b2803db

Browse files
committed
docs: 更新需求文档,添加多语言支持和自定义速率选择器需求
1 parent 67335c9 commit b2803db

File tree

1 file changed

+82
-38
lines changed

1 file changed

+82
-38
lines changed

.kiro/specs/two-sum-visualizer/requirements.md

Lines changed: 82 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,22 @@
22

33
## Introduction
44

5-
本项目是一个算法教学演示网站,用于可视化展示LeetCode第1题"两数之和"的算法执行过程。网站使用TypeScript+React+D3.js构建,部署在GitHub Pages上。核心功能包括:分步骤算法演示、代码调试效果展示、交互式画布、用户自定义输入数据等
5+
本项目是一个算法教学演示网站,用于可视化展示LeetCode第1题"两数之和"的算法执行过程。网站使用TypeScript+React+D3.js构建,部署在GitHub Pages上。核心功能包括:分步骤算法演示、多语言代码调试效果展示、交互式画布、用户自定义输入数据、丰富的数据流可视化等。整体设计为单屏幕应用,配色协调统一(禁用紫色)
66

77
## Glossary
88

99
- **Algorithm_Visualizer**: 算法可视化演示系统,负责展示算法执行的每个步骤
10-
- **Canvas**: 交互式画布组件,用于绘制数据结构和动画效果
11-
- **Control_Panel**: 控制面板,包含播放、暂停、上一步、下一步、重置等控制按钮
12-
- **Code_Debugger**: 代码调试器组件,展示带行号的代码并高亮当前执行行,显示变量值
13-
- **Progress_Bar**: 进度条组件,展示算法执行进度
10+
- **Canvas**: 交互式画布组件,用于绘制数据结构和动画效果,支持拖动和缩放
11+
- **Control_Panel**: 控制面板,包含播放、暂停、上一步、下一步、重置、播放速度等控制功能
12+
- **Code_Debugger**: 代码调试器组件,展示带行号的多语言代码并高亮当前执行行,显示变量值
13+
- **Progress_Bar**: 进度条组件,展示算法执行进度,支持拖动跳转
1414
- **Data_Input**: 数据输入组件,支持用户自定义输入、预设样例和随机生成
15-
- **Step**: 算法执行的单个步骤,包含当前状态、变量值、高亮行等信息
15+
- **Step**: 算法执行的单个步骤,包含当前状态、变量值、高亮行、数据流信息等
1616
- **Two_Sum**: 两数之和算法,在数组中找出和为目标值的两个数的下标
17+
- **HashMap_Visualization**: HashMap数据结构的可视化展示,包含键值对状态和变化动画
18+
- **Data_Flow_Arrow**: 数据流箭头,用于展示值传递、变量变更、指针移动过程
19+
- **IndexedDB_Cache**: 浏览器本地存储,用于缓存GitHub Star数和播放速度设置
20+
- **GitHub_API**: GitHub提供的API接口,用于获取仓库Star数
1721

1822
## Requirements
1923

@@ -23,13 +27,26 @@
2327

2428
#### Acceptance Criteria
2529

26-
1. WHEN 页面加载完成 THEN Algorithm_Visualizer SHALL 在页面顶部显示标题"1. 两数之和"
27-
2. WHEN 用户点击标题 THEN Algorithm_Visualizer SHALL 在新标签页打开LeetCode题目链接
28-
3. WHEN 页面加载完成 THEN Algorithm_Visualizer SHALL 在页面右上角显示GitHub图标
29-
4. WHEN 用户点击GitHub图标 THEN Algorithm_Visualizer SHALL 在新标签页打开项目仓库页面
30+
1. WHEN 页面加载完成 THEN Algorithm_Visualizer SHALL 在页面最顶部显示标题"1. 两数之和",包含题目标号和中文标题
31+
2. WHEN 用户点击标题 THEN Algorithm_Visualizer SHALL 在新标签页打开LeetCode题目链接(https://leetcode.cn/problems/two-sum/)
3032

3133
### Requirement 2
3234

35+
**User Story:** 作为用户,我希望看到GitHub仓库信息,以便了解项目并给予支持。
36+
37+
#### Acceptance Criteria
38+
39+
1. WHEN 页面加载完成 THEN Algorithm_Visualizer SHALL 在页面左侧显示GitHub图标
40+
2. WHEN 用户点击GitHub图标 THEN Algorithm_Visualizer SHALL 在新标签页打开项目仓库页面
41+
3. WHEN 页面加载完成 THEN Algorithm_Visualizer SHALL 在GitHub图标旁边显示仓库Star数
42+
4. WHEN 获取Star数 THEN Algorithm_Visualizer SHALL 使用GitHub API获取最新Star数,一小时内不重复获取
43+
5. WHEN Star数获取成功 THEN Algorithm_Visualizer SHALL 将Star数缓存到IndexedDB_Cache
44+
6. IF GitHub API获取失败 THEN Algorithm_Visualizer SHALL 读取IndexedDB_Cache中的缓存值
45+
7. IF IndexedDB_Cache中无缓存 THEN Algorithm_Visualizer SHALL 显示默认值0
46+
8. WHEN 用户将鼠标悬停在GitHub图标上 THEN Algorithm_Visualizer SHALL 显示提示"点击去GitHub仓库Star支持一下"
47+
48+
### Requirement 3
49+
3350
**User Story:** 作为用户,我希望能够控制算法演示的播放,以便按自己的节奏学习算法。
3451

3552
#### Acceptance Criteria
@@ -38,32 +55,45 @@
3855
2. WHEN 用户点击"上一步"按钮或按左方向键 THEN Control_Panel SHALL 回退到上一个算法步骤
3956
3. WHEN 用户点击"播放"按钮或按空格键 THEN Control_Panel SHALL 自动连续播放算法步骤
4057
4. WHEN 用户点击"暂停"按钮或按空格键 THEN Control_Panel SHALL 暂停自动播放
41-
5. WHEN 用户点击"重置"按钮 THEN Control_Panel SHALL 将算法演示重置到初始状态
42-
6. WHEN 控制按钮渲染完成 THEN Control_Panel SHALL 在按钮上显示对应的快捷键提示文案
58+
5. WHEN 用户点击"重置"按钮或按R键 THEN Control_Panel SHALL 将算法演示重置到初始状态
59+
6. WHEN 控制按钮渲染完成 THEN Control_Panel SHALL 在按钮上显示对应的快捷键提示文案(←、→、空格、R)
4360

44-
### Requirement 3
61+
### Requirement 4
62+
63+
**User Story:** 作为用户,我希望能够调整播放速度,以便根据理解程度控制演示节奏。
64+
65+
#### Acceptance Criteria
66+
67+
1. WHEN 页面加载完成 THEN Control_Panel SHALL 显示播放速度控制器,默认速度为1.0x
68+
2. WHEN 用户调整播放速度 THEN Control_Panel SHALL 使用自定义UI组件(非原生组件)更新播放速度
69+
3. WHEN 播放速度变更 THEN Control_Panel SHALL 将新速度保存到IndexedDB_Cache
70+
4. WHEN 页面重新加载 THEN Control_Panel SHALL 从IndexedDB_Cache恢复上次保存的播放速度
71+
72+
### Requirement 5
4573

4674
**User Story:** 作为用户,我希望通过进度条直观了解算法执行进度,并能快速跳转到任意步骤。
4775

4876
#### Acceptance Criteria
4977

5078
1. WHEN 算法演示进行中 THEN Progress_Bar SHALL 以绿色显示已播放部分,灰色显示未播放部分
5179
2. WHEN 用户拖动进度条 THEN Progress_Bar SHALL 跳转到对应的算法步骤
52-
3. WHEN 进度条渲染完成 THEN Progress_Bar SHALL 宽度占满容器100%
80+
3. WHEN 进度条渲染完成 THEN Progress_Bar SHALL 宽度占满控制面板底部100%空间
5381

54-
### Requirement 4
82+
### Requirement 6
5583

56-
**User Story:** 作为用户,我希望看到带调试效果的代码展示,以便理解算法执行过程中的变量变化。
84+
**User Story:** 作为用户,我希望看到带调试效果的多语言代码展示,以便理解算法执行过程中的变量变化。
5785

5886
#### Acceptance Criteria
5987

60-
1. WHEN 算法演示进行中 THEN Code_Debugger SHALL 高亮显示当前执行的代码行
61-
2. WHEN 变量值发生变化 THEN Code_Debugger SHALL 在对应代码行后面显示变量的当前值
62-
3. WHEN 代码渲染完成 THEN Code_Debugger SHALL 显示行号
63-
4. WHEN 代码渲染完成 THEN Code_Debugger SHALL 保持正确的代码缩进对齐
64-
5. WHEN 代码渲染完成 THEN Code_Debugger SHALL 应用语法高亮样式
88+
1. WHEN 页面加载完成 THEN Code_Debugger SHALL 支持Java、Python、Golang、JavaScript四种语言的代码展示
89+
2. WHEN 算法演示进行中 THEN Code_Debugger SHALL 高亮显示当前执行的代码行
90+
3. WHEN 变量值发生变化 THEN Code_Debugger SHALL 在对应代码行后面显示变量的当前内存值
91+
4. WHEN 代码渲染完成 THEN Code_Debugger SHALL 显示行号
92+
5. WHEN 代码渲染完成 THEN Code_Debugger SHALL 保持正确的代码缩进对齐,无对齐问题
93+
6. WHEN 代码渲染完成 THEN Code_Debugger SHALL 应用语法高亮样式
94+
7. WHEN 代码框渲染完成 THEN Code_Debugger SHALL 设置适中的宽度和高度,尽量避免出现水平或垂直滚动条
6595

66-
### Requirement 5
96+
### Requirement 7
6797

6898
**User Story:** 作为用户,我希望画布能够交互操作,以便更好地观察数据结构。
6999

@@ -73,57 +103,71 @@
73103
2. WHEN 用户在画布上滚动鼠标滚轮 THEN Canvas SHALL 缩放画布视图
74104
3. WHEN 数据结构较大 THEN Canvas SHALL 自适应调整视图以完整显示
75105

76-
### Requirement 6
106+
### Requirement 8
77107

78108
**User Story:** 作为用户,我希望画布上展示丰富的算法执行信息,以便深入理解算法逻辑。
79109

80110
#### Acceptance Criteria
81111

82112
1. WHEN 算法演示进行中 THEN Canvas SHALL 可视化展示数组元素及其下标
83-
2. WHEN 算法演示进行中 THEN Canvas SHALL 高亮显示当前正在比较或操作的元素
84-
3. WHEN 算法演示进行中 THEN Canvas SHALL 展示HashMap的键值对状态
113+
2. WHEN 算法演示进行中 THEN Canvas SHALL 高亮显示当前正在比较或操作的元素,使用颜色和动画突出显示
114+
3. WHEN 算法演示进行中 THEN Canvas SHALL 展示HashMap数据结构的键值对状态
85115
4. WHEN 状态转移发生 THEN Canvas SHALL 通过动画展示数据的变化过程
86-
5. WHEN 算法演示进行中 THEN Canvas SHALL 在元素旁显示文字说明(如"当前元素"、"目标值"等)
116+
5. WHEN 算法演示进行中 THEN Canvas SHALL 在元素旁显示文字说明标签(如"当前元素"、"目标值"、"补数"等)
117+
6. WHEN 数值变更发生 THEN Canvas SHALL 使用Data_Flow_Arrow箭头指示数据从何处变更到何处,箭头旁附带文本说明
118+
7. WHEN HashMap数据结构使用时 THEN Canvas SHALL 单独绘制HashMap的完整数据结构,展示放入和取出元素的过程
119+
8. WHEN 画布元素绘制时 THEN Canvas SHALL 将元素分散布局,避免互相重叠
87120

88-
### Requirement 7
121+
### Requirement 9
89122

90123
**User Story:** 作为用户,我希望能够输入自定义数据来测试算法,以便验证不同场景下的算法行为。
91124

92125
#### Acceptance Criteria
93126

94-
1. WHEN 页面加载完成 THEN Data_Input SHALL 在标题下方显示数据输入区域
127+
1. WHEN 页面加载完成 THEN Data_Input SHALL 在标题下方显示数据输入区域,保持紧凑排版
95128
2. WHEN 用户输入自定义数据 THEN Data_Input SHALL 接受用户输入的数组和目标值
96-
3. WHEN 页面加载完成 THEN Data_Input SHALL 平铺展示多个预设数据样例供用户选择
97-
4. WHEN 用户点击"随机生成" THEN Data_Input SHALL 生成合法的随机测试数据
129+
3. WHEN 页面加载完成 THEN Data_Input SHALL 平铺展示多个预设数据样例供用户单击选择
130+
4. WHEN 用户点击"随机生成" THEN Data_Input SHALL 生成符合LeetCode题目数据规则的合法随机测试数据
98131
5. WHEN 用户提交数据 THEN Data_Input SHALL 验证输入数据的合法性
99132
6. IF 用户输入的数据不合法 THEN Data_Input SHALL 显示错误提示并阻止提交
100133

101-
### Requirement 8
134+
### Requirement 10
102135

103136
**User Story:** 作为用户,我希望能够加入算法交流群,以便与其他学习者交流讨论。
104137

105138
#### Acceptance Criteria
106139

107140
1. WHEN 页面加载完成 THEN Algorithm_Visualizer SHALL 在页面右下角显示交流群悬浮球
108-
2. WHEN 用户将鼠标悬停在悬浮球上 THEN Algorithm_Visualizer SHALL 显示微信二维码图片
109-
3. WHEN 二维码显示 THEN Algorithm_Visualizer SHALL 保持图片原有比例不变形
110-
4. WHEN 悬浮球渲染完成 THEN Algorithm_Visualizer SHALL 显示"交流群"字样图标
141+
2. WHEN 悬浮球渲染完成 THEN Algorithm_Visualizer SHALL 显示微信群图标和"交流群"字样
142+
3. WHEN 用户将鼠标悬停在悬浮球上 THEN Algorithm_Visualizer SHALL 显示微信二维码图片
143+
4. WHEN 二维码显示 THEN Algorithm_Visualizer SHALL 保持图片原有比例不变形
144+
5. WHEN 二维码显示 THEN Algorithm_Visualizer SHALL 提示用户"使用微信扫码发送'leetcode'加入算法交流群"
111145

112-
### Requirement 9
146+
### Requirement 11
113147

114148
**User Story:** 作为开发者,我希望项目能够自动部署到GitHub Pages,以便代码提交后自动更新网站。
115149

116150
#### Acceptance Criteria
117151

118152
1. WHEN 代码推送到仓库 THEN GitHub_Action SHALL 自动触发构建和部署流程
119153
2. WHEN 构建完成 THEN GitHub_Action SHALL 将产物部署到GitHub Pages
120-
3. WHEN 本地开发完成 THEN Algorithm_Visualizer SHALL 确保无编译错误和linter错误
154+
3. WHEN 本地开发完成 THEN Algorithm_Visualizer SHALL 确保无编译错误和linter错误后再提交
121155

122-
### Requirement 10
156+
### Requirement 12
123157

124158
**User Story:** 作为用户,我希望网站是单屏幕应用,以便在一个视图内看到所有内容。
125159

126160
#### Acceptance Criteria
127161

128-
1. WHEN 页面加载完成 THEN Algorithm_Visualizer SHALL 将所有组件布局在单个屏幕内
162+
1. WHEN 页面加载完成 THEN Algorithm_Visualizer SHALL 将所有组件布局在单个屏幕内,画布占据绝大部分空间
129163
2. WHEN 页面加载完成 THEN Algorithm_Visualizer SHALL 保持紧凑的排版布局
164+
3. WHEN 页面渲染完成 THEN Algorithm_Visualizer SHALL 使用协调统一的配色方案,禁止使用紫色
165+
166+
### Requirement 13
167+
168+
**User Story:** 作为开发者,我希望README简洁明了,以便快速了解项目。
169+
170+
#### Acceptance Criteria
171+
172+
1. WHEN README渲染完成 THEN Algorithm_Visualizer SHALL 仅包含题目说明和GitHub Pages部署链接
173+
2. WHEN README渲染完成 THEN Algorithm_Visualizer SHALL 不包含冗余的项目说明内容

0 commit comments

Comments
 (0)