Files
udmin/README.md
ayou cbbcd3121f refactor(auth): 优化401处理逻辑并提取登录跳转函数
将重复的401处理逻辑提取为redirectToLogin函数
修复刷新接口401时的循环重试问题
docs: 更新项目结构文档和快速启动指南
2025-12-15 23:46:36 +08:00

223 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# UdminAI 项目文档
欢迎来到 UdminAI 项目文档中心。本文档集合提供了项目的完整技术文档涵盖了架构设计、模块说明、API 文档和最佳实践等内容。
## 🗂 项目结构
```
udmin_ai/
├─ backend/ # Rust 后端axum + tokio + sea-orm
│ └─ src/
│ ├─ flow/ # 流程执行核心
│ │ ├─ mod.rs
│ │ ├─ domain.rs # ChainDef/Node/Link/Group 等领域模型
│ │ ├─ context.rs # 执行选项/流式事件
│ │ ├─ engine.rs # FlowEngine 引擎(并发/分支/屏障/事件)
│ │ ├─ dsl.rs # Design JSON/DSL 解析与构建
│ │ ├─ mappers.rs # 设计映射到 ctxnodes.<id>.<executor>
│ │ ├─ log_handler.rs # 运行日志与事件推送抽象
│ │ ├─ task.rs # 任务注册表与执行器抽象
│ │ └─ executors/ # http/db/variable/script_* / condition
│ ├─ routes/ # API 路由层
│ │ ├─ flows.rs # /flows CRUD 与运行(同步/SSE/WS
│ │ └─ flow_run_logs.rs # /flow_run_logs 查询与删除
│ ├─ services/ # 业务编排与持久化
│ │ ├─ flow_service.rs # 流程加载/解析/驱动与日志
│ │ └─ flow_run_log_service.rs # 运行日志分页与批量删除
│ ├─ middlewares/ # 中间件服务
│ │ ├─ sse.rs # SSE 服务与事件封装
│ │ ├─ ws.rs # WebSocket 服务与转发
│ │ ├─ jwt.rs # 认证鉴权与用户提取
│ │ └─ http_client.rs # HTTP 客户端封装reqwest
│ ├─ models/ # SeaORM 数据模型
│ │ ├─ flow.rs # flows 表
│ │ └─ flow_run_log.rs # flow_run_logs 表
│ ├─ db.rs # 数据库初始化与全局句柄
│ └─ redis.rs # Redis 访问与令牌校验
├─ frontend/ # TypeScript 前端React + Vite
│ └─ src/
│ ├─ flows/ # 可视化流程编辑器与运行面板
│ │ ├─ editor.tsx # 设计器入口(自由布局)
│ │ ├─ services/custom-service.ts # 保存与运行HTTP/SSE/WS
│ │ └─ components/testrun/... # 测试运行面板与实时输出
│ ├─ pages/
│ │ ├─ FlowList.tsx # 流程列表/新建/编辑
│ │ └─ FlowRunLogs.tsx # 运行日志列表
│ ├─ utils/
│ │ ├─ axios.ts # 统一请求拦截401 刷新/跳转登录)
│ │ └─ token.ts # 本地令牌与用户信息管理
│ ├─ App.tsx / main.tsx # 入口与路由
│ └─ styles / layouts ... # 样式与布局
├─ docs/ # 文档
│ ├─ flow_architecture.md # Flow 架构与执行图Mermaid
│ └─ ... # 其他专题文档(概览/后端/前端/示例)
└─ .trae/rules/project_rules.md # 项目代码规范Rust 文件顺序等)
```
## ⚙️ 快速启动
- 后端启动(默认读取 `.env`端口HTTP 9898SSE 8866WS 8855
- `cd backend && ENV_FILE=dev cargo run`
- 前端启动(默认开发端口 8888
- `cd frontend && npm install && npm run dev`
## 🔌 主要接口
- 流程管理
- `POST /api/flows` 新建流程(支持 YAML 与 design_json
- `GET /api/flows` 分页查询
- `GET/PUT/DELETE /api/flows/{id}` 详情/更新/删除
- `POST /api/flows/{id}/run` 同步运行,返回 `{ ok, ctx, logs }`
- `POST /api/flows/{id}/run/stream` SSE 流式运行,推送节点事件与完成事件
- `GET /api/flows/{id}/run/ws` WebSocket 流式运行
- 运行日志
- `GET /api/flow_run_logs` 分页查询(支持按 flow_id/flow_code/user/ok 过滤)
- `DELETE /api/flow_run_logs/{ids}` 批量删除
## 🧩 架构与执行
- 引擎:自研 `FlowEngine`(递归驱动图,合流屏障,分支并行,组等待)
- 模式:`sync`(同步)/ `async`(组内异步)/ `queued`(组队列)/ `bounded`(组限并发)
- 条件JSON 条件集合或 `rhai` 表达式;无匹配时回退无条件边
- 执行器:`http``db``variable``script_rhai/js/python``condition`
- 文档详见:`docs/flow_architecture.md`
## 📚 文档导航
### 🏗️ 架构文档
- **[项目概览](docs/PROJECT_OVERVIEW.md)** - UdminAI 项目的整体介绍、技术架构和核心功能
- **[后端架构](docs/BACKEND_ARCHITECTURE.md)** - 后端系统的详细架构设计和模块组织
- **[前端架构](docs/FRONTEND_ARCHITECTURE.md)** - 前端应用的架构设计、技术栈和组件体系
### 🔧 核心模块
- **[流程引擎](docs/FLOW_ENGINE.md)** - 流程编排引擎的设计原理、执行机制和扩展能力
- **[服务层](docs/SERVICES.md)** - 业务服务层的设计模式、核心服务和集成方式
- **[路由层](docs/ROUTES.md)** - API 路由的设计规范、接口定义和中间件集成
- **[数据模型](docs/MODELS.md)** - 数据模型的设计原则、实体定义和关系映射
- **[中间件](docs/MIDDLEWARES.md)** - 中间件系统的设计理念、核心组件和使用方式
- **[Flow 架构与执行图](docs/flow_architecture.md)** - Flow 端到端架构图与执行流程
### 🛠️ 基础设施
- **[数据库](docs/DATABASE.md)** - 数据库连接管理、查询优化和性能调优
- **[错误处理](docs/ERROR_HANDLING.md)** - 统一错误处理机制、错误类型定义和处理策略
- **[响应格式](docs/RESPONSE.md)** - API 响应格式规范、数据结构和最佳实践
- **[工具函数](docs/UTILS.md)** - 通用工具函数库、辅助工具和实用程序
### 📋 专项文档
- **[Redis 集成](docs/REDIS_INTEGRATION.md)** - Redis 缓存系统的集成方案和使用指南
- **[ID 生成分析](docs/ID_GENERATION_ANALYSIS.md)** - 分布式 ID 生成策略和实现分析
### 🎯 流程编辑器
- **[变量节点使用](docs/variable-node-usage.md)** - 流程变量节点的使用方法和最佳实践
- **[固定布局演示](docs/flow-fixed-layout-demo.md)** - 固定布局流程编辑器的演示和说明
- **[自由布局演示](docs/flow-free-layout-demo.md)** - 自由布局流程编辑器的功能展示
- **[基础自由布局](docs/flow-free-layout-base-demo.md)** - 自由布局的基础功能和操作指南
- **[简单自由布局](docs/flow-free-layout-simple-demo.md)** - 简化版自由布局编辑器的使用说明
- **[自由布局 JSON](docs/flow-free-layout-json.md)** - 自由布局的 JSON 数据结构定义
- **[SJ 自由布局演示](docs/flow-free-layout-sj-demo.md)** - SJ 版本自由布局编辑器的特性说明
## 🚀 快速开始
### 新手指南
如果你是第一次接触 UdminAI 项目,建议按以下顺序阅读文档:
1. **[项目概览](docs/PROJECT_OVERVIEW.md)** - 了解项目整体架构和核心概念
2. **[后端架构](docs/BACKEND_ARCHITECTURE.md)** - 理解后端系统的设计思路
3. **[前端架构](docs/FRONTEND_ARCHITECTURE.md)** - 掌握前端应用的组织结构
4. **[流程引擎](docs/FLOW_ENGINE.md)** - 深入了解核心的流程编排能力
### 开发者指南
对于参与开发的团队成员,重点关注以下文档:
- **[服务层](docs/SERVICES.md)** - 业务逻辑的实现规范
- **[路由层](docs/ROUTES.md)** - API 接口的设计标准
- **[数据模型](docs/MODELS.md)** - 数据结构的定义规则
- **[错误处理](docs/ERROR_HANDLING.md)** - 错误处理的统一方案
### 运维指南
对于系统运维和部署,参考以下文档:
- **[数据库](docs/DATABASE.md)** - 数据库的配置和优化
- **[Redis 集成](docs/REDIS_INTEGRATION.md)** - 缓存系统的部署和管理
- **[中间件](docs/MIDDLEWARES.md)** - 中间件的配置和监控
## 📖 文档约定
### 文档结构
每个模块文档都遵循统一的结构:
- **概述** - 模块的基本介绍和设计目标
- **设计原则** - 核心的设计理念和约束条件
- **核心功能** - 主要功能特性和实现方式
- **使用示例** - 具体的代码示例和使用方法
- **最佳实践** - 推荐的使用模式和注意事项
- **总结** - 模块特点和价值总结
### 代码示例
文档中的代码示例都经过验证,可以直接在项目中使用。代码遵循项目的编码规范:
- **Rust 代码** - 遵循 Rust 2021 edition 和项目编码规范
- **TypeScript 代码** - 遵循 TypeScript 严格模式和 ESLint 规则
- **配置文件** - 使用 YAML/TOML 格式,保持简洁清晰
### 更新机制
文档与代码同步更新,确保文档的时效性和准确性:
- **版本控制** - 文档与代码使用相同的版本管理
- **持续集成** - 代码变更时自动检查文档的一致性
- **定期审查** - 定期审查和更新文档内容
## 🤝 贡献指南
### 文档贡献
欢迎为项目文档做出贡献:
1. **发现问题** - 如果发现文档中的错误或不准确之处,请提交 Issue
2. **改进建议** - 对文档结构或内容有改进建议,欢迎讨论
3. **新增内容** - 可以补充缺失的文档或添加新的使用案例
4. **翻译工作** - 可以帮助将文档翻译成其他语言
### 文档规范
贡献文档时请遵循以下规范:
- **Markdown 格式** - 使用标准的 Markdown 语法
- **中文写作** - 使用简洁明了的中文表达
- **代码高亮** - 为代码块指定正确的语言类型
- **链接检查** - 确保所有链接都是有效的
## 📞 获取帮助
如果在使用过程中遇到问题,可以通过以下方式获取帮助:
- **查阅文档** - 首先查看相关的模块文档
- **搜索 Issue** - 在项目 Issue 中搜索类似问题
- **提交 Issue** - 如果问题未解决,请提交新的 Issue
- **社区讨论** - 参与项目的社区讨论
## 📄 许可证
本文档遵循与项目相同的许可证。详细信息请参考项目根目录的 LICENSE 文件。
---
**UdminAI 团队**
*构建智能化的流程管理平台*
> 💡 **提示**: 建议将本文档加入浏览器书签,方便随时查阅。文档会持续更新,请关注最新版本。