Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sql-echart

自然语言 → SQL → MySQL 查询 → ECharts 图表。Notion 风格单页应用,支持 Kimi(Moonshot)大模型或内置规则引擎。

功能

  • 输入中文自然语言,自动生成并执行 SELECT 查询
  • 展示用户需求、SQL(语法高亮)、图表(折线 / 柱状)
  • 大模型:OpenAI 兼容接口(默认 Moonshot 中国
  • 无 API Key 时自动回退内置规则解析

环境要求

  • Node.js 18+
  • MySQL 8.0,库表 teaching_db.slides_data

快速开始

1. 克隆与安装

git clone <你的仓库地址>
cd sql-echart
npm install

2. 配置环境变量(重要)

cp .env.example .env

编辑 .env,填入真实配置。切勿将 .env 提交到 Git(已在 .gitignore 中忽略)。

PORT=3000

DB_HOST=localhost
DB_PORT=3306
DB_NAME=teaching_db
DB_USER=student
DB_PASSWORD=你的数据库密码

3. 启动

npm start

浏览器打开 http://localhost:3000,在 模型设置 中自行填写 API Key(程序不提供默认值)。

4. 体验示例

输入 说明
查询最近7天线索趋势 时间序列
按月统计线索数据量 按月聚合
最近30天线索总和 汇总
查询全部线索 全表

模型与 API Key

场景 要求
大模型生成 SQL 须同时填写 模型名称、模型地址、API Key(无默认值)
内置规则模式 三项全部留空时使用,无需 API Key

填写后点击「保存设置」写入浏览器 localStorage(仅本机)。

安全说明(上传 GitHub 前必读)

做法 说明
✅ 页面手动填写 Key 不硬编码、不从服务端注入默认 Key
.env 仅存数据库密码 .env.example
❌ 不要硬编码 Key 不要写在源码、README、截图里
❌ 不要提交 .env 已加入 .gitignore

若密钥曾泄露,请在平台轮换后重新填写。

数据库

表结构见 requrement.md。需事先建好库表与数据,本项目不包含 Docker 初始化脚本。

CREATE TABLE slides_data (
    num INT AUTO_INCREMENT PRIMARY KEY,
    add_date DATE NOT NULL,
    slides INT NOT NULL
);

脚本

命令 说明
npm start 启动服务
npm test 运行测试(需服务已启动)

项目结构

sql-echart/
├── .env.example      # 环境变量模板
├── .gitignore
├── README.md
├── requrement.md     # 需求说明
├── server.js         # Express 入口
├── lib/core.js       # SQL 生成 / 校验 / LLM
├── public/           # 前端
└── tests/run-tests.js

部署要点

  • 生产环境使用 LLM_API_KEY + DB_* 环境变量,或 PM2 / 容器注入
  • 前置 Nginx 并启用 HTTPS
  • 不要将 .env 打进镜像或公开仓库

常见问题

MySQL 未连接 — 检查数据库服务与 DB_* 配置。

模型请求失败 — 检查 Key 是否有效、地址是否为 https://api.moonshot.cn/v1、账户余额。

图表月份乱序 — 前端已对 YYYY-MM 自动排序;建议在 SQL 中加 ORDER BY

上传 GitHub 前 — 执行 git status,确认无 .env;可运行:

# 检查仓库中是否误含密钥格式(应无输出)
git grep -E "sk-[A-Za-z0-9]{20,}" -- . ":!package-lock.json"

License

MIT(可按需修改)

About

一个 Notion 风格的单页 Web 应用:用户输入自然语言 → 自动生成 SQL → 查询 MySQL → 用 ECharts 渲染图表。页面同时展示用户原始需求、生成的 SQL 语句和图表结果。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages