Skip to content
yuhang234Public

About

一体化数据智能平台:多源数据接入、ETL、任务调度、AI 应用与 RAG 知识库、告警与可视化(FastAPI + Vue 3)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

DataPilot

一体化数据智能平台:把「多源数据接入 → 数据开发与调度 → 指标 / 可视化 → AI 应用与知识库 → 告警与治理」收进同一套可私有化部署的系统。

后端基于 FastAPI + SQLAlchemy 2.0 + Celery,前端基于 Vue 3 + Element Plus / Ant Design Vue,在 RuoYi-Vue3-FastAPI 的权限与系统管理底座上扩展出数据平台能力。默认 MySQL,可一键切换 PostgreSQL;提供 Docker Compose 生产 / 开发两套编排、镜像构建 CI 与 Playwright 端到端测试。


界面预览

以下界面均来自本地 dev 环境(MySQL + Elasticsearch + Redis + MinIO)灌入演示数据后的真实运行截图,不是设计稿:数据源连接、SQL 取数、看板图表、知识库召回、调度与告警全部走真实链路。

控制台:数据源 / 任务 / AI / 用量总览 数据管理:数据源 → 模型树 + 原生 SQL 取数
控制台 数据管理
数据看板:多图看板(矩阵布局 + 筛选联动) 知识库:文档 + 分段(切分 → 向量化)
数据看板 知识库
知识库召回测试:混合 / 向量 / 全文 + 重排 任务调度:模板 / 定时 / 执行记录
召回测试 任务调度
告警中心:策略 → 记录(多通道转发)
告警中心

目录


核心能力

1. 多源数据接入与数据开发

  • 78+ 数据源连接器:关系型 / 数仓 / OLAP(MySQL、PostgreSQL、Oracle、SQL Server、ClickHouse、Doris、StarRocks、Snowflake、BigQuery、Databricks…)、时序库、文档库、KV、图库、向量库、消息队列、文件与对象存储、HTTP / OpenAPI 等。
  • 统一连接器契约:读 / 写 / 抽取(dlt)/ 结构探测 / 流式 / 向量 / 接口生成等能力位声明,按需懒加载驱动与连接池。
  • 可独立使用的 datapilot SDK:不依赖数据库、租户与加密实现的纯数据访问内核,可被平台、CLI、MCP、Agent 复用(见 api/datapilot/README.md)。
  • 数据集成(ETL):基于 dlt 的抽取 → 转换 → 装载,支持全量 / 增量、CDC(MySQL binlog)、字段映射与任务化运行。
  • 数据资产:表 / 字段元数据、数据血缘、指标定义、数据访问审计。
  • 在线取数:只读 SQL 护栏、分页预览、结果导出、图表配置生成。

2. 任务调度与工作流

  • 任务管理、任务模板、DAG 工作流编排、执行实例、执行明细日志、Worker 管理。
  • Celery 分布式执行,Redis 作为 broker;任务日志可落 DB / Elasticsearch / 文件,并通过日志聚合任务统一消费。
  • 失败重试、超时控制、并发与队列隔离、文件型任务、定时与手动触发。
  • 无状态代码执行沙箱:Python / Shell / ETL / Transform 调试态在独立容器执行,非 root、drop capabilities、资源上限、独立 internal 网络,出网仅经 egress 代理域名白名单。

3. AI 应用与知识库(RAG)

  • 模型管理:多供应商(Anthropic、OpenAI、Google、DashScope、DeepSeek、Groq、Ollama、LiteLLM…)、默认 / 兜底模型、Embedding、Rerank。
  • AI 应用:应用配置、提示词、公开 API(API Key)、流式对话、用量与可观测指标。
  • AI 对话:多轮会话、SSE 流式输出、工具调用、Markdown / Mermaid / 代码渲染。
  • 工具与技能:内置数据查询、指标、任务、沙箱代码执行、MCP / 多 MCP 工具、技能注册。
  • 知识库 RAG:文档解析(PDF / DOCX / PPTX / HTML / Markdown…)、语义切分、上下文增强、Embedding、Elasticsearch 向量库、混合检索与重排。
  • 安全护栏:Guardrails、调用可观测、令牌与数据范围隔离。

