# n8n Data-governance 工作流文档

## 工作流概述

**工作流名称**: Data-governance  
**工作流ID**: rZK08l4aNUGgwmfO  
**状态**: 未激活（inactive）  
**创建时间**: 2025-11-04

## 功能描述

这是一个基于 n8n 的数据治理对话工作流，通过交互式对话实现元数据管理功能：

1. 主动询问用户是否需要进行元数据管理
2. 根据用户的确认或拒绝响应，执行不同的操作：
   - **确认**：发起元数据新增工作节点，调用 DataOps API
   - **拒绝**：返回到对话，提供其他数据治理服务选项

## 工作流结构

### 节点说明

#### 1. When chat message received (Manual Trigger)
- **类型**: Manual Trigger
- **位置**: (240, 380)
- **功能**: 手动触发工作流启动
- **说明**: 在实际使用中，可以替换为 Webhook 或 Chat Trigger 节点

#### 2. Initial Message (Set Node)
- **类型**: Set Node
- **位置**: (460, 380)
- **功能**: 设置初始欢迎消息
- **消息内容**:
```
您好！我是数据治理助手。

我可以帮助您：
- 进行元数据管理
- 数据标准制定
- 数据质量检查

请问您需要进行元数据管理吗？（请回答：是 或 否）
```

#### 3. Check User Response (IF Node)
- **类型**: IF 条件判断节点
- **位置**: (680, 380)
- **条件**: 检查 `user_response` 字段是否等于 "是"
- **输出**:
  - **True分支**: 用户确认，执行元数据新增
  - **False分支**: 用户拒绝，返回对话

#### 4. Add Metadata (HTTP Request Node)
- **类型**: HTTP Request
- **位置**: (920, 280)
- **方法**: POST
- **URL**: `http://localhost:5000/api/meta/add`
- **请求体**:
```json
{
  "name_zh": "新建元数据",
  "data_type": "string",
  "description": "通过工作流创建的元数据",
  "source": "data-governance-workflow"
}
```
- **说明**: 调用 DataOps 平台的元数据新增接口

#### 5. Confirm Message (Set Node)
- **类型**: Set Node
- **位置**: (1140, 280)
- **功能**: 返回确认消息
- **消息内容**:
```
好的！已为您发起元数据新增工作流程。

操作结果：{{ $json.statusMessage || '处理中...' }}

如需继续其他数据治理操作，请告诉我。
```

#### 6. Reject Message (Set Node)
- **类型**: Set Node
- **位置**: (920, 480)
- **功能**: 返回拒绝消息
- **消息内容**:
```
好的，已取消元数据管理操作。

还有其他需要帮助的吗？
- 数据标准制定
- 数据质量检查
- 其他数据治理服务
```

## 工作流程图

```
┌─────────────────────┐
│ When chat message   │
│   received          │
│  (Manual Trigger)   │
└──────────┬──────────┘
           │
           v
┌─────────────────────┐
│  Initial Message    │
│   (显示欢迎信息)    │
└──────────┬──────────┘
           │
           v
┌─────────────────────┐
│ Check User Response │
│  (判断用户回答)     │
└──────┬──────────┬───┘
       │          │
   是  │          │ 否
       v          v
┌─────────────┐  ┌──────────────┐
│Add Metadata │  │Reject Message│
│(调用API)    │  │ (返回对话)   │
└──────┬──────┘  └──────────────┘
       │
       v
┌─────────────┐
│Confirm Msg  │
│(确认消息)   │
└─────────────┘
```

## 数据流

### 输入数据格式

```json
{
  "user_response": "是"  // 或 "否"
}
```

### 输出数据格式

**确认路径输出**:
```json
{
  "response": "好的！已为您发起元数据新增工作流程。\n\n操作结果：成功\n\n如需继续其他数据治理操作，请告诉我。"
}
```

**拒绝路径输出**:
```json
{
  "response": "好的，已取消元数据管理操作。\n\n还有其他需要帮助的吗？\n- 数据标准制定\n- 数据质量检查\n- 其他数据治理服务"
}
```

## 配置说明

### 环境变量

