Skip to content

zipenglu1/NovaSQL

Repository files navigation

NovaSQL

NovaSQL 是一个基于 Tauri 2 的桌面 SQL 工作台,目标是把 Navicat 的连接管理 + Tableau 的可视化分析 放进一个轻量桌面应用。支持 SQLite 和 DuckDB 双引擎,内置 AI 助手(流式输出),中文优先。

技术栈

选型
桌面框架 Tauri 2.11 (Rust backend)
前端 React 18 + Vite 6 + Tailwind CSS v4
状态管理 Zustand + Immer
SQL 编辑器 CodeMirror 6
图表引擎 Apache ECharts
拖拽仪表盘 @dnd-kit + react-grid-layout
数据库 DuckDB 1.1 (bundled) + rusqlite 0.32 (bundled)
AI 提供者 OpenAI 兼容接口(默认 DeepSeek V4 Flash)

功能一览

连接管理

  • SQLite 和 DuckDB 双引擎连接
  • 连接创建、编辑、删除、测试
  • 中文/英文双语界面(设置中切换)

表浏览器

  • 搜索过滤表列表
  • Schema 详情:列名、数据类型(彩色标签)、主键、NOT NULL 标记
  • 数据预览:可调行数、行号、NULL 样式、hover 高亮

SQL 编辑器

  • CodeMirror 6 语法高亮
  • 多标签页(Ctrl+T 新建、Ctrl+W 关闭)
  • Ctrl+Enter 运行、Ctrl+/ 行注释切换
  • 结果表格:排序、筛选、导出 CSV
  • SQL 代码片段库

AI 助手

  • 自然语言转 SQL(NL-to-SQL)
  • SQL 解释、错误修复
  • 查询结果总结、对比、趋势分析
  • 流式输出:逐字显示 AI 回复,带闪烁光标
  • 多轮对话上下文(结构化 messages,非拼接文本)
  • SQL 安全护栏:写操作检测、多语句拦截
  • 一键"应用并运行"AI 生成的 SQL
  • Schema 感知:数据类型、主键、外键信息注入 prompt

可视化仪表盘

  • 拖拽式字段货架(行/列/筛选器/标记)
  • 自动生成 ECharts 图表(柱状图、折线图、饼图、散点图等)
  • react-grid-layout 自由布局仪表盘
  • 图表配置面板(类型、聚合、排序)
  • 添加图表 toast 反馈 + 仪表盘导航

CSV 导入

  • 文件选择 + 编码自动检测(chardet)
  • 数据预览 + 表名建议
  • 列类型推断

项目管理

  • 项目保存/加载(布局、连接、查询状态)
  • 最近项目列表
  • 查询历史记录

项目结构

NovaSQL/
├── src/                        # React 前端
│   ├── components/             # UI 组件
│   │   ├── dnd/               # 拖拽仪表盘组件
│   │   ├── dashboard/         # 仪表盘网格组件
│   │   ├── QueryAiSidebar.tsx # AI 助手侧边栏
│   │   ├── ConnectionManager.tsx
│   │   ├── OtherSectionsPanel.tsx
│   │   └── ...
│   ├── stores/                # Zustand 状态管理
│   ├── lib/                   # Tauri IPC 封装
│   ├── i18n/                  # 国际化字符串
│   ├── charts/                # ECharts 图表配置
│   ├── contracts/             # 类型契约
│   └── App.tsx                # 主应用入口
├── src-tauri/                 # Rust 后端
│   ├── src/
│   │   ├── commands/          # Tauri 命令
│   │   │   ├── ai.rs         # AI 会话 + 流式推送
│   │   │   ├── connections.rs # 连接管理 + schema 检查
│   │   │   ├── sql.rs        # SQL 执行
│   │   │   ├── analytics.rs  # 语义查询 + 图表生成
│   │   │   ├── import.rs     # CSV 导入
│   │   │   ├── history.rs    # 查询历史
│   │   │   └── project.rs    # 项目持久化
│   │   ├── domain/            # 业务逻辑
│   │   │   ├── ai_provider.rs # AI 提供者(流式 SSE)
│   │   │   ├── ai_prompt.rs  # Prompt 模板
│   │   │   ├── ai_guardrails.rs # SQL 安全护栏
│   │   │   ├── db_backend.rs # SQLite/DuckDB 双后端
│   │   │   └── ...
│   │   └── lib.rs            # Tauri 注册
│   └── .env                   # AI API 配置(不入 git)
├── crates/
│   └── analytics-core/        # 分析引擎核心库
├── Cargo.toml                 # Workspace 根配置
└── package.json

本地开发

环境要求

  • Node.js 18+ / pnpm
  • Rust 1.75+ (stable)
  • Tauri CLI (cargo install tauri-cli)

启动

# 安装依赖
pnpm install

# 启动开发模式(前端 HMR + Rust 编译)
pnpm tauri dev

# 仅运行前端测试
pnpm test

# 仅运行 Rust 测试
cargo test --manifest-path src-tauri/Cargo.toml

# 完整质量检查(前端测试 + 前端构建 + Rust 测试)
pnpm quality

# 打包生产安装包
pnpm tauri build

AI 配置

src-tauri/.env 中配置 AI 提供者(OpenAI 兼容接口):

NOVASQL_AI_BASE_URL=https://api.deepseek.com/v1
NOVASQL_AI_API_KEY=sk-your-api-key
NOVASQL_AI_MODEL=deepseek-v4-flash

应用启动时会读取 .env 并强制覆盖同名环境变量。

开发命令

命令 说明
pnpm dev 仅启动 Vite 前端开发服务器
pnpm tauri dev 启动完整 Tauri 开发模式
pnpm test 运行前端测试(vitest)
pnpm build 构建前端生产包
pnpm tauri build 构建生产安装包

许可证

MIT

About

中文优先的离线桌面数据工作台 - SQL编辑器 + BI可视化 + AI助手

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages