# 自动部署功能说明

## 概述

`auto_execute_tasks.py` 脚本现已支持自动将完成的任务脚本和 n8n 工作流部署到生产服务器。

## 快速开始

### 1️⃣ 安装依赖

```bash
pip install paramiko
```

或使用安装脚本：

```bash
python scripts/install_deploy_deps.py
```

### 2️⃣ 测试连接

```bash
python scripts/auto_execute_tasks.py --test-connection
```

### 3️⃣ 运行测试套件

```bash
python scripts/test_deploy.py
```

### 4️⃣ 启动自动部署

```bash
python scripts/auto_execute_tasks.py --chat-loop --use-agent
```

## 生产服务器信息

- **地址**: 192.168.3.143
- **端口**: 22
- **用户**: ubuntu
- **密码**: citumxl2357
- **脚本路径**: `/opt/dataops-platform/datafactory/scripts`
- **工作流路径**: `/opt/dataops-platform/n8n/workflows`

## 功能特性

### ✅ 自动部署（默认启用）

- 任务完成后自动上传 Python 脚本
- 自动查找并上传相关的 n8n 工作流文件
- 自动设置文件执行权限

### 🔍 智能工作流查找

系统会自动查找：
1. 与脚本同目录的 `n8n_workflow_*.json` 文件
2. `datafactory/n8n_workflows/` 目录下的工作流
3. 根据任务名称匹配的工作流文件

### 🛠️ 灵活控制

- 可以禁用自动部署：`--no-deploy`
- 可以手动部署指定任务：`--deploy-now TASK_ID`
- 可以测试连接：`--test-connection`

## 常用命令

| 命令 | 说明 |
|------|------|
| `--test-connection` | 测试 SSH 连接 |
| `--deploy-now 123` | 部署任务 ID 为 123 的脚本 |
| `--no-deploy` | 禁用自动部署 |
| `--chat-loop --use-agent` | Agent 循环模式（自动部署） |
| `--agent-run` | 单次 Agent 运行（自动部署） |
| `--once` | 单次任务检查（自动部署） |

## 使用示例

### 基本使用

```bash
# 启动 Agent 循环模式（推荐）
python scripts/auto_execute_tasks.py --chat-loop --use-agent

# 单次执行
python scripts/auto_execute_tasks.py --once

# Agent 运行模式
python scripts/auto_execute_tasks.py --agent-run
```

### 禁用自动部署

```bash
python scripts/auto_execute_tasks.py --chat-loop --use-agent --no-deploy
```

### 手动部署

```bash
# 部署任务 ID 为 123 的脚本
python scripts/auto_execute_tasks.py --deploy-now 123
```

### 测试和调试

```bash
# 测试 SSH 连接
python scripts/auto_execute_tasks.py --test-connection

# 运行完整测试套件
python scripts/test_deploy.py
```

## 部署流程

```
任务完成 → 同步数据库 → SSH 连接 → 上传脚本 → 上传工作流 → 设置权限 → 完成
```

## 部署日志示例

```
============================================================
🚀 开始自动部署任务: 销售数据生成脚本
============================================================
📦 部署 Python 脚本: datafactory/scripts/sales_data_generator.py
正在连接生产服务器 ubuntu@192.168.3.143:22...
✅ SSH 连接成功
正在上传: sales_data_generator.py -> /opt/dataops-platform/datafactory/scripts/
✅ 脚本部署成功
📦 发现 1 个工作流文件
📦 部署工作流: n8n_workflow_sales_data.json
✅ 工作流部署成功
============================================================
✅ 任务 销售数据生成脚本 部署完成
============================================================
```

## 故障排查

| 问题 | 解决方案 |
|------|---------|
| SSH 连接失败 | 检查网络、防火墙、SSH 服务 |
| 认证失败 | 验证用户名密码 |
| 权限不足 | 检查目录权限 |
| paramiko 未安装 | `pip install paramiko` |
| 文件未找到 | 检查 code_path 和 code_name |

## 文档索引

- 📖 [详细使用指南](./docs/auto_deploy_guide.md) - 完整的功能说明和故障排查
- 📋 [快速参考](./docs/auto_deploy_quick_reference.md) - 常用命令速查
- 📝 [更新日志](./docs/CHANGELOG_auto_deploy.md) - 功能变更记录

## 脚本文件

- `scripts/auto_execute_tasks.py` - 主脚本（已更新）
- `scripts/install_deploy_deps.py` - 依赖安装脚本
- `scripts/test_deploy.py` - 测试脚本

## 安全建议

⚠️ **重要提示**：

1. 当前密码以明文形式存储在代码中
2. 建议后续改用 SSH 密钥认证
3. 确保生产服务器仅在内网访问
4. 定期审计部署日志

## 技术支持

如遇问题：

1. 运行测试脚本：`python scripts/test_deploy.py`
2. 检查日志输出
3. 查看详细文档：[auto_deploy_guide.md](./docs/auto_deploy_guide.md)

## 未来改进

- [ ] SSH 密钥认证
- [ ] 多服务器部署
- [ ] 部署版本管理
- [ ] 自动回滚机制
- [ ] 部署通知功能

## 许可证

与主项目保持一致

---

**最后更新**: 2026-01-07
