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

10 KiB
Raw Blame History

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 表达式;无匹配时回退无条件边
  • 执行器:httpdbvariablescript_rhai/js/pythoncondition
  • 文档详见:docs/flow_architecture.md

📚 文档导航

🏗️ 架构文档

  • 项目概览 - UdminAI 项目的整体介绍、技术架构和核心功能
  • 后端架构 - 后端系统的详细架构设计和模块组织
  • 前端架构 - 前端应用的架构设计、技术栈和组件体系

🔧 核心模块

  • 流程引擎 - 流程编排引擎的设计原理、执行机制和扩展能力
  • 服务层 - 业务服务层的设计模式、核心服务和集成方式
  • 路由层 - API 路由的设计规范、接口定义和中间件集成
  • 数据模型 - 数据模型的设计原则、实体定义和关系映射
  • 中间件 - 中间件系统的设计理念、核心组件和使用方式
  • Flow 架构与执行图 - Flow 端到端架构图与执行流程

🛠️ 基础设施

  • 数据库 - 数据库连接管理、查询优化和性能调优
  • 错误处理 - 统一错误处理机制、错误类型定义和处理策略
  • 响应格式 - API 响应格式规范、数据结构和最佳实践
  • 工具函数 - 通用工具函数库、辅助工具和实用程序

📋 专项文档

🎯 流程编辑器

🚀 快速开始

新手指南

如果你是第一次接触 UdminAI 项目,建议按以下顺序阅读文档:

  1. 项目概览 - 了解项目整体架构和核心概念
  2. 后端架构 - 理解后端系统的设计思路
  3. 前端架构 - 掌握前端应用的组织结构
  4. 流程引擎 - 深入了解核心的流程编排能力

开发者指南

对于参与开发的团队成员,重点关注以下文档:

运维指南

对于系统运维和部署,参考以下文档:

📖 文档约定

文档结构

每个模块文档都遵循统一的结构:

  • 概述 - 模块的基本介绍和设计目标
  • 设计原则 - 核心的设计理念和约束条件
  • 核心功能 - 主要功能特性和实现方式
  • 使用示例 - 具体的代码示例和使用方法
  • 最佳实践 - 推荐的使用模式和注意事项
  • 总结 - 模块特点和价值总结

代码示例

文档中的代码示例都经过验证,可以直接在项目中使用。代码遵循项目的编码规范:

  • Rust 代码 - 遵循 Rust 2021 edition 和项目编码规范
  • TypeScript 代码 - 遵循 TypeScript 严格模式和 ESLint 规则
  • 配置文件 - 使用 YAML/TOML 格式,保持简洁清晰

更新机制

文档与代码同步更新,确保文档的时效性和准确性:

  • 版本控制 - 文档与代码使用相同的版本管理
  • 持续集成 - 代码变更时自动检查文档的一致性
  • 定期审查 - 定期审查和更新文档内容

🤝 贡献指南

文档贡献

欢迎为项目文档做出贡献:

  1. 发现问题 - 如果发现文档中的错误或不准确之处,请提交 Issue
  2. 改进建议 - 对文档结构或内容有改进建议,欢迎讨论
  3. 新增内容 - 可以补充缺失的文档或添加新的使用案例
  4. 翻译工作 - 可以帮助将文档翻译成其他语言

文档规范

贡献文档时请遵循以下规范:

  • Markdown 格式 - 使用标准的 Markdown 语法
  • 中文写作 - 使用简洁明了的中文表达
  • 代码高亮 - 为代码块指定正确的语言类型
  • 链接检查 - 确保所有链接都是有效的

📞 获取帮助

如果在使用过程中遇到问题,可以通过以下方式获取帮助:

  • 查阅文档 - 首先查看相关的模块文档
  • 搜索 Issue - 在项目 Issue 中搜索类似问题
  • 提交 Issue - 如果问题未解决,请提交新的 Issue
  • 社区讨论 - 参与项目的社区讨论

📄 许可证

本文档遵循与项目相同的许可证。详细信息请参考项目根目录的 LICENSE 文件。


UdminAI 团队
构建智能化的流程管理平台

💡 提示: 建议将本文档加入浏览器书签,方便随时查阅。文档会持续更新,请关注最新版本。