MoonMao42/ReceiptBI
MoonMao42/ReceiptBI has 38 GitHub stars and 0 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-14 19:06 UTC. Last push 2026-10-24.
可以做什么
- Natural language queries — describe what you need, get SQL + results back
- Auto analysis — query results feed into Python for deeper analysis and chart generation
- Semantic layer — define business terms (GMV, AOV, etc.) so the generated SQL stays unambiguous
- Schema relationship graph — drag-and-drop table connections, QueryGPT picks the right join path
实测星标增长
- 24小时
- 0
- 7天
- 正在收集历史
- 15天
- 正在收集历史
- 1个月
- 正在收集历史
各周期内的星标净变化,周期相互重叠,并非每日新增。缺失的测量保持空白。星标代表关注度,不代表软件质量。
关于
Turn CSV, Excel, and read-only databases into verified, editable business reports.
数据README.zh.md
原文
功能
- 自然语言查询 — 描述你的需求,拿到 SQL + 结果
- 自动分析 — 查询结果自动流入 Python 做进一步分析和出图
- 语义层 — 定义业务术语(GMV、AOV 等),生成的 SQL 不会有歧义
- Schema 关系图 — 拖拽连接表定义 JOIN 关系,自动选择连接路径
工作原理
flowchart LR
query["用自然语言提问"] --> context["使用语义层 + Schema 理解意图"]
context --> sql["生成只读 SQL"]
sql --> execute["执行查询"]
execute --> result["返回结果和摘要"]
result --> decision{"需要图表或进一步分析吗?"}
decision -->|需要| python["Python 分析与图表"]
decision -->|不需要| done["完成"]
python --> done
execute -->|SQL 错误| repair_sql["自动修复并重试"]
sql -->|重试| repair_sql
python -->|Python 错误| repair_py["自动修复并重试"]
repair_sql --> sql
repair_py --> python
截图


快速开始
1. 克隆仓库
git clone https://github.com/MoonMao42/ReceiptBI.git
cd ReceiptBI
2. 运行
macOS / Linux — 需要 Python 3.11+ 和 Node.js LTS:
./start.sh
或者用 Docker:
docker compose up --build
Windows — 用 Docker Desktop,或者 WSL2 + ./start.sh。
3. 配置
打开 http://localhost:3000:
- 进设置页面,添加模型(提供商 + API 密钥)
- 用内置的演示数据库,或者连你自己的 SQLite / MySQL / PostgreSQL
- 可选:设置默认模型、默认连接和对话上下文轮数
- 开始提问
自带 SQLite 演示数据库(
demo.db),首次启动会自动创建示例连接。
技术栈
- 前端:Next.js 15, React 19, TypeScript, Zustand, TanStack Query
- 后端:FastAPI, SQLAlchemy 2.0, LiteLLM, Python 3.11+
- 数据库:SQLite, MySQL, PostgreSQL
配置参考
模型
支持 OpenAI 兼容、Anthropic、Ollama 和自定义网关。可配置字段:
| 字段 | 说明 |
|---|---|
provider |
模型提供商 |
base_url |
API 端点 |
model_id |
模型标识符 |
api_key |
API 密钥(Ollama 或未认证网关可选) |
extra headers |
自定义请求头 |
query params |
自定义查询参数 |
api_format |
API 格式 |
healthcheck_mode |
健康检查模式 |
数据库
支持 SQLite、MySQL 和 PostgreSQL。系统只执行只读 SQL。
内置 SQLite 演示数据库:
- 路径:
apps/api/data/demo.db - 默认连接名称:
Sample Database
启动脚本
./start.sh # 主机模式:检查环境、安装依赖、初始化数据库、启动前后端
./start.sh setup # 主机模式:仅安装依赖
./start.sh stop # 停止主机模式服务
./start.sh restart # 重启主机模式服务
./start.sh status # 检查主机模式状态
./start.sh logs # 查看主机模式日志
./start.sh doctor # 诊断主机模式环境
./start.sh test all # 在主机模式下运行所有测试
./start.sh cleanup # 清理主机模式临时状态
安装分析扩展(scikit-learn, scipy, seaborn):
./start.sh install analytics
可选环境变量:
QUERYGPT_BACKEND_RELOAD=1 ./start.sh # 后端热重载
QUERYGPT_BACKEND_HOST=0.0.0.0 ./start.sh # 监听所有接口
Docker 开发
Windows 开发者用 Docker;start.ps1 / start.bat 不再维护。
默认开发栈:
web: Next.js 开发服务器(HMR)api: FastAPI 开发服务器(--reload)db: PostgreSQL 16
docker-compose up --build # 在前台启动所有服务
docker-compose up -d --build # 在后台启动所有服务
docker-compose down # 停止并删除容器
docker-compose down -v --remove-orphans # 同时删除数据卷
docker-compose ps # 查看状态
docker-compose logs -f api web # 查看前后端日志
docker-compose restart api web # 重启前后端
docker-compose up db # 仅启动数据库
docker-compose run --rm api ./run-tests.sh
docker-compose run --rm web npm run type-check
docker-compose run --rm web npm test
注意:
- 前端:
http://localhost:3000 - 后端:
http://localhost:8000 - PostgreSQL:
localhost:5432 - 改了依赖后跑
docker-compose up --build - 装了 Docker Compose 插件的话用
docker compose替换docker-compose
本地开发(主机模式)
后端
cd apps/api
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
uvicorn app.main:app --reload --host 127.0.0.1 --port 8000
前端
cd apps/web
npm install
npm run dev
环境变量
后端 apps/api/.env:
DATABASE_URL=sqlite+aiosqlite:///./data/querygpt.db
ENCRYPTION_KEY=your-fernet-key
前端 apps/web/.env.local:
NEXT_PUBLIC_API_URL=http://localhost:8000
# 可选:仅在 Docker / 容器化 Next 重写时需要
# INTERNAL_API_URL=http://api:8000
测试
# 前端
cd apps/web && npm run type-check && npm test && npm run build
# 后端
./apps/api/run-tests.sh
GitHub CI 分层
GitHub Actions 分两层:
- 快速层:后端
ruff + mypy (chat/config 主路径) + pytest,前端lint + type-check + vitest + build - 集成层:Docker 全栈、Playwright 冒烟测试、
start.sh主机模式冒烟测试、SQLite / PostgreSQL / MySQL 连接测试、模拟网关模型测试
本地运行:
# Docker 全栈
docker compose -f docker-compose.yml -f docker-compose.ci.yml up -d --build
# 后端集成测试(需要 PostgreSQL / MySQL / 模拟网关环境变量)
cd apps/api && pytest tests/test_config_integration.py -v
# 后端主路径类型检查
cd apps/api && mypy --config-file mypy.ini
# 前端浏览器冒烟测试(应用必须先运行)
cd apps/web && npm run test:e2e
部署
后端
仓库有 render.yaml 可以直接 Render Blueprint 部署。
前端
推荐 Vercel:
- 根目录:
apps/web - 环境变量:
NEXT_PUBLIC_API_URL=<your-api-url>
已知局限
- 只允许只读 SQL,写操作会被拦
- 自动修复覆盖 SQL、Python 和图表配置错误(可恢复的)
/chat/stop按单实例语义工作- 开发用 Node.js LTS;
next dev有问题的话清apps/web/.next
License
MIT