4. 可视化与指标

  • 控制台仪表盘、可编辑看板 / 分组、分享参数、大屏可视化。
  • ECharts 图表构建器、AI 生成图表配置(chart_spec JSON),支持自助分析。
  • 指标服务与图表数据接口。

5. 告警中心

  • 告警策略(阈值 / 任务状态等)、告警记录、静默与恢复。
  • 多通道转发:Webhook / Kafka / Email / 系统通知 / 企业微信 / 飞书 / 钉钉,渠道可注册扩展;单个渠道失败不影响其他渠道。

6. 平台治理与系统管理

  • RBAC 权限、部门 / 岗位 / 角色 / 菜单 / 数据范围、字典、参数配置、通知公告、操作日志、登录日志、在线用户、缓存监控、服务监控。
  • 多租户:用户-租户成员模型、租户上下文隔离、存量数据回填。
  • 文件管理:统一文件与对象存储(MinIO / S3 / OSS / Azure Blob / GCS / COS),文件维护任务、访问权限与回收。
  • API 令牌:通用 API Token,供外部系统调用平台开放接口。
  • GitHub SSO:OAuth 登录、组织白名单、自动建号与默认角色。
  • 传输加密:RSA 密钥协商 + AES 报文加密,支持密钥轮换与公钥导出。
  • 限流、数据范围、预授权、接口鉴权等通用切面。

7. 开发者体验

  • ruoyi CLI(Typer):应用运行 / 路由 / 配置、数据库迁移、缓存、参数、定时任务、代码生成、运维健康检查。
  • TUI(Textual):交互式浏览任务、缓存、配置与数据库状态。
  • Shell 自动补全:Bash / Zsh / Fish / PowerShell。
  • 交互式向导:数据库升级、缓存清理、代码导出、应用运行、生产检查等。
  • 代码生成器:导入物理表,一键生成前后端 CRUD。

系统架构

flowchart LR
    U[浏览器 / 外部系统] --> N[Nginx 前端]
    N --> F[Vue 3 SPA]
    N -->|/prod-api| B[FastAPI 后端]
    B --> DB[(MySQL / PostgreSQL)]
    B --> R[(Redis)]
    B --> ES[(Elasticsearch)]
    B --> S3[(MinIO / S3)]
    B -->|投递任务| Q[(Celery Queue)]
    Q --> W[Celery Worker]
    W --> DB
    W --> ES
    W --> S3
    W --> SB[代码执行沙箱]
    SB --> P[Egress Proxy<br/>域名白名单]
    P --> X[外部数据源 / API]
    B --> SB
Loading
  • 前端:Vue 3、Vite 6、Pinia、Vue Router、Element Plus、Ant Design Vue、ECharts / G2Plot、X6、Monaco、Mermaid、KaTeX。
  • 后端:FastAPI 0.128、SQLAlchemy 2(async)、Alembic、Pydantic 2、Celery 5、APScheduler、Agno、litellm、dlt。
  • 中间件:MySQL 8 / PostgreSQL 14、Redis、Elasticsearch 8、MinIO。
  • 部署:Docker Compose(生产 docker-compose.yml / 开发 docker-compose.dev.yml)、Nginx、GitHub Actions。

技术栈

层次 主要技术
前端 Vue 3.5、Vite 6、Pinia、Element Plus、Ant Design Vue、ECharts、AntV X6、Monaco、Mermaid
Web 框架 FastAPI、Uvicorn、Starlette、Pydantic v2
数据访问 SQLAlchemy 2.0 async、Alembic、PyMySQL / asyncmy、asyncpg
异步任务 Celery、Redis、APScheduler
AI / RAG Agno、litellm、Anthropic / OpenAI / Google / DashScope 等 SDK、Elasticsearch 向量检索、dlt
存储 MinIO / S3、本地文件、多种云对象存储
质量保障 Ruff、Pytest、Playwright、GitHub Actions
运行环境 Python 3.10+、Node.js 18+、Docker / Docker Compose

