# 邮件节点和消息队列节点测试指南

## 📋 测试概述

本指南将帮助您测试新实现的**邮件节点**和**消息队列节点**功能。

## ✅ 已完成功能

### 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年