工作流中使用的 API 端点：
- **DataOps API**: `http://localhost:5000`
- **元数据新增接口**: `/api/meta/add`

### 时区设置

- **时区**: Asia/Shanghai (中国标准时间)

### 执行数据保存

- **成功执行**: 保存所有数据
- **失败执行**: 保存所有数据
- **执行顺序**: v1

## 使用方法

### 1. 激活工作流

在 n8n 界面中找到 "Data-governance" 工作流，点击激活按钮。

### 2. 测试工作流

1. 点击 "Execute Workflow" 按钮
2. 在弹出的对话框中输入用户响应
3. 观察工作流执行结果

### 3. 集成到实际应用

#### 方式 1: 使用 Webhook 触发

将 Manual Trigger 节点替换为 Webhook 节点：

```json
{
  "type": "n8n-nodes-base.webhook",
  "parameters": {
    "httpMethod": "POST",
    "path": "data-governance-chat",
    "responseMode": "responseNode"
  }
}
```

#### 方式 2: 使用 Chat Trigger

将 Manual Trigger 节点替换为 Chat Trigger 节点（需要 @n8n/n8n-nodes-langchain 包）：

```json
{
  "type": "@n8n/n8n-nodes-langchain.chatTrigger",
  "parameters": {
    "options": {
      "public": true,
      "welcomeMessage": "您好！我是数据治理助手..."
    }
  }
}
```

## 扩展建议

### 1. 添加 AI 智能理解

可以在 "Check User Response" 节点之前添加 AI 节点，使用 LLM 理解用户意图：

```json
{
  "type": "@n8n/n8n-nodes-langchain.agent",
  "parameters": {
    "promptType": "define",
    "text": "判断用户是否确认进行元数据管理，返回 CONFIRM 或 REJECT"
  }
}
```

### 2. 支持更多数据治理功能

在拒绝分支添加 Switch 节点，根据用户选择执行不同的数据治理操作：
- 数据标准制定
- 数据质量检查
- 数据标签管理

### 3. 添加数据验证

在调用 API 之前，添加数据验证节点，确保请求数据的完整性：

```json
{
  "type": "n8n-nodes-base.function",
  "parameters": {
    "functionCode": "// 验证必填字段\nif (!$json.name_zh) {\n  throw new Error('元数据名称不能为空');\n}\nreturn $json;"
  }
}
```

### 4. 添加错误处理

为 HTTP Request 节点添加错误处理分支：

```json
{
  "type": "n8n-nodes-base.if",
  "parameters": {
    "conditions": {
      "conditions": [{
        "leftValue": "={{ $json.code }}",
        "rightValue": 200,
        "operator": {"type": "number", "operation": "equals"}
      }]
    }
  }
}
```

## 故障排查

### 常见问题

1. **API 调用失败**
   - 检查 DataOps 平台是否正常运行
   - 验证 API 端点 URL 是否正确
   - 查看 n8n 日志获取详细错误信息

2. **用户响应未正确识别**
   - 检查 IF 节点的条件配置
   - 确认 user_response 字段名称正确
   - 考虑使用不区分大小写的比较

3. **消息格式问题**
   - 检查 Set 节点中的表达式语法
   - 确认换行符 `\n` 正确显示

## 相关接口

### DataOps 元数据新增接口

**端点**: `POST /api/meta/add`

**请求参数**:
```json
{
  "name_zh": "元数据中文名称",
  "data_type": "数据类型",
  "description": "描述信息",
  "source": "数据来源"
}
```

**响应格式**:
```json
{
  "code": 200,
  "data": {},
  "msg": "success"
}
```

## 版本历史

- **v1.0** (2025-11-04): 初始版本
  - 实现基本的对话流程
  - 支持确认/拒绝两种路径
  - 集成元数据新增 API

## 后续规划

- [ ] 集成 LLM 提升对话理解能力
- [ ] 支持更多数据治理操作
- [ ] 添加用户会话管理
- [ ] 实现多轮对话能力
- [ ] 添加数据验证和错误处理
- [ ] 支持批量操作

## 联系方式

如有问题或建议，请联系 DataOps 平台开发团队。