仓库结构

.
├── api/                        # FastAPI 后端
│   ├── app.py / server.py      # 应用入口与工厂
│   ├── cli/                    # ruoyi CLI / TUI / 补全 / 交互向导
│   ├── common/                 # 通用切面、注解、上下文、路由、指标
│   ├── config/                 # 环境、数据库、Redis、Celery、调度器
│   ├── module_admin/           # 系统管理(用户/角色/菜单/部门/字典/日志/文件/缓存…)
│   ├── module_ai/              # AI 模型 / 应用 / 对话 / 技能 / 工具 / 指标
│   ├── module_alert/           # 告警策略 / 记录 / 多通道转发
│   ├── module_apitoken/        # 通用 API 令牌
│   ├── module_dashboard/       # 控制台统计
│   ├── module_data/            # 数据源 / 数据资产 / ETL / 指标 / 血缘
│   ├── module_generator/       # 代码生成器
│   ├── module_rag/             # 知识库 / 切分 / 向量化 / 检索 / 重排
│   ├── module_task_schedule/   # 任务 / 模板 / DAG / 实例 / 日志 / Worker / CDC
│   ├── datapilot/                 # 可独立复用的数据访问 SDK + 78+ 连接器
│   ├── alembic/                # 数据库迁移
│   ├── sql/                    # MySQL / PostgreSQL 初始化脚本
│   ├── sandbox_app.py          # 无状态代码执行沙箱
│   └── requirements*.txt       # Python 依赖
├── web/                        # Vue 3 前端
│   ├── src/views/              # 系统 / 数据 / AI / RAG / 任务 / 告警 / 监控 / 工具
│   ├── src/api/                # 接口封装
│   ├── bin/                    # Nginx 配置
│   └── vite.config.js
├── tests/                      # Pytest + Playwright 端到端测试
├── deploy/                     # 密钥生成、备份、egress 代理
├── docker-compose.yml          # 生产编排(MySQL 默认 / PG 切换)
├── docker-compose.dev.yml      # 开发编排(热更新)
├── .env.example                # 生产环境变量模板
├── .env.pg                     # PostgreSQL 切换包
└── .github/workflows/          # 镜像构建、Ruff、Playwright

快速开始

方式一:Docker Compose(推荐)

前置:Docker 24+ 与 Docker Compose v2。

# 1. 生产编排(默认 MySQL,零配置可启动)
cp .env.example .env        # 可选:按需修改端口、口令、AI Key 等
docker compose up -d

# 2. 切换 PostgreSQL
docker compose --env-file .env.pg up -d

默认访问:

服务 地址
前端 http://localhost(`FRONTEND_PORT` 可改)
后端 Swagger http://localhost:19099/docs
MinIO 控制台 http://localhost:19001

⚠️ 首次部署请务必修改 .env 中的数据库 / Redis / ES / MinIO 口令与应用密钥;可使用 python deploy/gen-secrets.py --env dockermy 一次性生成互相对齐的随机密钥。

开发模式(源码挂载 + 后端热重载 + Vite HMR):

docker compose -f docker-compose.dev.yml up --build   # 首次或依赖变更
docker compose -f docker-compose.dev.yml up           # 日常

方式二:本地开发

后端(Python 3.10+):

cd api
python -m venv .venv && source .venv/bin/activate    # Windows: .venv\Scripts\activate
pip install -r requirements.txt
pip install -r requirements-data.txt                  # 可选:ETL / 数据源驱动
cp .env.dev.example .env.dev                          # 填入数据库、Redis、密钥等
python app.py --env=dev

