291 lines
6.7 KiB
Markdown
291 lines
6.7 KiB
Markdown
# 邮件节点和消息队列节点测试指南
|
||
|
||
## 📋 测试概述
|
||
|
||
本指南将帮助您测试新实现的**邮件节点**和**消息队列节点**功能。
|
||
|
||
## ✅ 已完成功能
|
||
|
||
### 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年
|