deepdata: product docs, rebranded quick start, security policy
CodeQL Advanced / Analyze (actions) (push) Canceled after 0s
CodeQL Advanced / Analyze (java-kotlin) (push) Canceled after 0s
CodeQL Advanced / Analyze (javascript-typescript) (push) Canceled after 0s
CodeQL Advanced / Analyze (python) (push) Canceled after 0s

This commit is contained in:
figmar
2026-08-30 19:23:42 +08:00
parent 7bbc9d4ef0
commit e1d21036f8
9 changed files with 1256 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true
[*.{java,kt}]
indent_size = 4
[*.{py}]
indent_size = 4
[*.{md}]
trim_trailing_whitespace = false
[Makefile]
indent_style = tab
+204
View File
@@ -0,0 +1,204 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
# next.js build output
.next
# Java
*.class
*.jar
*.war
*.ear
*.zip
*.tar.gz
*.rar
# Maven
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# Gradle
.gradle
build/
!gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/
# IntelliJ IDEA
.idea
*.iws
*.iml
*.ipr
out/
# Eclipse
.project
.classpath
.c9/
*.launch
.settings/
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.settings/
.loadpath
.recommenders
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyEnv
.python-version
# pipenv
Pipfile.lock
# Celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Docker
*.dockerignore
# OS
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
# IDE
.vscode/
*.sublime-project
*.sublime-workspace
# Milvus
**/volumes/
**/rag_storage/
# Environment files - ignore local .env, but allow templates
.env
!.env.example
# AI tools/agent
.agents/
.claude/
data/
openspec/
devspace.yaml
+251
View File
@@ -0,0 +1,251 @@
# 开发指南
本文档为 DeepData 提供全面的本地开发环境搭建和工作流程指南,涵盖 Java、Python、React 三种语言。
## 概述
DeepData 是由多语言(Java 后端、Python 运行时、React 前端)组成的微服务项目,通过 Docker Compose 进行本地开发协调。
## 前置条件
- Git (用于拉取源码)
- Make (用于构建和安装)
- Docker (用于构建镜像和部署服务)
- Docker Compose (用于部署服务 - docker 方式)
- Kubernetes (用于部署服务 - k8s 方式)
- Helm (用于部署服务 - k8s 方式)
注意:
- 确保 Java 和 Python 环境在系统 PATH 中(如适用)
- Docker Compose 将编排本地开发栈
## 快速开始
### 1. 克隆仓库并安装依赖
```bash
git clone https://gitea.apescale.com/figmar/deepdata.git
cd deepdata
```
### 2. 启动基础服务
```bash
make install
```
本项目支持 docker-compose 和 helm 两种方式部署,请在执行命令后输入部署部署方式的对应编号,命令回显如下所示:
```shell
Choose a deployment method:
1. Docker/Docker-Compose
2. Kubernetes/Helm
Enter choice:
```
若您使用的机器没有 make,您也可以执行如下命令部署:
git clone https://gitea.apescale.com/figmar/deepdata.git
docker compose -f deployment/docker/deepdata/docker-compose.yml --profile milvus up -d
```
当容器运行后,请在浏览器打开 http://localhost:30000 查看前端界面。
### 3. 本地开发部署
本地代码修改后,请执行以下命令构建镜像并使用本地镜像部署:
git clone https://gitea.apescale.com/figmar/deepdata.git
make build
make install dev=true
```
### 4. 卸载服务
git clone https://gitea.apescale.com/figmar/deepdata.git
make uninstall
```
在运行 `make uninstall` 时,卸载流程会只询问一次是否删除卷(数据),该选择会应用到所有组件。卸载顺序为:milvus -> label-studio -> deepdata,确保在移除 deepdata 网络前,所有使用该网络的服务已先停止。
## 项目结构
```
DeepData/
├── backend/ # Java 后端
│ ├── api-gateway/ # API Gateway
│ ├── services/ # 核心服务
│ └── shared/ # 共享库
├── runtime/ # Python 运行时
│ ├── deepdata-python/ # FastAPI 后端
│ ├── python-executor/ # Ray 执行器
│ ├── ops/ # 算子生态
│ ├── datax/ # DataX 框架
│ └── deepflow # DeepFlow 服务
├── frontend/ # React 前端
├── deployment/ # 部署配置
└── docs/ # 文档
```
## 开发工作流程
### Java 后端开发
git clone https://gitea.apescale.com/figmar/deepdata.git
# 构建
cd backend
mvn clean install
# 运行测试
mvn test
# 运行特定服务
cd backend/services/main-application
mvn spring-boot:run
```
### Python 运行时开发
git clone https://gitea.apescale.com/figmar/deepdata.git
# 安装依赖
cd runtime/deepdata-python
poetry install
# 运行服务
poetry run uvicorn app.main:app --reload --port 18000
# 运行测试
poetry run pytest
```
### React 前端开发
git clone https://gitea.apescale.com/figmar/deepdata.git
# 安装依赖
cd frontend
npm ci
# 运行开发服务器
npm run dev
# 构建生产版本
npm run build
```
### Docker Compose 开发
git clone https://gitea.apescale.com/figmar/deepdata.git
# 启动所有服务
docker compose up -d
# 查看日志
docker compose logs -f [service-name]
# 停止所有服务
docker compose down
```
## 环境配置
每个组件可以有自己的环境变量文件。不要提交包含密钥的 .env 文件。
### 后端(Java)
- **路径**: `backend/.env`
- **典型密钥**:
- `DB_URL`: 数据库连接字符串
- `DB_USER`: 数据库用户名
- `DB_PASSWORD`: 数据库密码
- `REDIS_URL`: Redis 连接字符串
- `REDIS_PASSWORD`: Redis 密码
- `JWT_SECRET`: JWT 密钥
### 运行时(Python)
- **路径**: `runtime/deepdata-python/.env`
- **典型密钥**:
- `DATABASE_URL`: PostgreSQL 连接字符串
- `RAY_ENABLED`: 是否启用 Ray 执行器
- `RAY_ADDRESS`: Ray 集群地址
- `LABEL_STUDIO_BASE_URL`: Label Studio 基础 URL
### 前端(React)
- **路径**: `frontend/.env`
- **典型密钥**:
- `VITE_API_BASE_URL`: API 基础 URL
- `VITE_RUNTIME_API_URL`: 运行时 API 基础 URL
## 测试
### Java(JUnit 5)
git clone https://gitea.apescale.com/figmar/deepdata.git
cd backend
mvn test
```
### Python(pytest)
git clone https://gitea.apescale.com/figmar/deepdata.git
cd runtime/deepdata-python
poetry run pytest
```
### 前端
当前未配置测试框架。
## 调试
### Java 后端
git clone https://gitea.apescale.com/figmar/deepdata.git
# 启用 JDWP 调试端口 5005
export JAVA_TOOL_OPTIONS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005'
java -jar backend/main-application/target/*.jar
```
### Python 运行时
git clone https://gitea.apescale.com/figmar/deepdata.git
# 启用 debugpy 监听端口 5678
cd runtime/deepdata-python
python -m debugpy --listen 5678 --wait-for-client -m uvicorn app.main:app --reload --port 18000 --host 0.0.0.0
```
### React 前端
使用浏览器开发者工具或 VS Code 调试器。
## 常见问题
### 端口冲突
检查哪个进程正在使用端口:
git clone https://gitea.apescale.com/figmar/deepdata.git
lsof -i TCP:8080
lsof -i TCP:18000
lsof -i TCP:5173
```
停止或重新配置冲突的服务。
### 数据库连接失败
确保 `.env` 包含正确的 `DATABASE_URL` 和凭据;确保数据库服务在 Docker Compose 中已启动。
### Ray 集群问题
确保 Ray 已正确启动;检查 Ray 工作进程日志;确保 `RAY_ADDRESS` 配置正确。
## 文档
- **核心文档**:
- [ARCHITECTURE.md](./ARCHITECTURE.md) - 系统架构、微服务通信、数据流
- [DEVELOPMENT.md](./DEVELOPMENT.md) - 本地开发环境搭建和工作流程
- [AGENTS.md](./AGENTS.md) - AI 助手指南和代码规范
- **后端文档**:
- [backend/README.md](./backend/README.md) - 后端架构、服务和技术栈
- [backend/api-gateway/README.md](./backend/api-gateway/README.md) - API Gateway 配置和路由
- [backend/services/main-application/README.md](./backend/services/main-application/README.md) - 主应用模块
- [backend/shared/README.md](./backend/shared/README.md) - 共享库(domain-common, security-common)
- **运行时文档**:
- [runtime/README.md](./runtime/README.md) - 运行时架构和组件
- [runtime/deepdata-python/README.md](./runtime/deepdata-python/README.md) - FastAPI 后端服务
- [runtime/python-executor/README.md](./runtime/python-executor/README.md) - Ray 执行器框架
- [runtime/ops/README.md](./runtime/ops/README.md) - 算子生态
- [runtime/datax/README.md](./runtime/datax/README.md) - DataX 数据框架
- [runtime/deepflow/README.md](./runtime/deepflow/README.md) - DeepFlow LLM 服务
- **前端文档**:
- [frontend/README.md](./frontend/README.md) - React 前端应用
## 贡献指南
感谢您对本项目的关注!我们非常欢迎社区的贡献,无论是提交 Bug 报告、提出功能建议,还是直接参与代码开发,都能帮助项目变得更好。
• 📮 [GitHub Issues](../../issues):提交 Bug 或功能建议。
• 🔧 [GitHub Pull Requests](../../pulls):贡献代码改进。
## 许可证
DeepData 基于 [MIT](LICENSE) 开源,您可以在遵守许可证条款的前提下自由使用、修改和分发本项目的代码。
+181
View File
@@ -0,0 +1,181 @@
# DEVELOPMENT GUIDE for DeepData
This document provides a comprehensive development guide for DeepData, a polyglot, microservices-based project consisting of Java, Python, and React components. It describes how to set up, build, test, run, and contribute in a local Docker Compose-based environment, without exposing secrets.
<!-- NOTE: This file is intended as a high-level guide. Do not duplicate content from component READMEs; reference them where appropriate. -->
## Overview
DeepData is composed of multiple services (Java backend, Python runtime, and React frontend) coordinated via Docker Compose for local development. The guide below covers prerequisites, quick-start steps, project structure, development workflow, environment configuration, testing, debugging, common issues, documentation, contribution workflow, and licensing.
Refer to the component READMEs for detailed implementation notes:
- Backend: backend/README.md
- Runtime: runtime/deepdata-python/README.md
- Frontend: frontend/README.md
For code style guidelines, see AGENTS.md in the repository root.
## Prerequisites
- Java Development: JDK 21 and Maven
- Python: Python 3.12 and Poetry
- Node.js: Node.js 18
- Docker and Docker Compose
- Optional: Make (for convenience)
Notes:
- Ensure Java and Python environments are on the system PATH where applicable.
- Docker Compose will orchestrate the local development stack.
## Quick Start
1) Clone the repository and install dependencies:
- git clone https://gitea.apescale.com/figmar/deepdata.git
- cd datemate
- (Optional) Create and activate a Python virtual environment if not using Poetry-managed envs.
- Build dependencies per component as described below.
2) Start the local stack with Docker Compose:
- docker compose up -d
- This brings up the Java backend, Python runtime, and React frontend services along with any required databases and caches as defined in the docker-compose.yml.
3) Start individual components (if you prefer not to use the Docker stack):
- Java backend
- mvn -f backend/pom.xml -DskipTests package
- Run the main application (path may vary): java -jar backend/main-application/target/*.jar
- Python runtime
- cd runtime/deepdata-python
- poetry install
- uvicorn app.main:app --reload --port 18000 --host 0.0.0.0
- React frontend
- cd frontend
- npm ci
- npm run dev
4) Stop the stack:
- docker compose down
> Tip: In a team setting, prefer Docker Compose for consistency across development environments.
## Project Structure
- backend/
- frontend/
- runtime/
- deployment/
- docs/
- AGENTS.md (code style guidelines)
- docker/ (docker-related tooling)
- .env* files (per-component configurations, see Environment Configuration section)
This is a polyglot project with the following language footprints:
- Java for the backend services under backend/
- Python for the runtime under runtime/deepdata-python/
- React/TypeScript for the frontend under frontend/
## Development Workflow
Language-specific workflows:
- Java (Backend)
- Build: mvn -f backend/pom.xml -DskipTests package
- Test: mvn -f backend/pom.xml test
- Run: mvn -f backend/pom.xml -Dexec.mainClass=... spring-boot:run (or run the packaged jar)
- Python (Runtime)
- Install: cd runtime/deepdata-python && poetry install
- Test: pytest
- Run: uvicorn app.main:app --reload --port 18000 --host 0.0.0.0
- Frontend (React)
- Install: cd frontend && npm ci
- Test: No frontend tests configured
- Build: npm run build
- Run: npm run dev
General tips:
- Use Docker Compose for a repeatable local stack.
- Run linters and tests before creating PRs.
- Keep dependencies in sync across environments.
## Environment Configuration
Each component can have its own environment file(s). Do not commit secrets. Use sample/.env.example files as references when available.
- Backend
- Path: backend/.env (example keys below)
- Typical keys: DB_URL, DB_USER, DB_PASSWORD, JWT_SECRET, REDIS_URL, CLOUD_STORAGE_ENDPOINT
- Runtime (Python)
- Path: runtime/deepdata-python/.env
- Typical keys: DATABASE_URL, RAY_ADDRESS, CELERY_BROKER_URL, APP_SETTINGS
- Frontend
- Path: frontend/.env
- Typical keys: VITE_API_BASE_URL, VITE_DEFAULT_LOCALE, NODE_ENV
Notes:
- Copy the corresponding .env.example to .env and fill in values as needed.
- Do not commit .env files containing secrets.
## Testing
- Java: JUnit 5 tests run via Maven (mvn test).
- Python: pytest in runtime/deepdata-python/test or relevant tests.
- Frontend: No frontend tests configured in this repo.
## Code Style
Code style follows the repository-wide guidelines described in AGENTS.md. See:
- AGENTS.md (root): Code style guidelines for all languages.
- Java: Follow Java conventions in backend/ and accordance with project conventions.
- Python: Follow PEP 8 and project-specific conventions in runtime/deepdata-python.
- React: Follow the frontend conventions in frontend/ (TypeScript/TSX).
Link to guidelines: AGENTS.md
## Debugging
- Java (Backend): Enable JPDA debugging by starting the JVM with a debug port and attach a debugger.
- Example (local): export JAVA_TOOL_OPTIONS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005' && java -jar path/to/app.jar
- Attach with IDE on port 5005 after launch.
- Python (Runtime): Run with debugpy listening on port 5678 to attach from IDEs.
- Example: cd runtime/deepdata-python && poetry install
python -m debugpy --listen 5678 --wait-for-client -m uvicorn app.main:app --reload --port 18000 --host 0.0.0.0
- Frontend (React): Use Node inspector to debug front-end code in dev server.
- Example: npm run dev -- --inspect-brk=9229
Tips: Use your preferred IDEs (IntelliJ/VSCode/WebStorm) to attach to the running processes on their respective ports.
## Common Issues
- Port conflicts: Check which process is using a port with lsof -i TCP:<PORT> or ss -ltnp. Stop or reconfigure conflicting services.
- Database connection errors: Ensure .env contains correct DATABASE_URL and credentials; ensure the database service is up in Docker Compose.
- Ray cluster issues (Python runtime): Ensure Ray is started and accessible at the configured RAY_ADDRESS; check logs for worker failures and bootstrap status.
## Documentation
Component READMEs provide detailed usage and design decisions. See:
- backend/README.md
- runtime/deepdata-python/README.md
- frontend/README.md
- deployment/README.md
## Contributing
Contributions follow a PR workflow:
- Create a feature/bugfix branch from main (e.g., feature/new-action)
- Implement changes with tests where applicable
- Run unit tests for the changed components
- Open a PR with a clear description of the changes and the rationale
- Ensure CI checks pass (build, unit tests, lint)
- Obtain reviews and address feedback
- Merge to main after approval
## License
Apache 2.0
---
References:
- AGENTS.md for code style guidelines: AGENTS.md
- Java dependencies: backend/pom.xml
- Node dependencies: frontend/package.json
- Python dependencies: runtime/deepdata-python/pyproject.toml
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 deepdata contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+187
View File
@@ -0,0 +1,187 @@
# DeepData 一站式数据工作平台
<div align="center">
![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)
![Backend: Spring Boot 3](https://img.shields.io/badge/backend-Spring%20Boot%203-blue)
![Frontend: React](https://img.shields.io/badge/frontend-React%2018-61DAFB)
![Python: 3.12](https://img.shields.io/badge/python-3.12+-blue)
**DeepData是面向模型微调与RAG检索的企业级数据处理平台,支持数据归集、数据管理、算子市场、数据清洗、数据合成、数据标注、数据评估、知识生成等核心功能。**
[简体中文](./README-zh.md) | [English](./README.md)
如果您喜欢这个项目,希望您能给我们一个Star⭐️!
</div>
## 🌟 核心特性
- **核心模块**:数据归集、数据管理、算子市场、数据清洗、数据合成、数据标注、数据评估、知识生成
- **可视化编排**:拖拽式数据处理流程设计
- **算子生态**:丰富的内置算子和自定义算子支持
## 🚀 快速开始
### 前置条件
- Git (用于拉取源码)
- Make (用于构建和安装)
- Docker (用于构建镜像和部署服务)
- Docker-Compose (用于部署服务-docker方式)
- Kubernetes (用于部署服务-k8s方式)
- Helm (用于部署服务-k8s方式)
- **K8s 部署额外需要**: [Sealed Secrets Controller](https://github.com/bitnami-labs/sealed-secrets)(用于加密管理敏感配置)
### 密钥管理(仅 K8s 部署需要)
DeepData K8s 部署使用 **Bitnami Sealed Secrets** 管理数据库密码、JWT 密钥等敏感信息。所有密钥以加密形式存储在 Git 中(`deployment/kubernetes/sealed-secrets/`),部署时由集群内的 Sealed Secrets Controller 自动解密。
**在线环境安装 Sealed Secrets Controller:**
```bash
# 通过 Helm 安装(推荐)
helm repo add sealed-secrets https://bitnami-labs.github.io/sealed-secrets
helm install sealed-secrets sealed-secrets/sealed-secrets -n kube-system
# 验证安装
kubectl get pods -n kube-system | grep sealed-secrets
```
**离线环境:**
1. 在有网络的机器上下载 Sealed Secrets 镜像:
```bash
# 下载 controller 镜像(约 60MB)
docker pull bitnami/sealed-secrets-controller:latest
docker save bitnami/sealed-secrets-controller:latest -o sealed-secrets-controller.tar
# 下载 kubeseal 工具(用于更新密钥)
# macOS:
brew install kubeseal
# Linux:
wget https://github.com/bitnami-labs/sealed-secrets/releases/latest/download/kubeseal-linux-amd64
```
2. 将镜像导入离线环境的镜像仓库,通过 Helm 安装时指定镜像地址。
**更新密钥:**
```bash
# 如果数据库密码等敏感信息发生变更,使用 kubeseal 重新加密
echo -n "new-password" | kubeseal --raw --name deepdata-conf --namespace deepdata --scope namespace-wide
```
> 注意:Docker 部署方式不需要 Sealed Secrets,密钥统一通过 `.env` 文件管理(已在 `.gitignore` 中排除)。
### Docker一键部署
```shell
make build # Build all images from this repository
make install # Deploy base services (deepdata + milvus)
```
> Images are built from source in this repository — no external registry is required.
### 拉取代码
```bash
git clone https://gitea.apescale.com/figmar/deepdata.git
cd deepdata
```
### 部署基础服务
```bash
make install
```
本项目支持docker-compose和helm两种方式部署,请在执行命令后输入部署方式的对应编号,命令回显如下所示:
```shell
Choose a deployment method:
1. Docker/Docker-Compose
2. Kubernetes/Helm
Enter choice:
```
若您使用的机器没有make,您也可以执行如下命令部署:
```bash
docker compose -f deployment/docker/deepdata/docker-compose.yml --profile milvus up -d
```
当容器运行后,请在浏览器打开 http://localhost:30000 查看前端界面。
要查看所有可用的 Make 目标、选项和帮助信息,请运行:
```bash
make help
```
如果您是离线环境,您可以执行如下命令下载所有依赖的镜像:
```bash
make download
```
### 部署Label Studio作为标注工具
```bash
make install-label-studio
```
### 构建并部署Mineru增强pdf处理
```bash
make build-mineru
make install-mineru
```
### 部署DeepFlow服务
```bash
make install-deepflow
```
### 本地开发部署
本地代码修改后,请执行以下命令构建镜像并使用本地镜像部署
```bash
make build
make install dev=true
```
### 卸载服务
```bash
make uninstall
```
在运行 `make uninstall` 时,卸载流程会只询问一次是否删除卷(数据),该选择会应用到所有组件。卸载顺序为:milvus -> label-studio -> deepdata,确保在移除 deepdata 网络前,所有使用该网络的服务已先停止。
## 📚 文档
### 核心文档
- **[DEVELOPMENT.md](./DEVELOPMENT.md)** - 本地开发环境搭建和工作流程
- **[AGENTS.md](./AGENTS.md)** - AI 助手指南和代码规范
### 后端文档
- **[backend/README-zh.md](./backend/README-zh.md)** - 后端架构、服务和技术栈
- **[backend/api-gateway/README-zh.md](./backend/api-gateway/README-zh.md)** - API Gateway 配置和路由
- **[backend/services/main-application/README-zh.md](./backend/services/main-application/README-zh.md)** - 主应用模块
- **[backend/shared/README-zh.md](./backend/shared/README-zh.md)** - 共享库(domain-common, security-common)
### 运行时文档
- **[runtime/README-zh.md](./runtime/README-zh.md)** - 运行时架构和组件
- **[runtime/deepdata-python/README-zh.md](./runtime/deepdata-python/README-zh.md)** - FastAPI 后端服务
- **[runtime/python-executor/README-zh.md](./runtime/python-executor/README-zh.md)** - Ray 执行器框架
- **[runtime/ops/README.md](./runtime/ops/README.md)** - 算子生态
- **[runtime/datax/README-zh.md](./runtime/datax/README-zh.md)** - DataX 数据框架
- **[runtime/deepflow/README-zh.md](./runtime/deepflow/README-zh.md)** - DeepFlow LLM 服务
### 前端文档
- **[frontend/README-zh.md](./frontend/README-zh.md)** - React 前端应用
## 🤝 贡献指南
感谢您对本项目的关注!我们非常欢迎社区的贡献,无论是提交 Bug 报告、提出功能建议,还是直接参与代码开发,都能帮助项目变得更好。
• 📮 [GitHub Issues](../../issues):提交 Bug 或功能建议。
• 🔧 [GitHub Pull Requests](../../pulls):贡献代码改进。
## 📄 许可证
DeepData 基于 [MIT](LICENSE) 开源,您可以在遵守许可证条款的前提下自由使用、修改和分发本项目的代码。
+193
View File
@@ -0,0 +1,193 @@
# DeepData All-in-One Data Work Platform
<div align="center">
![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)
![Backend: Spring Boot 3](https://img.shields.io/badge/backend-Spring%20Boot%203-blue)
![Frontend: React](https://img.shields.io/badge/frontend-React%2018-61DAFB)
![Python: 3.12](https://img.shields.io/badge/python-3.12+-blue)
**DeepData is an enterprise-level data processing platform for model fine-tuning and RAG retrieval, supporting core
functions such as data collection, data management, operator marketplace, data cleaning, data synthesis, data
annotation, data evaluation, and knowledge generation.**
[简体中文](./README-zh.md) | [English](./README.md)
If you like this project, please give it a Star⭐️!
</div>
## 🌟 Core Features
- **Core Modules**: Data Collection, Data Management, Operator Marketplace, Data Cleaning, Data Synthesis, Data
Annotation, Data Evaluation, Knowledge Generation.
- **Visual Orchestration**: Drag-and-drop data processing workflow design.
- **Operator Ecosystem**: Rich built-in operators and support for custom operators.
## 🚀 Quick Start
### Prerequisites
- Git (for pulling source code)
- Make (for building and installing)
- Docker (for building images and deploying services)
- Docker-Compose (for service deployment - Docker method)
- Kubernetes (for service deployment - k8s method)
- Helm (for service deployment - k8s method)
- **K8s deployment additionally requires**: [Sealed Secrets Controller](https://github.com/bitnami-labs/sealed-secrets) (for encrypted secret management)
### Secret Management (K8s deployment only)
DeepData K8s deployment uses **Bitnami Sealed Secrets** to manage sensitive configuration such as database passwords and JWT secrets. All secrets are stored in encrypted form in Git (`deployment/kubernetes/sealed-secrets/`) and automatically decrypted by the Sealed Secrets Controller in the cluster at deploy time.
**Online environment - install Sealed Secrets Controller:**
```bash
# Install via Helm (recommended)
helm repo add sealed-secrets https://bitnami-labs.github.io/sealed-secrets
helm install sealed-secrets sealed-secrets/sealed-secrets -n kube-system
# Verify installation
kubectl get pods -n kube-system | grep sealed-secrets
```
**Air-gapped / offline environment:**
1. Download the Sealed Secrets image on an internet-connected machine:
```bash
# Download controller image (~60MB)
docker pull bitnami/sealed-secrets-controller:latest
docker save bitnami/sealed-secrets-controller:latest -o sealed-secrets-controller.tar
# Download kubeseal CLI (for updating secrets)
# macOS:
brew install kubeseal
# Linux:
wget https://github.com/bitnami-labs/sealed-secrets/releases/latest/download/kubeseal-linux-amd64
```
2. Transfer the image to your offline registry, then install via Helm with the custom image reference.
**Updating secrets:**
```bash
# When passwords change, re-encrypt with kubeseal
echo -n "new-password" | kubeseal --raw --name deepdata-conf --namespace deepdata --scope namespace-wide
```
> Note: Docker deployments do not require Sealed Secrets — secrets are managed via the `.env` file (excluded from Git via `.gitignore`).
### Docker Quick deploy
```shell
make build # Build all images from this repository
make install # Deploy base services (deepdata + milvus)
```
> Images are built from source in this repository — no external registry is required.
### Clone the Code
```bash
git clone https://gitea.apescale.com/figmar/deepdata.git
cd deepdata
```
### Deploy the basic services
```bash
make install
```
This project supports deployment via two methods: docker-compose and helm. After executing the command, please enter the corresponding number for the deployment method. The command echo is as follows:
```shell
Choose a deployment method:
1. Docker/Docker-Compose
2. Kubernetes/Helm
Enter choice:
```
If the machine you are using does not have make installed, please run the following command to deploy it:
```bash
docker compose -f deployment/docker/deepdata/docker-compose.yml --profile milvus up -d
```
Once the container is running, access http://localhost:30000 in a browser to view the front-end interface.
To list all available Make targets, flags and help text, run:
```bash
make help
```
If you are in an offline environment, you can run the following command to download all dependent images:
```bash
make download
```
### Deploy Label Studio as an annotation tool
```bash
make install-label-studio
```
### Build and deploy Mineru Enhanced PDF Processing
```bash
make build-mineru
make install-mineru
```
### Deploy the DeepFlow service
```bash
make install-deepflow
```
### Local Development and Deployment
After modifying the local code, please execute the following commands to build the image and deploy using the local image.
```bash
make build
make install dev=true
```
### Uninstall
```bash
make uninstall
```
When running make uninstall, the installer will prompt once whether to delete volumes; that single choice is applied to all components. The uninstall order is: milvus -> label-studio -> deepdata, which ensures the deepdata network is removed cleanly after services that use it have stopped.
## 📚 Documentation
### Core Documentation
- **[DEVELOPMENT.md](./DEVELOPMENT.md)** - Local development environment setup and workflow
- **[AGENTS.md](./AGENTS.md)** - AI assistant guidelines and code style
### Backend Documentation
- **[backend/README.md](./backend/README.md)** - Backend architecture, services, and technology stack
- **[backend/api-gateway/README.md](./backend/api-gateway/README.md)** - API Gateway configuration and routing
- **[backend/services/main-application/README.md](./backend/services/main-application/README.md)** - Main application modules
- **[backend/shared/README.md](./backend/shared/README.md)** - Shared libraries (domain-common, security-common)
### Runtime Documentation
- **[runtime/README.md](./runtime/README.md)** - Runtime architecture and components
- **[runtime/deepdata-python/README.md](./runtime/deepdata-python/README.md)** - FastAPI backend service
- **[runtime/python-executor/README.md](./runtime/python-executor/README.md)** - Ray executor framework
- **[runtime/ops/README.md](./runtime/ops/README.md)** - Operator ecosystem
- **[runtime/datax/README.md](./runtime/datax/README.md)** - DataX data framework
- **[runtime/deepflow/README.md](./runtime/deepflow/README.md)** - DeepFlow LLM service
### Frontend Documentation
- **[frontend/README.md](./frontend/README.md)** - React frontend application
## 🤝 Contribution Guidelines
Thank you for your interest in this project! We warmly welcome contributions from the community. Whether it's submitting
bug reports, suggesting new features, or directly participating in code development, all forms of help make a project
better.
• 📮 [GitHub Issues](../../issues): Submit bugs or feature suggestions.
• 🔧 [GitHub Pull Requests](../../pulls): Contribute code improvements.
## 📄 License
DeepData is open source under the [MIT](LICENSE) license. You are free to use, modify, and distribute the code of this
project in compliance with the license terms.
+32
View File
@@ -0,0 +1,32 @@
# Security Policy
## Supported Versions
Only the latest release of deepdata is supported with security updates.
| Version | Supported |
| ------- | ------------------ |
| latest | :white_check_mark: |
| older | :x: |
## Reporting a Vulnerability
Please **do not** report security vulnerabilities through public GitHub-style
issue trackers or pull requests.
Report suspected security vulnerabilities privately by opening a Gitea issue
with the `security` label on this repository:
```
https://gitea.apescale.com/figmar/deepdata/issues
```
Include in your report:
- A description of the vulnerability and its impact
- The affected component and version
- Steps or a proof of concept to reproduce the issue (where possible)
We aim to acknowledge all reports within 3 business days and will keep you
updated on the status of your report. Please do not disclose a vulnerability
publicly until we have confirmed a fix or completed an assessment.
+166
View File
@@ -0,0 +1,166 @@
# Secrets Management Setup Guide
This document describes the tools and configuration required for managing encrypted secrets in DeepData.
## Required Tools
### Homebrew Packages (macOS)
| Tool | Version | Purpose | Install Command |
|------|---------|---------|-----------------|
| age | 1.3.1 | Encryption tool for secrets | `brew install age` |
| sops | 3.13.1 | Secrets encryption manager | `brew install sops` |
| helm | 4.1.0+ | Kubernetes package manager | `brew install helm` |
### Helm Plugins
| Plugin | Version | Purpose | Install Method |
|--------|---------|---------|----------------|
| helm-secrets | 4.6.0 | Helm integration with sops | Manual clone (see below) |
**Note:** Helm 4.x has compatibility issues with helm-secrets plugin. Use manual installation:
```bash
cd /Users/macoo/Library/helm/plugins
git clone --depth 1 --branch v4.6.0 https://github.com/jkroepke/helm-secrets.git helm-secrets
```
If plugin fails to load, edit `plugin.yaml` to remove the `command:` field and use only `platformCommand:`.
## Project Configuration Files
| File | Purpose | Location |
|------|---------|----------|
| `.sops.yaml` | SOPS encryption rules | Project root |
| `.sops-keys/key.txt` | Age encryption key (private) | Project root (gitignored) |
| `secrets.yaml` | Encrypted secrets per chart | `deployment/helm/<chart>/` |
## Quick Setup
### 1. Install Required Tools
```bash
# macOS (Homebrew)
brew install age sops helm
# Helm plugin (manual)
cd ~/Library/helm/plugins
git clone --depth 1 --branch v4.6.0 https://github.com/jkroepke/helm-secrets.git helm-secrets
```
### 2. Generate Age Key (if not exists)
```bash
mkdir -p .sops-keys
age-keygen -o .sops-keys/key.txt
```
**Important:** Backup the key file securely. It cannot be recovered if lost.
### 3. Update `.sops.yaml` with Your Public Key
```yaml
creation_rules:
- path_regex: deployment/helm/.*\.yaml$
age: <your-public-key-from-key.txt>
```
### 4. Create/Encrypt Secrets Files
```bash
# Set environment variable
export SOPS_AGE_KEY_FILE=.sops-keys/key.txt
# Encrypt existing file
sops --encrypt --in-place deployment/helm/deepdata/secrets.yaml
# Or create new encrypted file
sops deployment/helm/deepdata/secrets.yaml
```
## Usage
### View Decrypted Secrets
```bash
SOPS_AGE_KEY_FILE=.sops-keys/key.txt sops --decrypt deployment/helm/deepdata/secrets.yaml
```
### Deploy with Secrets
```bash
# Using helper script
./scripts/secrets.sh helm-install deepdata deepdata
# Manual method
TMP_FILE=$(mktemp)
SOPS_AGE_KEY_FILE=.sops-keys/key.txt sops --decrypt deployment/helm/deepdata/secrets.yaml > $TMP_FILE
helm install deepdata deployment/helm/deepdata -n deepdata -f $TMP_FILE
rm $TMP_FILE
```
### Docker Compose
```bash
# Copy and edit .env
cp deployment/docker/deepdata/.env.example deployment/docker/deepdata/.env
# Edit with your secrets
vim deployment/docker/deepdata/.env
# Deploy
docker compose -f deployment/docker/deepdata/docker-compose.yml up -d
```
## Environment Variables
| Variable | Purpose |
|----------|---------|
| `SOPS_AGE_KEY_FILE` | Path to age private key |
| `SOPS_CONFIG` | Path to .sops.yaml (optional) |
## Security Notes
1. **Never commit `.sops-keys/` directory** - It's in `.gitignore`
2. **Backup your age key** - Store in secure location (password manager, encrypted backup)
3. **Use strong passwords** - Generate with `openssl rand -base64 32`
4. **Rotate keys periodically** - Especially after team changes
## Troubleshooting
### Plugin Load Error
If helm plugin shows "both platformCommand and command are set":
```bash
# Edit plugin.yaml
vim ~/Library/helm/plugins/helm-secrets/plugin.yaml
# Remove the "command:" line, keep only "platformCommand:"
```
### Decryption Failed
```bash
# Check key file exists
ls -la .sops-keys/key.txt
# Verify key matches encrypted file's recipient
grep "recipient:" deployment/helm/deepdata/secrets.yaml
```
### Key Rotation
```bash
# Generate new key
age-keygen -o .sops-keys/key-new.txt
# Update .sops.yaml with new public key
# Re-encrypt all secrets
for f in deployment/helm/*/secrets.yaml; do
SOPS_AGE_KEY_FILE=.sops-keys/key.txt sops --decrypt $f > /tmp/plain.yaml
SOPS_AGE_KEY_FILE=.sops-keys/key-new.txt sops --encrypt /tmp/plain.yaml > $f
done
# Replace old key
mv .sops-keys/key-new.txt .sops-keys/key.txt
```