前端(Node.js 18+):

cd web
npm install
npm run dev

默认后端端口 9099,前端通过 /dev-api 代理到后端。

数据库初始化与迁移

  • Docker:首次启动自动导入 api/sql/datapilot.sql(MySQL)或 api/sql/datapilot-pg.sql(PostgreSQL)。
  • 本地 / 已有库:使用 Alembic 升级到最新版本。
cd api
alembic upgrade head
# 或使用 CLI
ruoyi db upgrade
ruoyi db current
ruoyi db revision -m "add_xxx" --autogenerate

演示数据

平台默认是空项目(只有系统管理底座的用户/角色/菜单),直接部署时数据源、看板、知识库等页面都是空的。仓库内置两个幂等、可反复执行的种子脚本,按需二选一或全用:

脚本 内容 是否依赖外网
api/demo_seed_business.py 通用业务 demo:MySQL 电商业务库(订单/商品/客户/流量 5 张表、约 1 万行造数)+ 5 数据模型 + 5 指标 + 3 看板 + 任务/模板/执行历史 + DAG 工作流 + 告警策略与记录 + AI 模型/应用/工具/技能 + 2 个知识库(文档 + QA + 向量) 否,完全离线
api/demo_seed.py 财经行情 demo:akshare 27 个数据集成任务 + ES 索引 + 财经看板 + 3 个 AI 应用 是(akshare 取数 + ES)
# 通用业务 demo(推荐;容器内执行,镜像无需重建)
docker exec -i datapilot-backend-dev python - < api/demo_seed_business.py

# 测完清理(删 demo 业务库 + 平台侧 demo 数据)
docker exec -i datapilot-backend-dev python - --clean < api/demo_seed_business.py

几点说明:

  • 数据是真的能查的:种子在平台 MySQL 里建独立库 datapilot_demo,并注册为数据源 demo_warehouse;看板/在线取数都是对该库执行真实 SQL,可直接在「数据管理 → 数据查询」验证。
  • 知识库离线可用:demo 知识库绑定 provider=local 的特征哈希向量(见 api/module_rag/embedding.py),无需任何 Embedding API Key 即可完成切分 → 向量化 → 混合召回;它只做词面相似度,生产环境请换成真实 embedding 模型(EMBEDDING_TYPE / 知识库绑定的 ai_models)。
  • AI 应用可看不可答:种子里的模型条目没有真实 API Key(避免提交密钥),替换成自己的 Key 即可对话;工具/技能/应用配置、提示词、预设问题都是完整可用的。
  • dev 环境请固定密钥:JWT_SECRET_KEY 未配置时每个进程会随机生成,导致数据源/AI 凭据密文跨进程解不开(表现为「数据源密码为空」)。dev 编排会读取仓库根目录的 .env(已在 .gitignore 中),至少写入 JWT_SECRET_KEY 与 DATA_ENCRYPT_KEY。
  • 截图脚本:deploy/screenshot-demo.py(Playwright,登录后逐页截图到 docs/screenshots/)。

配置说明

配置优先级:命令行 --env > 已存在的环境变量(Compose 注入)> api/.env.<APP_ENV> > 代码默认值。

配置组 关键变量 说明
应用 APP_ENV APP_NAME APP_PORT APP_ROOT_PATH APP_WEB_BASE_URL 运行环境、端口、代理前缀、外链基址
安全 JWT_SECRET_KEY DATA_ENCRYPT_KEY Token 签名、库内凭据加密(Fernet)
数据库 DB_TYPE DB_HOST DB_PORT DB_USERNAME DB_PASSWORD DB_DATABASE 支持 mysql / postgresql
Redis REDIS_HOST REDIS_PORT REDIS_PASSWORD REDIS_DATABASE 缓存、Token、Celery broker
Elasticsearch TASK_ES_* RAG_VECTOR_* 任务日志、RAG 向量库
对象存储 STORAGE_TYPE S3_* / MINIO_* MinIO、S3、OSS、Azure、GCS、COS
AI LLM_* EMBEDDING_* RERANK_* DASHSCOPE_API_KEY 兜底模型、向量化、重排
沙箱 SANDBOX_ENABLED SANDBOX_BEARER_KEY SANDBOX_EGRESS_ALLOW 沙箱鉴权与出网域名白名单
SSO GITHUB_SSO_* GitHub OAuth 登录
传输加密 TRANSPORT_CRYPTO_* RSA/AES 报文加密开关与密钥

