# Data-governance 工作流更新总结

**更新时间**: 2025-11-04  
**工作流 ID**: `tWfjLZE1FmMfQAIn`  
**工作流名称**: Data-governance

---

## 🎯 更新目标

修改工作流，使其能够：
1. 在聊天中获取元数据名称
2. 自动判断元数据是否已经存在
3. 如果不存在就添加元数据
4. 如果已经存在就返回存在的信息

---

## ✅ 已完成的更新

### 1. 更新 Chat Trigger 节点

**修改内容**:
- **欢迎消息**: 更新为更直接的提示，让用户直接输入元数据名称
- **输入提示**: 从"请输入您的需求..."改为"请输入元数据名称..."
- **副标题**: 从"帮助您进行元数据管理和数据治理"改为"智能元数据管理和查询"

**新的欢迎消息**:
```
您好！我是数据治理助手。

我可以帮助您管理和创建元数据。

请直接告诉我您想要查询或创建的元数据名称，例如：
- "检查元数据：其他费用定额"
- "创建元数据：其他费用定额，类型string，描述医疗行业费用元数据"

我会自动检查该元数据是否已存在，如果不存在则为您创建。
```

---

### 2. 更新 AI Agent 系统消息

**新的工作流程**:

1. **当用户提供元数据名称时**（无论是要求查询还是创建），首先使用 `check_metadata` 工具检查该元数据是否已存在

2. **根据检查结果**:
   - **如果元数据已存在（exists=true）**:
     * 告诉用户该元数据已经存在于系统中
     * 返回元数据的相关信息
     * 询问用户是否需要其他帮助
   
   - **如果元数据不存在（exists=false）**:
     * 如果用户提供了完整信息（名称、类型、描述），使用 `create_metadata` 工具创建元数据
     * 如果用户只提供了名称，询问用户是否需要创建，如果需要则询问类型和描述信息
     * 创建成功后，确认创建结果并返回给用户

3. **如果用户输入包含元数据名称，直接提取名称并使用工具检查，不需要额外询问**

**关键原则**:
- 始终先检查元数据是否存在，再决定是否需要创建
- 如果元数据已存在，明确告诉用户，不要重复创建
- 友好地引导用户提供信息（如果需要创建）
- 每次只处理一个元数据
- 使用工具返回的 `exists` 字段判断是否存在，不要猜测

---

## 📊 工作流结构

### 当前节点

1. **Chat Trigger** - 聊天触发器
2. **AI Agent** - AI 代理（核心处理节点）
3. **DeepSeek Chat Model** - DeepSeek 语言模型
4. **检查元数据工具** (toolHttpRequest) - 调用 `/api/meta/check` 接口
5. **创建元数据工具** (toolHttpRequest) - 调用 `/api/meta/node/add` 接口

### 保留但未使用的节点（可以删除）

- **判断用户意图** (IF 节点) - 不再需要，AI Agent 内部处理逻辑
- **调用元数据新增API** (HTTP Request) - 不再需要，使用工具替代
- **设置确认消息** (Set 节点) - 不再需要
- **设置拒绝消息** (Set 节点) - 不再需要

---

## 🔄 工作流程

### 流程 1: 用户查询已存在的元数据

```
用户输入: "其他费用定额"
    ↓
AI Agent 提取元数据名称
    ↓
调用 check_metadata 工具
    ↓
工具返回: exists=true
    ↓
AI Agent 告诉用户: "该元数据已存在"
    ↓
返回给用户
```

### 流程 2: 用户创建新元数据（提供完整信息）

```
用户输入: "创建元数据：测试数据，类型string，描述测试描述"
    ↓
AI Agent 提取元数据名称: "测试数据"
    ↓
调用 check_metadata 工具
    ↓
工具返回: exists=false
    ↓
AI Agent 提取类型和描述信息
    ↓
调用 create_metadata 工具
    ↓
工具返回: 创建成功
    ↓
AI Agent 告诉用户: "元数据创建成功"
    ↓
返回给用户
```

### 流程 3: 用户只提供名称，需要创建

```
用户输入: "测试元数据"
    ↓
AI Agent 提取元数据名称: "测试元数据"
    ↓
调用 check_metadata 工具
    ↓
工具返回: exists=false
    ↓
AI Agent 询问用户: "该元数据不存在，是否需要创建？如果需要，请提供类型和描述"
    ↓
用户提供信息
    ↓
调用 create_metadata 工具
    ↓
返回创建结果
```

---

## 🔧 工具配置

### 检查元数据工具

- **URL**: `http://192.168.3.143:5000/api/meta/check?name_zh={name_zh}`
- **方法**: GET
- **参数**: `name_zh` (元数据中文名)
- **返回**: `{exists: true/false, name_zh: "..."}`

### 创建元数据工具

- **URL**: `http://192.168.3.143:5000/api/meta/node/add`
- **方法**: POST
- **参数**: 
  - `name_zh` (必填)
  - `data_type` (默认 string)
  - `description` (选填)
- **返回**: 创建结果

---

## ✅ 测试建议

### 测试用例 1: 查询已存在的元数据

**输入**: "其他费用定额"

**预期结果**: 
- 调用 check_metadata 工具
- 返回 exists=true
- 告诉用户元数据已存在

---

### 测试用例 2: 创建新元数据（完整信息）

**输入**: "创建元数据：新测试数据，类型string，描述这是一个测试"

**预期结果**:
- 调用 check_metadata 工具
- 返回 exists=false
- 调用 create_metadata 工具
- 创建成功
- 告诉用户创建成功

---

### 测试用例 3: 创建新元数据（只提供名称）

**输入**: "新元数据名称"

**预期结果**:
- 调用 check_metadata 工具
- 返回 exists=false
- AI Agent 询问是否需要创建，需要类型和描述
- 用户提供后创建

---

### 测试用例 4: 尝试创建已存在的元数据

**输入**: "创建元数据：其他费用定额，类型string，描述测试"

**预期结果**:
- 调用 check_metadata 工具
- 返回 exists=true
- 告诉用户元数据已存在，不进行创建

---

## 📝 注意事项

1. **AI Agent 是终端节点**: AI Agent 的输出会直接返回到聊天界面，无需后续节点

2. **工具自动调用**: AI Agent 会根据系统消息的指导，自动决定何时调用工具

3. **错误处理**: 如果工具调用失败，AI Agent 会收到错误信息并告知用户

4. **接口验证**: 确保 `/api/meta/check` 和 `/api/meta/node/add` 接口正常工作

---

## 🚀 下一步

1. **测试工作流**: 使用上述测试用例验证工作流是否正常工作

2. **清理节点** (可选): 可以删除不再使用的节点（IF、HTTP Request、Set 节点），但不影响功能

3. **验证接口**: 确保接口在 `192.168.3.143:5000` 上正常工作

---

**更新完成时间**: 2025-11-04  
**状态**: ✅ 配置已更新，等待测试验证
