# 天风任务模块 ## 项目概述 天风任务模块是AMR(自主移动机器人)调度系统的核心组件之一,用于管理和监控机器人任务的全生命周期。该模块提供了低代码配置工具,使用户能够通过可视化界面设计和配置复杂的机器人任务流程,无需编写大量代码。系统支持任务版本控制、流程编辑、测试执行和源代码生成等功能,大幅提高了机器人任务配置的效率和灵活性。 ## 项目架构 天风任务模块采用分层架构设计,遵循关注点分离原则,各层次职责明确,便于维护和扩展: ### 1. 架构层次 - **表现层(API层)**:处理HTTP请求和响应,提供RESTful API接口 - **业务逻辑层(Service层)**:实现核心业务逻辑,处理任务和工作流的创建、执行和管理 - **代理层(Agents层)**:提供智能代理服务,支持任务自动化和优化(已设计,尚未实现) - **领域层(Core层)**:定义核心领域模型和业务规则,包含工作流引擎和组件系统 - **数据层(Data层)**:提供数据模型定义和数据访问功能,支持任务、流程、组件等数据的持久化 - **智能服务层**:提供向量化和向量存储服务,支持知识检索和智能决策(已设计,尚未实现) - **基础设施层**:提供数据持久化、日志记录、配置管理等基础服务 ### 2. 设计模式 - **工厂模式**:用于组件的创建和注册 - **策略模式**:用于实现不同类型组件的执行逻辑 - **观察者模式**:用于任务状态变更通知 - **命令模式**:用于任务执行和撤销操作 - **组合模式**:用于构建组件树和工作流结构 - **仓储模式**:用于数据访问和持久化 ### 3. 系统架构图 ``` +-------------------+ | 用户界面 | +--------+----------+ | v +------------------+ +----------+---------+ | | | | | 外部知识库 +------------->+ API层 | | | | | +------------------+ +----+------+--------+ | | | | +----------------------------+ | | | v v +----------+---------+ +---------+----------+ | | | | | Agent系统 |<------------>| 业务服务层 | | (包含LLM功能) | | | +----+---------------+ +--------+-----------+ | | | | | v | +--------+-----------+ | | | | | 工作流引擎 | | | | | +--------+-----------+ | | | | | v | +--------+-----------+ | | | +----------------------------->+ 组件系统 | | | | | +--------+-----------+ | | v v +----+---------------+ +--------+-----------+ | | | | | 智能服务层 | | 外部系统/设备 | | (向量化和向量存储) | | | +----+---------------+ +--------------------+ | | v +----+---+ | | |向量数据库| | | +--------+ ``` > **注意**:架构图中的Agent系统、外部知识库、智能服务层和向量数据库部分已完成设计,但尚未实现。这些组件将在后续版本中逐步开发和集成。 ## 项目结构 ``` tianfeng_task/ ├── api/ # API接口定义 │ ├── task_api.py # 任务相关API │ ├── workflow_api.py # 工作流相关API │ ├── component_api.py # 组件相关API │ ├── task_instance_api.py # 任务实例相关API │ ├── common_params_api.py # 通用参数API │ └── models/ # API模型定义 ├── services/ # 业务服务层 │ ├── task_service.py # 任务服务 │ ├── workflow_service.py # 工作流服务 │ ├── component_service.py # 组件服务 │ └── editor_service.py # 编辑器服务 ├── agents/ # 智能代理层(已设计,尚未实现) │ ├── base_agent.py # 代理基类 │ ├── task_agent.py # 任务代理 │ ├── llm/ # 大语言模型集成 │ ├── prompts/ # 提示词模板 │ ├── tools/ # 代理工具集 │ └── teams/ # 代理团队协作 ├── components/ # 组件实现 │ ├── base_components.py # 基础组件 │ ├── flow_components.py # 流程控制组件 │ ├── http_components.py # HTTP请求组件 │ ├── robot_components.py # 机器人调度组件 │ ├── script_components.py # 脚本组件 │ ├── site_components.py # 库位组件 │ ├── subtask_components.py # 子任务组件 │ ├── task_components.py # 任务组件 │ └── device_components.py # 设备组件 ├── core/ # 核心功能模块 │ ├── component.py # 组件基类定义 │ ├── context.py # 执行上下文 │ ├── exceptions.py # 异常定义 │ └── workflow.py # 工作流引擎 ├── data/ # 数据存储 │ ├── models/ # 数据模型定义 │ │ ├── base.py # 基础模型 │ │ ├── task.py # 任务相关模型 │ │ ├── task_flow.py # 任务流程模型 │ │ ├── task_variable.py # 任务变量模型 │ │ ├── task_edit_history.py # 编辑历史模型 │ │ ├── component.py # 组件模型 │ │ ├── robot.py # 机器人模型 │ │ ├── storage.py # 库位模型 │ │ ├── device.py # 设备模型 │ │ └── user_operation.py # 用户操作日志模型 │ ├── session.py # 数据库会话管理 │ └── repositories/ # 数据仓储实现 ├── intelligent/ # 智能服务层(已设计,尚未实现) │ ├── vectorization/ # 向量化服务 │ ├── retrieval/ # 知识检索服务 │ ├── embedding/ # 嵌入模型服务 │ └── vector_store/ # 向量存储服务 ├── migrations/ # 数据库迁移 │ ├── versions/ # 迁移版本 │ ├── env.py # 迁移环境配置 │ ├── script.py.mako # 迁移脚本模板 │ └── alembic.ini # Alembic配置 ├── scripts/ # 脚本工具 │ ├── generate_migration.py # 生成迁移脚本 │ └── run_migration.py # 执行迁移脚本 ├── utils/ # 工具函数 │ ├── logger.py # 日志工具 │ ├── validators.py # 数据验证工具 │ └── helpers.py # 辅助函数 ├── config/ # 配置文件 │ ├── database.py # 数据库配置 │ ├── component_registry.py # 组件注册配置 │ └── settings.py # 应用设置 ├── logs/ # 日志文件 ├── tests/ # 测试代码 │ ├── unit/ # 单元测试 │ ├── integration/ # 集成测试 │ └── fixtures/ # 测试数据 ├── app.py # 应用入口 ├── Dockerfile # Docker构建文件 ├── docker-compose.yml # Docker Compose配置 ├── .env.example # 环境变量示例 ├── .dockerignore # Docker忽略文件 └── requirements.txt # 依赖包列表 ``` ## 核心功能 ### 1. 任务管理 - **任务创建**:支持创建普通任务和定时任务 - **任务监控**:实时监控任务执行状态和进度 - **任务操作**:支持启动、暂停、取消、重试等操作 - **任务历史**:记录任务执行历史和结果 - **版本控制**:支持任务版本管理,可以回滚到历史版本 - **任务测试**:支持在测试环境中执行任务,验证任务配置 ### 2. 任务编辑器 天风任务模块提供了强大的可视化编辑器,支持以下功能: - **流程图设计**:通过拖拽方式设计任务流程图 - **属性配置**:配置组件和连接的属性 - **变量管理**:定义和管理任务执行过程中的变量 - **撤销/重做**:支持编辑操作的撤销和重做 - **源代码生成**:自动生成任务执行的源代码 - **版本备份**:支持任务配置的版本备份和恢复 ### 3. 组件库 天风任务模块提供了丰富的组件库,用户可以通过拖拽组件和配置参数的方式设计复杂的任务流程: - **子任务组件**:支持任务的模块化和复用 - **脚本组件**:支持编写自定义JavaScript脚本 - **HTTP请求组件**:支持与外部系统进行通信 - **任务组件**:提供任务数据管理和状态控制功能 - **流程组件**:提供条件判断、循环、并行执行等流程控制功能 - **基础组件**:提供数据验证、ID生成、时间处理等基础功能 - **库位组件**:提供库位管理和操作功能 - **机器人调度组件**:提供机器人选择、控制和状态监控功能 - **设备组件**:提供与外部设备通信的功能 ### 4. 智能代理系统(已设计,尚未实现) - **任务代理**:自动分析和优化任务流程 - **LLM集成**:集成大语言模型,提供智能决策支持 - **代理工具**:提供丰富的工具集,支持代理执行各种操作 - **团队协作**:支持多代理协作完成复杂任务 - **知识检索**:从外部知识库中检索相关信息,辅助决策 ### 5. 智能服务层(已设计,尚未实现) - **向量化服务**:将文本、图像等数据转换为向量表示 - **知识检索**:基于语义相似度进行知识检索 - **嵌入模型**:提供多种嵌入模型,支持不同类型数据的向量化 - **向量存储**:高效存储和检索向量数据 ### 6. 工作流引擎 - **流程执行**:解析和执行任务流程图 - **上下文管理**:管理任务执行过程中的变量和状态 - **错误处理**:提供异常捕获和处理机制 - **并行执行**:支持多分支并行执行 - **动态加载**:支持动态加载和执行组件 ### 7. 数据模型 系统提供了完善的数据模型,支持任务管理的各个方面: - **任务模型**:存储任务基本信息和配置 - **任务版本**:管理任务的不同版本 - **任务记录**:记录任务的执行情况 - **任务流程节点**:存储流程图中的节点信息 - **任务流程连接**:存储流程图中的连接信息 - **任务变量定义**:管理任务中使用的变量 - **任务编辑历史**:记录编辑操作,支持撤销/重做 - **任务备份**:存储任务的备份数据 ## 执行业务流程 ### 系统启动流程 1. 应用启动(app.py) 2. 加载配置信息(config模块) 3. 初始化日志系统(utils.logger) 4. 初始化数据库连接(data.session) 5. 注册所有组件(config.component_registry) 6. 注册API路由(api模块) 7. 启动HTTP服务(uvicorn) ### 任务创建流程 1. 用户在天风任务主页面点击"定义新任务"按钮 2. 前端发送创建任务请求到API层(/api/tasks) 3. API层调用任务服务(task_service.py)创建任务记录 4. 系统创建任务并返回任务ID 5. 前端跳转到任务编辑页面 6. 用户通过拖拽组件设计任务流程 7. 前端发送保存流程请求到API层(/api/workflows) 8. API层调用工作流服务(workflow_service.py)保存流程配置 9. 系统将流程配置保存到数据库,创建新版本 ### 任务编辑流程 1. 用户打开任务编辑页面 2. 系统加载任务的最新版本和流程图数据 3. 用户通过拖拽组件和连接设计流程图 4. 用户配置组件属性和变量 5. 系统记录每一步编辑操作,支持撤销/重做 6. 用户点击保存按钮,系统创建新版本 7. 用户可以点击测试按钮,在测试环境中执行任务 8. 用户可以点击生成源码按钮,系统生成任务执行代码 ### 任务执行流程 1. 用户在任务列表中选择任务并点击"执行"按钮 2. 前端发送执行任务请求到API层(/api/tasks/{id}/execute) 3. API层调用任务服务(task_service.py)创建任务记录 4. 任务服务加载任务配置和工作流定义 5. 任务服务初始化执行上下文(context.py) 6. 任务服务调用工作流引擎(workflow.py)执行任务 7. 工作流引擎解析任务流程图并按顺序执行各组件 8. 组件执行结果存储在上下文中,供后续组件使用 9. 系统实时更新任务状态和进度 10. 任务执行完成后,系统记录执行结果和日志 ### 智能任务执行流程(已设计,尚未实现) 1. 用户在任务列表中选择任务并点击"智能执行"按钮 2. 前端发送智能执行任务请求到API层 3. API层调用Agent系统进行任务分析和优化 4. Agent系统从外部知识库检索相关知识 5. Agent系统基于LLM和检索到的知识生成执行计划 6. Agent系统调用业务服务层执行优化后的任务 7. 业务服务层调用工作流引擎执行任务 8. 执行过程中,Agent系统持续监控任务状态 9. 遇到异常情况时,Agent系统自动调整执行策略 10. 任务执行完成后,Agent系统生成执行报告和优化建议 ## 交互方式 天风任务模块提供多种交互方式,满足不同场景的需求: ### 1. 用户界面交互 - **任务列表界面**: - 展示所有任务及其状态 - 提供任务筛选、搜索和排序功能 - 支持任务的创建、编辑、删除、执行等操作 - 显示任务执行状态和进度 - **任务编辑界面**: - 提供可视化的流程设计工具 - 左侧组件面板:展示可用组件 - 中央流程图编辑区:通过拖拽设计任务流程 - 右侧属性面板:配置组件参数 - 顶部工具栏:保存、运行、测试、撤销、重做等操作 - **任务监控界面**: - 实时显示任务执行状态和进度 - 展示任务执行日志和变量值 - 提供任务暂停、取消、重试等操作 ## 技术栈 - **后端**:FastAPI (Python) - **数据库**:SQLAlchemy ORM,支持MySQL、PostgreSQL等 - **前端**:React + Ant Design(低代码编辑器) - **API文档**:Swagger UI(自动生成) - **工作流引擎**:自研基于DAG的工作流引擎 - **组件系统**:可扩展的组件注册和执行系统 - **数据迁移**:Alembic - **智能代理**:基于大语言模型的智能代理系统(已设计,尚未实现) - **向量数据库**:支持高效的向量存储和检索(已设计,尚未实现) - **嵌入模型**:支持文本、图像等数据的向量化(已设计,尚未实现) ## 部署说明 ### 环境要求 - Python 3.11+ - 数据库(MySQL/PostgreSQL) - Node.js 14+(前端开发) ### 详细运行方法 #### 方法一:使用Docker运行(推荐) Docker是最简单的部署方式,可以避免环境配置问题。 ##### 1. 构建并运行Docker镜像 ```bash # 克隆代码仓库 git clone http://192.168.1.2:8418/jzw/tianfeng_task_modules.git cd tianfeng_task # 构建Docker镜像 docker build -t tianfeng-task:latest . # 运行Docker容器 docker run -d -p 8000:8000 --name tianfeng-task-container tianfeng-task:latest ``` ##### 2. 使用Docker Compose运行(包含数据库和缓存) ```bash # 克隆代码仓库 git clone http://192.168.1.2:8418/jzw/tianfeng_task_modules.git cd tianfeng_task # 使用Docker Compose构建并启动所有服务 docker-compose up -d ``` ##### 3. 验证服务是否正常运行 ```bash # 查看容器状态 docker ps # 或者使用Docker Compose查看 docker-compose ps # 查看应用日志 docker logs tianfeng-task-container # 或者 docker-compose logs app ``` ##### 4. 停止和删除容器 ```bash # 停止容器 docker stop tianfeng-task-container docker rm tianfeng-task-container # 或者使用Docker Compose docker-compose down ``` #### 方法二:本地运行(不同操作系统) ##### 前提条件 - 安装Conda(Miniconda或Anaconda) - 安装Git - 安装数据库(MySQL或PostgreSQL) ##### Windows系统 ```bash # 1. 克隆代码仓库 git clone http://192.168.1.2:8418/jzw/tianfeng_task_modules.git cd tianfeng_task # 2. 创建并激活Conda环境 推荐使用3.11 conda create -n pytf python=3.11 conda activate pytf # 3. 安装依赖 pip install -r requirements.txt # 4. 配置数据库连接 # 编辑 config/database.py 文件,设置正确的数据库连接信息 # 5. 启动应用 python app.py ``` ### 数据库配置说明 在运行应用前,需要修改`config/database.py`文件中的数据库配置,将默认的数据库连接信息替换为您自己的本地或云上的MySQL数据库: ```python # 数据库连接配置 DB_CONFIG = ConfigDict( default=dict( dialect='mysql', driver='pymysql', username='your_username', # 修改为您的数据库用户名 password='your_password', # 修改为您的数据库密码 host='your_host', # 修改为您的数据库主机地址,本地通常为localhost或127.0.0.1,云数据库使用对应的连接地址 port=3306, # 修改为您的数据库端口,默认MySQL为3306 database='tianfeng_task', # 数据库名称,可以保持不变或修改为您想使用的数据库名 charset='utf8mb4' ), test=dict( dialect='sqlite', database=':memory:' ) ) ``` 如果您使用的是云数据库(如阿里云RDS、AWS RDS等),请确保: 1. 数据库已创建并可以访问 2. 数据库用户有足够的权限(至少需要CREATE、ALTER、SELECT、INSERT、UPDATE、DELETE权限) 3. 数据库服务器的防火墙允许从您的应用服务器访问 您也可以通过环境变量来设置数据库连接信息,这样就不需要修改源代码: ```bash # Windows set TIANFENG_ENV=default set DB_HOST=your_host set DB_PORT=3306 set DB_USER=your_username set DB_PASSWORD=your_password set DB_NAME=tianfeng_task # macOS/Linux export TIANFENG_ENV=default export DB_HOST=your_host export DB_PORT=3306 export DB_USER=your_username export DB_PASSWORD=your_password export DB_NAME=tianfeng_task ``` 系统启动时会自动检查数据库是否存在,如果不存在会自动创建数据库和所需的表结构。 ##### macOS系统 ```bash # 1. 克隆代码仓库 git clone http://192.168.1.2:8418/jzw/tianfeng_task_modules.git cd tianfeng_task # 2. 创建并激活Conda环境 conda create -n pytf python=3.11 conda activate pytf # 3. 安装依赖 pip install -r requirements.txt # 4. 配置数据库连接 # 编辑 config/database.py 文件,设置正确的数据库连接信息 # 5. 启动应用 python app.py ``` ##### Linux系统 ```bash # 1. 克隆代码仓库 git clone http://192.168.1.2:8418/jzw/tianfeng_task_modules.git cd tianfeng_task # 2. 创建并激活Conda环境 conda create -n pytf python=3.11 conda activate pytf # 3. 安装依赖 pip install -r requirements.txt # 4. 配置数据库连接 # 编辑 config/database.py 文件,设置正确的数据库连接信息 # 5. 启动应用 python app.py ``` #### 方法三:使用虚拟环境(不使用Conda)(不推荐) **注意:此方法不推荐使用**,因为项目依赖复杂,使用Conda可以更好地管理依赖关系和解决潜在的兼容性问题。此外,某些依赖可能需要特定的编译环境,Conda能更好地处理这些情况。如果您仍然希望使用此方法,请按照以下步骤操作: ##### Windows系统 ```bash # 1. 克隆代码仓库 git clone http://192.168.1.2:8418/jzw/tianfeng_task_modules.git cd tianfeng_task # 2. 创建并激活虚拟环境 python -m venv venv .\venv\Scripts\activate # 3. 安装依赖 pip install -r requirements.txt # 4. 配置数据库连接 # 编辑 config/database.py 文件 # 5. 启动应用 python app.py ``` ##### macOS/Linux系统 ```bash # 1. 克隆代码仓库 git clone http://192.168.1.2:8418/jzw/tianfeng_task_modules.git cd tianfeng_task # 2. 创建并激活虚拟环境 python -m venv venv source venv/bin/activate # 3. 安装依赖 pip install -r requirements.txt # 4. 配置数据库连接 # 编辑 config/database.py 文件 # 5. 启动应用 python app.py ``` ### 安装步骤 1. 克隆代码库 2. 安装依赖:`pip install -r requirements.txt` 3. 配置数据库连接:修改`config/database.py` 4. 启动应用:`python app.py` ## 使用示例 ### 创建简单任务 1. 进入天风任务主页面 2. 点击"定义新任务"按钮 3. 输入任务名称"测试任务",选择"普通任务"类型 4. 在编辑页面拖入"选择执行机器人"组件 5. 配置机器人选择参数 6. 拖入"机器人通用动作"组件,配置目标站点 7. 连接组件,形成执行流程 8. 保存任务并执行 ### 使用版本控制 1. 打开现有任务的编辑页面 2. 修改任务流程或组件配置 3. 点击"保存"按钮,系统自动创建新版本 4. 在版本历史中可以查看所有历史版本 5. 可以选择任意历史版本进行查看或恢复 ### 使用撤销/重做功能 1. 在编辑页面进行操作(如添加节点、移动节点等) 2. 如需撤销操作,点击工具栏中的"撤销"按钮 3. 如需重做已撤销的操作,点击"重做"按钮 4. 系统会记录编辑会话中的所有操作历史 ## 常见问题 1. **任务执行失败怎么办?** - 查看任务执行日志,定位失败原因 - 在测试环境中验证任务配置 - 修改任务配置,解决问题后重试 2. **如何调试复杂任务?** - 使用测试功能验证任务配置 - 查看执行日志和变量值 - 使用条件断点和单步执行 3. **如何管理大量任务?** - 使用任务模板功能创建可复用的任务模板 - 使用子任务功能将复杂任务拆分为多个子任务 - 使用标签和分类功能组织任务 ## 联系方式 如有问题或建议,请联系系统管理员或开发团队。 # Docker部署说明 ## 使用Docker部署天风任务模块 本项目支持使用Docker进行部署,以下是部署步骤: ### 前提条件 - 安装Docker和Docker Compose - 确保端口8000、3306和6379未被占用 ### 部署步骤 1. 克隆代码仓库 ```bash git clone http://192.168.1.2:8418/jzw/tianfeng_task_modules.git cd tianfeng_task ``` 2. 使用Docker Compose构建并启动服务 ```bash docker-compose up -d ``` 这将启动三个容器: - tianfeng-task: 应用服务 - tianfeng-mysql: MySQL数据库 - tianfeng-redis: Redis缓存 3. 验证服务是否正常运行 ```bash docker-compose ps ``` 4. 访问API文档 打开浏览器,访问 http://localhost:8000/docs 查看API文档。 ### 环境变量配置 可以通过修改`docker-compose.yml`文件中的环境变量来配置应用: ```yaml environment: - TIANFENG_ENV=default # 环境名称 - DEBUG=false # 是否开启调试模式 - DB_HOST=db # 数据库主机 - DB_PORT=3306 # 数据库端口 - DB_USER=root # 数据库用户名 - DB_PASSWORD=password # 数据库密码 - DB_NAME=tianfeng_task # 数据库名称 - REDIS_HOST=redis # Redis主机 - REDIS_PORT=6379 # Redis端口 - REDIS_DB=0 # Redis数据库索引 ``` ### 单独构建Docker镜像 如果需要单独构建Docker镜像,可以使用以下命令: ```bash docker build -t tianfeng-task:latest . ``` ### 停止服务 ```bash docker-compose down ``` 如果需要同时删除数据卷(会删除所有数据): ```bash docker-compose down -v ``` ### 查看日志 ```bash # 查看所有服务的日志 docker-compose logs # 查看特定服务的日志 docker-compose logs app docker-compose logs db docker-compose logs redis # 实时查看日志 docker-compose logs -f app ```