第一次提交
This commit is contained in:
290
邮件和消息队列节点测试指南.md
Normal file
290
邮件和消息队列节点测试指南.md
Normal file
@@ -0,0 +1,290 @@
|
||||
# 邮件节点和消息队列节点测试指南
|
||||
|
||||
## 📋 测试概述
|
||||
|
||||
本指南将帮助您测试新实现的**邮件节点**和**消息队列节点**功能。
|
||||
|
||||
## ✅ 已完成功能
|
||||
|
||||
### 1. 邮件节点 (Email Node)
|
||||
- ✅ SMTP配置(服务器、端口、用户名、密码)
|
||||
- ✅ TLS/SSL支持
|
||||
- ✅ 发件人、收件人、抄送、密送
|
||||
- ✅ 邮件主题和正文(支持纯文本和HTML)
|
||||
- ✅ 附件支持(文件路径或Base64编码)
|
||||
- ✅ 变量替换(支持 {key} 和 ${key} 格式)
|
||||
|
||||
### 2. 消息队列节点 (Message Queue Node)
|
||||
- ✅ RabbitMQ集成
|
||||
- Exchange和Routing Key支持
|
||||
- 直接队列发送
|
||||
- 变量替换
|
||||
- ✅ Kafka集成
|
||||
- Topic发送
|
||||
- 多服务器配置
|
||||
- 变量替换
|
||||
|
||||
## 🧪 测试步骤
|
||||
|
||||
### 前置条件
|
||||
|
||||
1. **安装依赖**
|
||||
```bash
|
||||
cd /home/renjianbo/aiagent/backend
|
||||
pip3 install aiosmtplib aio-pika kafka-python
|
||||
```
|
||||
|
||||
2. **重启后端服务**(如果需要)
|
||||
```bash
|
||||
# 如果使用Docker
|
||||
docker-compose restart backend
|
||||
|
||||
# 如果直接运行
|
||||
# 重启uvicorn服务
|
||||
```
|
||||
|
||||
### 测试1: 邮件节点
|
||||
|
||||
#### 方式一:使用测试SMTP服务(推荐)
|
||||
|
||||
1. **注册测试邮箱服务**
|
||||
- [Mailtrap](https://mailtrap.io) - 免费测试邮箱
|
||||
- [Ethereal Email](https://ethereal.email) - 临时测试邮箱
|
||||
|
||||
2. **在前端创建测试工作流**
|
||||
- 登录系统
|
||||
- 创建工作流
|
||||
- 添加节点:
|
||||
- 开始节点
|
||||
- 邮件节点
|
||||
- 结束节点
|
||||
|
||||
3. **配置邮件节点**
|
||||
```
|
||||
SMTP服务器: smtp.mailtrap.io (或从Mailtrap获取)
|
||||
SMTP端口: 2525 (或587)
|
||||
SMTP用户名: [从Mailtrap获取]
|
||||
SMTP密码: [从Mailtrap获取]
|
||||
使用TLS: 是
|
||||
发件人邮箱: test@example.com
|
||||
收件人邮箱: recipient@example.com
|
||||
邮件主题: 测试邮件 - {test_key}
|
||||
邮件正文类型: 纯文本
|
||||
邮件正文: 这是一封测试邮件。\n\n测试数据: {test_data}
|
||||
```
|
||||
|
||||
4. **运行工作流**
|
||||
- 输入参数:
|
||||
```json
|
||||
{
|
||||
"test_key": "Hello World",
|
||||
"test_data": "这是测试数据"
|
||||
}
|
||||
```
|
||||
- 点击"运行"
|
||||
- 检查执行结果
|
||||
|
||||
#### 方式二:使用Gmail SMTP
|
||||
|
||||
1. **配置Gmail应用专用密码**
|
||||
- 登录Google账号
|
||||
- 启用两步验证
|
||||
- 生成应用专用密码
|
||||
|
||||
2. **配置邮件节点**
|
||||
```
|
||||
SMTP服务器: smtp.gmail.com
|
||||
SMTP端口: 587
|
||||
SMTP用户名: your-email@gmail.com
|
||||
SMTP密码: [应用专用密码]
|
||||
使用TLS: 是
|
||||
发件人邮箱: your-email@gmail.com
|
||||
收件人邮箱: recipient@example.com
|
||||
邮件主题: 测试邮件
|
||||
邮件正文: 这是一封测试邮件
|
||||
```
|
||||
|
||||
### 测试2: RabbitMQ消息队列节点
|
||||
|
||||
#### 前置条件:启动RabbitMQ
|
||||
|
||||
**使用Docker启动RabbitMQ:**
|
||||
```bash
|
||||
docker run -d \
|
||||
--name rabbitmq \
|
||||
-p 5672:5672 \
|
||||
-p 15672:15672 \
|
||||
-e RABBITMQ_DEFAULT_USER=admin \
|
||||
-e RABBITMQ_DEFAULT_PASS=admin123 \
|
||||
rabbitmq:3-management
|
||||
```
|
||||
|
||||
访问管理界面: http://localhost:15672 (用户名: admin, 密码: admin123)
|
||||
|
||||
#### 测试步骤
|
||||
|
||||
1. **在前端创建测试工作流**
|
||||
- 添加节点:
|
||||
- 开始节点
|
||||
- 消息队列节点
|
||||
- 结束节点
|
||||
|
||||
2. **配置消息队列节点**
|
||||
```
|
||||
队列类型: RabbitMQ
|
||||
主机地址: localhost
|
||||
端口: 5672
|
||||
用户名: admin
|
||||
密码: admin123
|
||||
队列名称: test_queue
|
||||
Routing Key: test.routing.key
|
||||
消息内容: {"test_key": "{test_key}", "test_data": "{test_data}"}
|
||||
```
|
||||
|
||||
3. **运行工作流**
|
||||
- 输入参数:
|
||||
```json
|
||||
{
|
||||
"test_key": "Hello RabbitMQ",
|
||||
"test_data": "这是测试数据"
|
||||
}
|
||||
```
|
||||
- 点击"运行"
|
||||
- 在RabbitMQ管理界面查看队列中的消息
|
||||
|
||||
### 测试3: Kafka消息队列节点
|
||||
|
||||
#### 前置条件:启动Kafka
|
||||
|
||||
**使用Docker Compose启动Kafka:**
|
||||
```yaml
|
||||
# docker-compose-kafka.yml
|
||||
version: '3.8'
|
||||
services:
|
||||
zookeeper:
|
||||
image: confluentinc/cp-zookeeper:latest
|
||||
environment:
|
||||
ZOOKEEPER_CLIENT_PORT: 2181
|
||||
ZOOKEEPER_TICK_TIME: 2000
|
||||
ports:
|
||||
- "2181:2181"
|
||||
|
||||
kafka:
|
||||
image: confluentinc/cp-kafka:latest
|
||||
depends_on:
|
||||
- zookeeper
|
||||
ports:
|
||||
- "9092:9092"
|
||||
environment:
|
||||
KAFKA_BROKER_ID: 1
|
||||
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
|
||||
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
|
||||
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
|
||||
```
|
||||
|
||||
启动命令:
|
||||
```bash
|
||||
docker-compose -f docker-compose-kafka.yml up -d
|
||||
```
|
||||
|
||||
#### 测试步骤
|
||||
|
||||
1. **在前端创建测试工作流**
|
||||
- 添加节点:
|
||||
- 开始节点
|
||||
- 消息队列节点(选择Kafka)
|
||||
- 结束节点
|
||||
|
||||
2. **配置消息队列节点**
|
||||
```
|
||||
队列类型: Kafka
|
||||
Bootstrap Servers: localhost:9092
|
||||
Topic: test_topic
|
||||
消息内容: {"test_key": "{test_key}", "test_data": "{test_data}"}
|
||||
```
|
||||
|
||||
3. **运行工作流**
|
||||
- 输入参数:
|
||||
```json
|
||||
{
|
||||
"test_key": "Hello Kafka",
|
||||
"test_data": "这是测试数据"
|
||||
}
|
||||
```
|
||||
- 点击"运行"
|
||||
- 使用Kafka消费者工具查看消息
|
||||
|
||||
## 🔍 验证要点
|
||||
|
||||
### 邮件节点验证
|
||||
- ✅ 邮件成功发送
|
||||
- ✅ 变量替换正确(主题和正文中的 {key} 被替换)
|
||||
- ✅ HTML格式邮件正确渲染
|
||||
- ✅ 附件正确附加(如果配置了附件)
|
||||
|
||||
### 消息队列节点验证
|
||||
- ✅ 消息成功发送到队列
|
||||
- ✅ 变量替换正确
|
||||
- ✅ RabbitMQ: 消息出现在指定队列
|
||||
- ✅ Kafka: 消息出现在指定Topic
|
||||
|
||||
## 🐛 常见问题
|
||||
|
||||
### 邮件节点问题
|
||||
|
||||
1. **SMTP连接失败**
|
||||
- 检查SMTP服务器地址和端口
|
||||
- 检查防火墙设置
|
||||
- 确认TLS/SSL配置正确
|
||||
|
||||
2. **认证失败**
|
||||
- 检查用户名和密码
|
||||
- Gmail需要使用应用专用密码
|
||||
- 确认账号已启用SMTP访问
|
||||
|
||||
3. **变量未替换**
|
||||
- 确认输入数据中包含对应的key
|
||||
- 检查变量格式:{key} 或 ${key}
|
||||
|
||||
### 消息队列节点问题
|
||||
|
||||
1. **RabbitMQ连接失败**
|
||||
- 确认RabbitMQ服务正在运行
|
||||
- 检查主机地址和端口
|
||||
- 确认用户名和密码正确
|
||||
|
||||
2. **Kafka连接失败**
|
||||
- 确认Kafka服务正在运行
|
||||
- 检查Bootstrap Servers配置
|
||||
- 确认Topic已创建
|
||||
|
||||
3. **消息未发送**
|
||||
- 检查节点配置
|
||||
- 查看执行日志
|
||||
- 确认队列/Topic存在
|
||||
|
||||
## 📝 测试检查清单
|
||||
|
||||
- [ ] 邮件节点配置验证
|
||||
- [ ] 邮件节点变量替换测试
|
||||
- [ ] 邮件节点HTML格式测试
|
||||
- [ ] 邮件节点附件测试(可选)
|
||||
- [ ] RabbitMQ节点配置验证
|
||||
- [ ] RabbitMQ节点消息发送测试
|
||||
- [ ] Kafka节点配置验证
|
||||
- [ ] Kafka节点消息发送测试
|
||||
- [ ] 错误处理测试(无效配置)
|
||||
- [ ] 执行日志验证
|
||||
|
||||
## 🎯 下一步
|
||||
|
||||
测试通过后,您可以:
|
||||
1. 在实际工作流中使用这些节点
|
||||
2. 继续开发其他功能(模板市场、协作、批量操作)
|
||||
3. 优化节点功能和用户体验
|
||||
|
||||
---
|
||||
|
||||
**测试脚本位置**: `/home/renjianbo/aiagent/backend/test_email_mq_nodes.py`
|
||||
|
||||
**最后更新**: 2024年
|
||||
Reference in New Issue
Block a user