造了一个 Chat BI:让业务人员用自然语言“对话”Excel 数据
https://gitee.com/exterior-and-interior-sha/chat-bi
这东西解决了什么问题
大多数企业内部的数据流转长这样:
- 业务部门用 Excel 做记录,每天产生几十张表
- 想查点什么东西 → 提需求给 IT → IT 排期写 SQL → 几天后拿到结果
- 或者业务人员自己学 SQL,但能写 JOIN 的业务一只手数得过来
更麻烦的是,很多企业的数据根本不能上云。金融、医疗、政务,数据出不了内网。
市面上不是没有 Chat BI 方案,但要么是 SaaS 服务(数据得上云),要么是商业软件(贵),要么绑定特定云平台。
所以有了这个项目。
跑一遍完整流程
从用户视角看,整个系统就五个页面,走一遍就清楚它做什么了。
第一步:上传 Excel
打开数据管理页(/data),右上角"上传 Excel"按钮,拖拽或选择 .xlsx 文件。上传后后端做几件事:
- 用 EasyExcel 流式解析文件,逐列推断类型——数值列标
DECIMAL(21,6),日期列自动识别常见格式,文本列标VARCHAR - 自动生成 CREATE TABLE DDL,表名格式
data_原始名_时间戳 - 通过 JDBC batch insert(每 1000 条一批)写入数据库
- 返回解析结果给前端展示
页面上会出现一张数据集列表,每一行显示:
| 字段 | 说明 |
|---|---|
| 数据集名称 | 可点击进入详情 |
| 行数 | 导入的数据总量 |
| 文件名 | 原始文件名 |
| 状态 | 解析中 / 就绪 / 错误,用不同颜色 Tag 标识 |
| 导入时间 | 格式化为YYYY-MM-DD HH:mm |
每条数据后面有三个操作按钮:
- 预览→ 进入详情页,展示字段列表(列名、类型、语义描述、空值数、示例值)和数据预览(前 50 行表格)
- AI 分析→ 遍历每个字段,调用 LLM 推断语义,自动生成中文列描述(比如
amnt→ “金额”),同时统计每列空值数量和数值列的 min/max/avg - 删除