# datapilot **Repository Path**: wangsixian7/datapilot ## Basic Information - **Project Name**: datapilot - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-29 - **Last Updated**: 2026-06-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DataPilot > 面向企业数据团队的「数据集成 + 调度运维 + 元数据治理 + AI 智能问数」统一工作台。 > > 首期以电力数据链路为主要落地场景,优先支持私有化部署和可演示的 MVP 闭环。 ## 1. 项目定位 DataPilot 不是重复实现 DolphinScheduler、SeaTunnel 或 OpenMetadata,而是将它们与自研的数据源、任务运维、元数据和 AI 能力统一到一个产品入口中。 ```text 数据源管理 ↓ 数据同步配置 / SeaTunnel Job ↓ 调度编排 / DolphinScheduler Workflow ↓ 任务运维 / 告警 / 日志 / 影响分析 ↓ 元数据 / 血缘 / 数据资产 / OpenMetadata ↓ AI 任务生成 / 智能问数 / 运维诊断 / 报表 ``` 核心目标: - 为数据工程师提供统一的任务创建、调度、查看与运维入口。 - 为业务人员提供受控的自然语言问数和结果解释能力。 - 为数据平台提供可审计、可回滚、可私有化部署的 AI 增强能力。 - 首期打通现有 DolphinScheduler、SeaTunnel、OpenMetadata,不重复造调度与同步引擎。 ## 2. 首期 MVP 范围 ### P0:必须完成 - SoybeanJS + Vue 3 + Naive UI 管理后台。 - 用户、角色、菜单、接口权限与操作审计。 - DataPilot 统一数据源管理。 - SeaTunnel 同步任务配置草稿、版本管理、预览与校验。 - DolphinScheduler 工作流、任务实例、运行状态和日志查询。 - DataPilot 任务与 DolphinScheduler / SeaTunnel 对象的关联管理。 - OpenMetadata 的基础表、字段、标签和血缘查询。 - 基础 AI 助手:生成 SeaTunnel 配置草稿、生成只读 SQL、解释任务失败日志。 - Docker Compose 本地依赖启动,以及 Helm/Kubernetes 的初始部署能力。 ### P1:后续增强 - 数据质量规则与告警中心。 - 任务失败 AI 根因分析与处理建议。 - 自然语言创建 DolphinScheduler 工作流草稿。 - 数据资产标签自动生成、日报周报生成、图表展示。 - 多环境配置、发布审批和更完整的任务版本回滚。 ### 非目标 第一阶段不实现自研调度引擎、自研同步引擎、全功能 BI、全功能数据开发 IDE,也不允许 AI 直接修改生产数据或直接执行危险操作。 ## 3. 技术架构 ```text ┌────────────────────────────────────────────────────────────┐ │ DataPilot Web │ │ SoybeanJS + Vue 3 + TypeScript + Naive UI │ │ Pinia + Vue Router + ECharts + Monaco Editor + X6 │ └────────────────────────────────────────────────────────────┘ │ HTTP / WebSocket ▼ ┌────────────────────────────────────────────────────────────┐ │ DataPilot Server │ │ Java 21 + Spring Boot 3.x + Spring AI + MyBatis-Plus │ │ PostgreSQL + Redis + MinIO + Spring Security + OpenAPI │ └────────────────────────────────────────────────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ Scheduler Adapter│ │Integration Adapter│ │Metadata Adapter │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ ▼ ▼ ▼ DolphinScheduler SeaTunnel OpenMetadata ``` ## 4. 前端与后端技术栈 | 分类 | 选型 | |---|---| | 前端模板 | SoybeanJS | | 前端框架 | Vue 3 + TypeScript + Vite | | UI 组件库 | Naive UI | | 前端状态与路由 | Pinia + Vue Router | | 图表与编辑器 | ECharts + Monaco Editor + X6 / LogicFlow | | 后端 | Java 21 + Spring Boot 3.x | | AI | Spring AI 为主;复杂 Agent 编排按需引入 LangGraph4j | | ORM | MyBatis-Plus | | 鉴权 | Spring Security + JWT / Redis | | 主数据库 | PostgreSQL | | 缓存 | Redis | | 对象存储 | MinIO 或兼容 S3 的对象存储 | | 文档 | SpringDoc OpenAPI | | 观测 | Actuator + Prometheus + Grafana / Loki | | 本地依赖 | Docker Compose | | 生产部署 | Kubernetes + Helm | ## 5. 与已有平台的关系 DataPilot 负责统一入口、业务模型、权限、审计和 AI 上下文;第三方平台负责其擅长的执行能力。 | 平台 | 负责内容 | DataPilot 的接入方式 | |---|---|---| | DolphinScheduler | 调度编排、实例执行、日志、补数和重跑 | Adapter + REST API;必要时临时 iframe | | SeaTunnel | 数据同步任务执行 | Adapter + 配置生成/提交能力;必要时临时 iframe | | OpenMetadata | 元数据、血缘、标签、数据资产 | Adapter + REST API | 原则: - 不修改 DolphinScheduler、SeaTunnel、OpenMetadata 源码。 - 不让业务模块直接调用第三方 API,必须通过 Adapter 层。 - DataPilot 的任务与数据源模型独立于第三方平台模型。 - 第一期允许 DolphinScheduler、SeaTunnel 继续保留各自独立的数据源配置;DataPilot 先维护自己的统一视图,不强行自动同步。 - AI 只能生成建议、草稿和可审查操作;最终执行必须经过权限、校验和审计。 ## 6. 当前本地集成环境 以下平台已经在本地部署,DataPilot 开发阶段直接接入,不重复部署: | 平台 | 地址 | |---|---| | DolphinScheduler | `http://localhost:12345/dolphinscheduler` | | OpenMetadata | `http://localhost:8585/` | | SeaTunnel / SeaTunnel Web | `http://127.0.0.1:8801/` | 建议在本地环境变量中配置: ```bash SPRING_PROFILES_ACTIVE=local DOLPHINSCHEDULER_BASE_URL=http://localhost:12345/dolphinscheduler SEATUNNEL_BASE_URL=http://127.0.0.1:8801 OPENMETADATA_BASE_URL=http://localhost:8585 POSTGRES_HOST=127.0.0.1 POSTGRES_PORT=5432 POSTGRES_DB=datapilot POSTGRES_USERNAME=datapilot POSTGRES_PASSWORD=change_me REDIS_HOST=127.0.0.1 REDIS_PORT=6379 MINIO_ENDPOINT=http://127.0.0.1:9000 MINIO_ACCESS_KEY=minioadmin MINIO_SECRET_KEY=change_me ``` > 账号、密码、Token、Cookie、数据库连接串等敏感信息不得提交到 Git 仓库。第三方平台 API 的实际路径和认证方式必须以当前部署版本的 Swagger、官方文档或真实接口验证为准。 ## 7. 推荐项目结构 ```text datapilot/ ├── datapilot-web/ # SoybeanJS + Vue3 + Naive UI ├── datapilot-server/ # Maven 聚合工程,模块化单体 │ ├── datapilot-bootstrap/ # 启动模块 │ ├── datapilot-common/ # 统一异常、响应、日志、工具 │ ├── datapilot-system/ # 用户、角色、菜单、审计 │ ├── datapilot-datasource/ # 统一数据源管理 │ ├── datapilot-integration/ # SeaTunnel Adapter 与同步任务 │ ├── datapilot-scheduler/ # DolphinScheduler Adapter │ ├── datapilot-metadata/ # OpenMetadata Adapter │ ├── datapilot-ops/ # 任务运维、告警、日志聚合 │ ├── datapilot-query/ # 只读 SQL 查询与结果展示 │ └── datapilot-ai/ # Prompt、Tool、Agent、审计 ├── deploy/ │ ├── docker/ │ ├── compose/ │ ├── k8s/ │ └── helm/datapilot/ ├── docs/ ├── sql/ ├── scripts/ ├── .env.example ├── README.md └── PROJECT_CONTEXT.md ``` ## 8. 本地开发 ### 前置环境 - JDK 21 - Node.js 20+ - pnpm 9+ - Docker Desktop / Docker Compose - PostgreSQL 16 - Redis 7 - MinIO(可选但推荐) ### 推荐启动顺序 ```text 1. 启动 PostgreSQL、Redis、MinIO 等 DataPilot 自身依赖 2. 确认本地 DolphinScheduler、SeaTunnel、OpenMetadata 可访问 3. 配置 .env 或 application-local.yml 4. 启动 DataPilot Server 5. 启动 DataPilot Web 6. 通过健康检查和 Adapter 连接测试验证集成 ``` 预期命令结构: ```bash # DataPilot 自身的本地依赖 cp .env.example .env docker compose up -d postgres redis minio # 后端 cd datapilot-server ./mvnw package -DskipTests=false java -jar datapilot-bootstrap/target/datapilot-bootstrap-0.1.0-SNAPSHOT.jar # 前端 cd ../datapilot-web pnpm install pnpm dev ``` ## 9. Kubernetes / Helm 部署 生产环境只部署 DataPilot 自身服务;DolphinScheduler、SeaTunnel、OpenMetadata 可作为外部依赖接入,也可由基础平台团队独立运维。 ```text Ingress ├── DataPilot Web Deployment / Service └── DataPilot Server Deployment / Service │ ├── PostgreSQL / Redis / MinIO ├── DolphinScheduler ├── SeaTunnel └── OpenMetadata ``` Kubernetes 部署至少包含: - `Namespace` - `ConfigMap` - `Secret` - `Deployment` - `Service` - `Ingress` - `HorizontalPodAutoscaler` - `ServiceAccount`、`Role`、`RoleBinding` - `NetworkPolicy` - `Helm Chart` 与 `values-local.yaml`、`values-dev.yaml`、`values-prod.yaml` 后端最低资源建议: ```yaml resources: requests: cpu: 500m memory: 1Gi limits: cpu: "2" memory: 2Gi ``` 必须配置健康检查: ```yaml livenessProbe: httpGet: path: /actuator/health/liveness port: 19080 initialDelaySeconds: 30 periodSeconds: 15 readinessProbe: httpGet: path: /actuator/health/readiness port: 19080 initialDelaySeconds: 20 periodSeconds: 10 ``` > 注意:Pod 内的 `localhost` 指向 Pod 自身。部署到 Kubernetes 时,不能继续使用本地开发地址;必须通过 Helm values / Secret 注入集群可访问的服务 DNS、Ingress 域名或网关地址。 ## 10. 开发原则 - 第一阶段采用模块化单体,不要过早拆分微服务。 - 前端必须基于 SoybeanJS,统一使用 Naive UI,不引入 Element Plus。 - 所有第三方接入通过 Adapter 层,避免平台耦合扩散。 - 配置、密码、Token 全部环境化;Kubernetes 使用 Secret。 - 任务配置、AI 输出和关键动作必须版本化、可追溯、可审计。 - AI 生成 SQL 默认只读,必须限制结果行数并执行安全校验。 - AI 生成同步任务或工作流只能进入草稿/预览状态,不可直接提交生产执行。 - 所有新增接口必须提供 OpenAPI 文档;所有数据库变更必须提供 Migration。 ## 11. 演示闭环 MVP 完成后应能演示: ```text 1. 登录 DataPilot 2. 创建或登记 MySQL、Doris 等数据源 3. 用页面或 AI 描述同步需求 4. 生成并审查 SeaTunnel 配置草稿 5. 保存版本并绑定 DolphinScheduler 调度工作流 6. 查看任务实例、状态、日志和失败原因 7. 从 OpenMetadata 查看表、字段、标签和血缘 8. 用自然语言生成并执行受控只读 SQL 9. 查看 AI 生成 SQL、表格、图表及解释 10. 将 DataPilot 通过 Helm 部署到 Kubernetes ``` ## 12. 当前开发顺序 ```text 基础工程与开发规范 ↓ SoybeanJS + Naive UI 接入 ↓ 用户权限与审计 ↓ 统一数据源管理 ↓ SeaTunnel Adapter 与配置草稿 ↓ DolphinScheduler Adapter 与任务运维 ↓ OpenMetadata 查询 ↓ SQL Agent 与任务诊断 ↓ Kubernetes / Helm 部署完善 ``` ## 13. 第一阶段基础工程 本仓库已按第一阶段目标初始化以下目录: ```text datapilot-web/ # SoybeanAdmin + Vue 3 + TypeScript + Naive UI datapilot-server/ # Java 21 + Spring Boot 3.5.3 模块化单体 deploy/k8s/ # Kubernetes YAML 骨架 deploy/helm/datapilot/ docs/development/ docs/integrations/ ``` 本地依赖只包含 DataPilot 自身需要的 PostgreSQL、Redis、MinIO: ```bash cp .env.example .env docker compose up -d postgres redis minio ``` 后端启动: ```powershell $env:JAVA_HOME='D:\DevSoft\Env\zulu21' $env:Path="$env:JAVA_HOME\bin;$env:Path" cd datapilot-server mvn package -DskipTests=false $env:SERVER_PORT='19080' java -jar .\datapilot-bootstrap\target\datapilot-bootstrap-0.1.0-SNAPSHOT.jar ``` 前端启动: ```powershell cd datapilot-web C:\Users\evanw\.cache\codex-runtimes\codex-primary-runtime\dependencies\bin\pnpm.cmd install C:\Users\evanw\.cache\codex-runtimes\codex-primary-runtime\dependencies\bin\pnpm.cmd dev ``` 第三方平台在第一阶段仅实现连接配置、连通性测试、只读发现和状态展示。未确认 DolphinScheduler、SeaTunnel、OpenMetadata 的实际 API 路径、版本和认证方式前,不实现任务提交、运行、日志或工作流变更接口。 新增三方平台内嵌入口仍复用“平台集成 / 连接配置”中的地址: ```text /data-access # 数据接入,内嵌 SeaTunnel Web /task-scheduler # 任务调度,内嵌 DolphinScheduler /metadata-portal # 元数据,内嵌 OpenMetadata /platform/connections # 连接配置、连通性测试、只读发现、外部新窗口打开 ``` 菜单管理入口: ```text /system/menus # 菜单管理,维护 sys_menu 与前端页面路由的绑定 ``` 约定:新增前端页面路由后,在菜单管理中点击“同步当前前端路由”,再调整名称、图标、父级和排序。前端页面组件仍由静态路由提供,左侧菜单显示由后端 `sys_menu` 控制。