完整变量清单见 .env.example、api/.env.dev.example、api/.env.prod.example。


命令行工具(ruoyi CLI)

安装(在 api/ 下):

pip install -e .
ruoyi --help

常用命令:

# 应用
ruoyi app run --env=dev          # 启动 FastAPI
ruoyi app doctor                 # 启动前自检
ruoyi app routes                 # 查看路由清单
ruoyi app config                 # 查看配置快照

# 数据库迁移
ruoyi db check
ruoyi db upgrade --revision head
ruoyi db current
ruoyi db history

# 缓存 / 参数 / 定时任务
ruoyi cache stats
ruoyi cache clear --cache-name sys_config
ruoyi config list
ruoyi config set --config-key demo.key --value demo
ruoyi job list
ruoyi job run-once --job-id 1

# 运维 / 开发
ruoyi ops health
ruoyi ops ping-db
ruoyi ops ping-redis
ruoyi dev lint --fix
ruoyi dev test -k login

# 代码生成
ruoyi gen db-list
ruoyi gen import-table sys_user

# 交互式向导 / TUI / 自动补全
ruoyi wizard --help
ruoyi tui
ruoyi completion install --shell powershell

测试与代码质量

# 后端静态检查(CI 同步执行)
ruff check api tests
ruff format api tests --check

# 后端测试
cd tests
pip install -r requirements.txt
playwright install
python -m pytest -v

# 或使用 CLI
ruoyi dev lint
ruoyi dev test

端到端测试覆盖登录、受保护路由重定向、页面巡检、任务告警、多租户等场景,详见 tests/README.md。


CI / 镜像发布

Workflow 触发 内容
build-images.yml 推送 v* tag / 手动触发 构建并推送后端(MySQL)、前端镜像到 Docker Hub
ruff.yml push / PR 到 master Ruff 检查与格式校验
playwright.yml 按配置触发 Playwright 端到端测试

镜像相关 Secrets:DOCKERHUB_USERNAME、DOCKERHUB_TOKEN。


安全说明

  • 仓库只提交 .example 模板;.env、api/.env.dev、api/.env.prod、api/.env.dockermy、api/.env.dockerpg 等真实配置已被 .gitignore 排除。
  • 生产部署请务必替换 Compose 默认口令,并设置强随机 JWT_SECRET_KEY、DATA_ENCRYPT_KEY。
  • 沙箱容器运行于 internal 网络,默认无公网出口;如需访问外部数据源,请通过 SANDBOX_EGRESS_ALLOW 精确配置域名白名单。
  • 开放 API 使用 API Token 鉴权;建议配合限流、IP 白名单与最小权限角色使用。
  • 若需公开仓库,请再次确认历史提交与配置文件中不含任何真实凭据。

更多文档


许可与致谢

  • 前端与系统管理底座源自 RuoYi-Vue3-FastAPI / RuoYi-Vue3,遵循 MIT License(见 web/LICENSE)。
  • 数据平台、AI / RAG、任务调度、沙箱与连接器等扩展能力由本项目维护。
  • 感谢所有上游开源项目与贡献者。

如用于商业或生产环境,请自行评估并遵守各依赖组件的许可协议。

About

一体化数据智能平台:多源数据接入、ETL、任务调度、AI 应用与 RAG 知识库、告警与可视化(FastAPI + Vue 3)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages