一个基于Web的Python数据分析工具,集成了Jupyter笔记本的功能和AI辅助代码生成能力。
系统采用现代化的界面设计,主要包括:
- 左侧可折叠的文件管理面板,支持笔记本、数据文件和数据集的管理
- 中间区域为笔记本编辑区,支持代码和Markdown单元格
- 顶部工具栏提供主题切换、文件操作、单元格添加等功能
- 内置AI代码助手,支持自然语言生成代码
- Markdown和代码单元格支持
- 实时代码执行
- 执行结果实时显示
- 单元格操作(添加、删除、移动)
- 代码自动补全和语法高亮
- 可调整布局的文件管理面板
- 支持CSV和Excel格式文件上传
- 文件管理(预览、删除)
- 数据基本信息显示
- 数据内容预览
- DataFrame操作和管理
- 折叠式文件和数据集列表
- 智能代码生成
- DataFrame信息实时展示
- 自然语言转Python代码
- 代码示例一键插入
- 支持数据分析常用操作
- 可配置的AI系统提示词
- 集成Matplotlib和Seaborn
- 支持多种图表类型
- 可视化代码智能生成
- 图表实时预览
- AI提示词在线配置
- 配置版本控制
- 一键重置默认配置
- 实时保存和加载
- Vue 3
- Element Plus
- Monaco Editor
- TypeScript
- Vite
- FastAPI
- Python 3.10+
- Pandas
- NumPy
- Matplotlib
- DeepSeek API
- Python 3.10 或更高版本
- Node.js 16 或更高版本
- npm 8 或更高版本
- 创建虚拟环境:
python -m venv .venv
source .venv/bin/activate # Linux/Mac
.venv\Scripts\activate # Windows- 安装依赖:
pip install -r requirements.txt- 配置环境变量:
cp .env.example .env
# 编辑 .env 文件,设置必要的环境变量- 安装依赖:
cd frontend
npm install- 启动后端服务:
cd backend
uvicorn app.main:app --reload --port 8000- 启动前端服务:
cd frontend
npm run serve- 构建前端:
cd frontend
npm run build- 启动服务:
cd backend
uvicorn app.main:app --host 0.0.0.0 --port 8000- 点击工具栏的"上传文件"按钮
- 选择CSV或Excel文件
- 等待文件上传和预处理完成
- 在代码单元格中编写Python代码
- 使用AI助手生成代码:
- 点击AI助手按钮
- 选择要操作的DataFrame
- 输入自然语言描述
- 获取生成的代码
- 使用内置的可视化库创建图表
- 通过AI助手生成可视化代码
- 在笔记本中实时查看图表效果
查看 CHANGELOG.md 了解详细的版本更新历史。
- Fork 本仓库
- 创建特性分支:
git checkout -b feature/AmazingFeature - 提交改动:
git commit -m 'Add some AmazingFeature' - 推送分支:
git push origin feature/AmazingFeature - 提交 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
在原有实现中,notebookStore.js 仅管理当前活动笔记本的状态,在切换笔记本时需要不断更新状态,这种方式存在以下问题:
- 状态管理不可靠,容易导致数据丢失
- 切换笔记本时需要手动保存和恢复状态
- 无法同时管理多个笔记本的状态
-
重构 notebookStore.js
- 使用
notebooks对象存储所有打开的笔记本状态,格式为{ tabId: notebookState } - 添加
activeNotebookId属性,指向当前活动的笔记本 - 使用 getters 获取当前活动笔记本的状态,保持与原有 API 的兼容性
- 添加新的方法:
setActiveNotebook、closeNotebook、getNotebookState等
- 使用
-
更新 NotebookContainer.vue
- 移除手动保存和恢复笔记本状态的逻辑
- 使用新的 API 切换活动笔记本
-
更新 useNotebook.js
- 修改所有操作笔记本状态的方法,使用新的 API
- 添加
closeNotebook方法,用于关闭笔记本
-
更新 TabsManager.vue
- 使用
closeNotebook方法关闭标签页,同时清理笔记本状态
- 使用
- 可靠性提升:每个笔记本的状态都独立存储,不会因为切换而丢失
- 性能优化:避免了频繁的状态保存和恢复操作
- 代码简化:移除了手动管理状态的复杂逻辑
- 功能增强:支持同时管理多个笔记本的状态
-
获取当前笔记本状态:
const store = useNotebookStore() const cells = store.cells // 获取当前活动笔记本的单元格
-
切换活动笔记本:
store.setActiveNotebook(tabId)
-
关闭笔记本:
const { closeNotebook } = useNotebook() closeNotebook(tabId)
-
获取指定笔记本的状态:
const notebookState = store.getNotebookState(tabId)
在原有实现中,系统会在以下情况自动创建新的笔记本:
- 应用初始化时,如果没有打开的标签页
- 关闭最后一个标签页后
- 关闭所有标签页后
这种行为可能会导致创建不必要的空白笔记本,增加用户的困惑。
-
移除自动创建笔记本的逻辑
- 应用启动时不再自动创建笔记本
- 关闭最后一个标签页后不再自动创建新笔记本
- 关闭所有标签页后不再自动创建新笔记本
-
添加空白状态提示
- 当没有打开的笔记本时,显示友好的空白状态提示
- 提供明确的"创建新笔记本"按钮
- 引导用户从文件面板打开已有笔记本
-
明确的用户操作入口
- 在工具栏上提供"新建笔记本"按钮
- 在空白状态页面提供"创建新笔记本"按钮
- 从文件面板打开已有笔记本
- 用户体验改进:只有在用户明确需要时才创建新的笔记本
- 减少困惑:避免创建不必要的空白笔记本
- 界面清晰:提供明确的操作引导
- 资源优化:减少不必要的资源消耗
-
创建新笔记本:
- 点击工具栏上的"+"按钮
- 在空白状态页面点击"创建新笔记本"按钮
-
打开已有笔记本:
- 从左侧文件面板选择并打开已有笔记本
- 状态持久化:将笔记本状态保存到 localStorage,在页面刷新后恢复
- 自动保存:定时自动保存笔记本内容,防止意外丢失
- 撤销/重做功能:记录操作历史,支持撤销和重做
- 笔记本比较:支持比较不同版本的笔记本内容
- 协作编辑:支持多人同时编辑同一个笔记本
- 最近打开的笔记本:在空白状态页面显示最近打开的笔记本列表



