- 将 starter 初始化脚本迁移到 db/migration,并保留 V1-V3 作为首批迁移 - 清理旧 sql/initdb 挂载与历史分段 SQL,避免 Docker 启动时重复导库 - 更新 README、应用配置和中间件编排,统一空库启动方式
149 lines
3.9 KiB
Markdown
149 lines
3.9 KiB
Markdown
# EasyFlow
|
||
|
||
EasyFlow 是一个面向企业场景的 Java AI 应用开发平台,提供智能体、工作流编排、知识库(RAG)、插件调用、MCP 接入和系统管理能力。
|
||
当前后端已基于 `easy-agents` 与 `easy-agents-flow` 生态进行整合。
|
||
|
||
## 核心模块
|
||
|
||
### 后端聚合模块
|
||
- `easyflow-api`:对外 API 层,包含 admin/public/usercenter/mcp 接口。
|
||
- `easyflow-commons`:公共能力层(基础工具、AI 公共组件、缓存、文件存储、验证码、鉴权等)。
|
||
- `easyflow-modules`:业务模块层(AI、系统、日志、任务、数据中心、认证等)。
|
||
- `easyflow-starter`:启动层,`easyflow-starter-all` 为完整可运行服务。
|
||
|
||
### 前端项目
|
||
- `easyflow-ui-admin`:管理后台前端。
|
||
- `easyflow-ui-usercenter`:用户中心前端。
|
||
- `easyflow-ui-websdk`:Web SDK 示例/开发工程。
|
||
|
||
## 环境要求
|
||
|
||
- JDK 17+
|
||
- Maven 3.8+
|
||
- MySQL 8+
|
||
- Redis 6+
|
||
- Node.js >= 20.10.0
|
||
- pnpm >= 9.12.0
|
||
|
||
## 快速启动(开发环境)
|
||
|
||
### 1. 初始化数据库
|
||
只需要提前创建空库,例如:
|
||
|
||
```sql
|
||
CREATE DATABASE easyflow CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
||
```
|
||
|
||
表结构、Quartz 表和基础数据会在后端启动时由 Flyway 自动迁移完成。
|
||
当前初始化脚本仅保留 3 段:`V1__quartz.sql`、`V2__easyflow_schema.sql`、`V3__easyflow_seed.sql`。
|
||
|
||
### 2. 启动后端
|
||
在项目根目录执行:
|
||
|
||
```bash
|
||
mvn -DskipTests clean package
|
||
java -jar easyflow-starter/easyflow-starter-all/target/easyflow-starter-all-0.0.1.jar --spring.profiles.active=dev
|
||
```
|
||
|
||
默认端口:`8111`(见 `easyflow-starter/easyflow-starter-all/src/main/resources/application.yml`)。
|
||
|
||
首次连接空库时,应用会自动执行 `db/migration` 下的迁移脚本并初始化默认管理员、菜单、角色和模型服务商数据。
|
||
|
||
### 3. 启动前端
|
||
管理后台:
|
||
|
||
```bash
|
||
cd easyflow-ui-admin
|
||
pnpm install
|
||
pnpm dev
|
||
```
|
||
|
||
用户中心:
|
||
|
||
```bash
|
||
cd easyflow-ui-usercenter
|
||
pnpm install
|
||
pnpm dev
|
||
```
|
||
|
||
默认测试账号:`admin / Easy@2026`
|
||
|
||
## 后端 Jar 包构建与部署
|
||
|
||
### 构建 Jar
|
||
|
||
```bash
|
||
mvn -DskipTests -Dmaven.javadoc.skip=true clean package
|
||
```
|
||
|
||
产物路径:
|
||
- `easyflow-starter/easyflow-starter-all/target/easyflow-starter-all-0.0.1.jar`
|
||
|
||
### 启动 Jar(生产建议)
|
||
|
||
```bash
|
||
java -jar easyflow-starter/easyflow-starter-all/target/easyflow-starter-all-0.0.1.jar --spring.profiles.active=prod
|
||
```
|
||
|
||
生产环境同样只需要保证目标数据库已创建为空库,Flyway 会在应用启动时自动完成迁移。
|
||
|
||
可通过环境变量覆盖关键配置(示例):
|
||
|
||
```bash
|
||
SPRING_DATASOURCE_URL=jdbc:mysql://127.0.0.1:3306/easyflow?useInformationSchema=true&characterEncoding=utf-8
|
||
SPRING_DATASOURCE_USERNAME=easyflow
|
||
SPRING_DATASOURCE_PASSWORD=123456
|
||
SPRING_REDIS_HOST=127.0.0.1
|
||
SPRING_REDIS_PASSWORD=your_redis_password
|
||
```
|
||
|
||
## 前端 dist 包构建与部署
|
||
|
||
### 构建 dist
|
||
管理后台:
|
||
|
||
```bash
|
||
cd easyflow-ui-admin
|
||
pnpm install
|
||
pnpm run build
|
||
```
|
||
|
||
用户中心:
|
||
|
||
```bash
|
||
cd easyflow-ui-usercenter
|
||
pnpm install
|
||
pnpm run build
|
||
```
|
||
|
||
构建产物:
|
||
- `easyflow-ui-admin/app/dist`
|
||
- `easyflow-ui-usercenter/app/dist`
|
||
|
||
### 部署方式(Nginx)
|
||
将 dist 目录部署到 Nginx 静态目录,并配置反向代理:
|
||
- `/api/` -> 后端服务
|
||
- `/userCenter/` -> 后端服务
|
||
|
||
可直接参考:
|
||
- `easyflow-ui-admin/scripts/deploy/nginx.conf`
|
||
- `easyflow-ui-usercenter/scripts/deploy/nginx.conf`
|
||
|
||
## Docker Compose 一键部署(可选)
|
||
|
||
在项目根目录执行:
|
||
|
||
```bash
|
||
docker compose up --build -d
|
||
```
|
||
|
||
说明:
|
||
- `easyflow-api` 默认使用根目录 `Dockerfile`,会先在容器中构建并安装 `easy-agents`,再构建 `easyflow` 后端。
|
||
- 由于依赖 `easy-agents` 源码,`docker-compose.yml` 中后端构建上下文为上级目录(包含 `easyflow` 与 `easy-agents` 的同级目录)。
|
||
- ARM 服务器可直接构建(基础镜像支持 `linux/arm64`)。
|
||
|
||
默认端口:
|
||
- 后端 API:`8080`
|
||
- Admin:`8081`
|
||
- UserCenter:`8082`
|