# Flow Platform React

这是一个基于 React 和 Next.js 构建的可视化流程编辑平台。该平台提供了丰富的组件和工具，用于创建、编辑和管理复杂的业务流程。

## 项目概述

Flow Platform React 是一个功能强大的流程编辑器，支持拖拽式操作、组件连接、循环结构、条件判断等多种功能。平台内置了多种组件类型，包括基础组件、复合组件、系统组件等，可以满足各种业务场景的需求。

## 技术栈

- [Next.js](https://nextjs.org/) - React 框架
- [React](https://reactjs.org/) - JavaScript UI 库
- [TypeScript](https://www.typescriptlang.org/) - JavaScript 的超集，提供类型安全
- [@xyflow/react](https://reactflow.dev/) - 可视化流程图库
- [@arco-design/web-react](https://arco.design/react) - React UI 组件库
- [Redux Toolkit](https://redux-toolkit.js.org/) - 状态管理

## 功能特性

- 🎨 可视化流程编辑器，支持拖拽和连接节点
- 🔗 多种节点类型：开始/结束节点、基础节点、循环节点、条件节点等
- ⚙️ 组件库管理，支持自定义组件
- 🔄 流程执行和状态跟踪
- 📊 实时数据监控和可视化
- 🎯 精确的对齐辅助线
- 📚 丰富的组件市场
- 🧩 复合组件支持

## 快速开始

### 环境要求

- Node.js >= 16.20.0
- pnpm

### 安装依赖

```bash
pnpm install
```

### 开发模式

```bash
pnpm run dev
```

打开浏览器访问 [http://localhost:4121](http://localhost:4121) 查看应用。

### 构建生产版本

```bash
# 构建服务端渲染
pnpm run build
# 构建服务端渲染，同时输出dist文件供静态部署
pnpm run export
```

### 启动生产服务器

```bash
pnpm run start
```

## 项目结构

```
src/
├── api/              # API 接口定义
├── components/       # 公共组件
├── hooks/            # 自定义 React Hooks
├── pages/            # 页面组件
├── routes/           # 路由配置
├── store/            # Redux 状态管理
├── utils/            # 工具函数
└── ...
```

## 核心模块

### 流程编辑器

流程编辑器是本项目的核心功能，提供了以下特性：

- 节点拖拽和自由布局
- 连接线绘制和管理
- 循环结构支持（LOOP_START/LOOP_END）
- 条件分支支持
- 实时对齐辅助线
- 撤销/重做功能
- 流程执行状态跟踪

### 组件库

项目提供了丰富的组件库：

- 基础组件库：包含常用的业务组件
- 复合组件库：由多个基础组件组合而成的复杂组件
- 组件市场：可共享和复用的组件

### 状态管理

使用 Redux Toolkit 进行全局状态管理，主要包括：

- 用户信息
- 流程数据
- 组件库数据
- 画布状态
- 执行状态

## 开发指南

### 添加新节点类型

1. 在 `src/components/FlowEditor/node/` 目录下创建新的节点组件
2. 在 `src/utils/flowCommon.ts` 中的 `getNodeComponent` 函数中注册新节点类型
3. 在 `src/components/FlowEditor/node/types/defaultType.ts` 中定义节点类型

### 添加新组件

1. 在相应的组件目录中创建新组件
2. 在路由和菜单中注册新组件
3. 添加必要的状态管理和 API 接口

## 部署

项目使用静态导出模式，可以部署到任何支持静态文件托管的服务上：

```bash
pnpm run export
```

构建后的文件将位于 `dist/` 目录中。

## 环境配置

项目使用环境变量进行配置，创建 `.env` 文件：

```env
NEXT_PUBLIC_DEV_SERVER_HOST=http://localhost:8080
```

## 代码规范

项目使用 ESLint 和 Prettier 进行代码规范检查：

```bash
pnpm run eslint
pnpm run stylelint
```
