n8n_workflow_enhancement_summary.md 12 KB

Data-governance 工作流功能增强总结

完成时间: 2025-11-04 16:00
任务: 完善 Data-governance 工作流元数据管理功能


📋 需求回顾

用户需求:

需要持续完善 Data-governance 工作流。当回答是的时候,需要有一个节点来提示用户输入元数据信息。并判断元数据中文名是否已经存在,如果不存在,则调用 192.168.3.143 上的接口记录这个元数据。

核心需求:

  1. 收集用户输入的元数据信息(中文名、类型、描述)
  2. 检查元数据中文名是否已存在
  3. 如果不存在,调用 192.168.3.143 接口创建元数据

✅ 已完成的工作

1. 后端 API 实现 ✅

新增接口:检查元数据

文件: app/api/meta_data/routes.py

接口: GET /api/meta/check

功能: 检查元数据中文名是否已存在

请求示例:

GET http://192.168.3.143:5000/api/meta/check?name_zh=用户姓名

响应示例:

{
  "code": 200,
  "data": {
    "exists": true,
    "name_zh": "用户姓名"
  },
  "msg": "查询成功"
}

实现代码:

@bp.route('/check', methods=['GET'])
def meta_check():
    """检查元数据中文名是否已存在"""
    try:
        name_zh = request.args.get('name_zh')
        
        if not name_zh:
            return jsonify(failed({}, "缺少name_zh参数"))
        
        with neo4j_driver.get_session() as session:
            cypher = """
            MATCH (n:DataMeta {name_zh: $name_zh})
            RETURN count(n) > 0 as exists
            """
            result = session.run(cypher, name_zh=name_zh)
            record = result.single()
            
            if record:
                exists = record["exists"]
                logger.info(f"检查元数据 '{name_zh}': {'存在' if exists else '不存在'}")
                return jsonify(success({
                    "exists": exists,
                    "name_zh": name_zh
                }, "查询成功"))
            else:
                return jsonify(success({
                    "exists": False,
                    "name_zh": name_zh
                }, "查询成功"))
                
    except Exception as e:
        logger.error(f"检查元数据失败: {str(e)}")
        return jsonify(failed({}, f"检查失败: {str(e)}"))

特点:

  • ✅ 使用 Neo4j Cypher 查询
  • ✅ 统一的返回格式
  • ✅ 完整的错误处理
  • ✅ 日志记录

2. n8n 工作流更新 ✅

更新 AI Agent 系统消息

工作流ID: tWfjLZE1FmMfQAIn

新系统消息:

你是一个专业的数据治理助手,负责帮助用户创建元数据。

工作流程:
1. 当用户表示需要创建元数据时,询问用户提供以下信息:
   - 元数据中文名(必填)
   - 数据类型(string/int/float/date等,默认string)
   - 描述信息(选填)

2. 收集完信息后:
   - 使用 check_metadata 工具检查元数据是否已存在
   - 如果不存在,使用 create_metadata 工具创建
   - 如果已存在,告诉用户该元数据已存在

3. 返回创建结果给用户

注意:
- 友好地引导用户提供信息
- 元数据中文名是必需的
- 如果元数据已存在,告诉用户并询问是否需要其他帮助
- 每次只处理一个元数据的创建

更新结果:

  • ✅ AI Agent 现在会主动引导用户提供信息
  • ✅ 明确了工作流程和工具使用方式
  • ✅ 添加了错误处理指导

3. 文档编写 ✅

创建的文档

  1. docs/n8n_improved_workflow_design.md

    • 详细的需求分析
    • 工作流设计方案(方案 A 和 方案 B)
    • API 接口规范
    • 测试场景
    • 实施步骤
  2. docs/n8n_add_tools_guide.md

    • 在 n8n 界面添加 HTTP Request Tools 的详细步骤
    • 每个 Tool 的完整配置参数
    • 连接方式说明
    • 测试场景和验收标准
    • 调试技巧
  3. docs/n8n_chat_trigger_error_diagnosis.md

    • Internal Server Error 问题的深度诊断
    • 根本原因分析
    • 3 种解决方案
    • 完整的修复步骤
  4. N8N_WORKFLOW_SUMMARY.md (更新)

    • 添加了最新更新章节
    • 记录了新增功能和改进

🎯 待完成的工作

在 n8n 界面手动添加 Tools

原因:

  • MCP API 无法正确建立 LangChain Tools 的 ai_tool 连接
  • 需要在 n8n 图形界面中手动操作

需要添加的 Tools:

1. HTTP Request Tool - check_metadata

配置:

  • Name: check_metadata
  • Method: GET
  • URL: http://192.168.3.143:5000/api/meta/check?name_zh={{ $parameter.name_zh }}
  • Placeholder: name_zh (元数据中文名)
  • 连接: 通过 ai_tool 连接到 AI Agent

2. HTTP Request Tool - create_metadata

配置:

  • Name: create_metadata
  • Method: POST
  • URL: http://192.168.3.143:5000/api/meta/node/add
  • Body: JSON with name_zh, data_type, describe, source, status
  • Placeholders: name_zh, data_type, description
  • 连接: 通过 ai_tool 连接到 AI Agent

详细步骤: 参见 docs/n8n_add_tools_guide.md

预计时间: 15-20 分钟


🧪 测试计划

测试场景 1: 创建新元数据(正常流程)

步骤 1: 访问 https://n8n.citupro.com/chat/tWfjLZE1FmMfQAIn
步骤 2: 输入 "是,我要创建元数据"
预期: AI 询问元数据信息

步骤 3: 输入 "中文名:测试字段001,类型:string,描述:测试字段"
预期: 
- AI 调用 check_metadata 检查
- 元数据不存在
- AI 调用 create_metadata 创建
- 返回成功消息

验收: ✅ 元数据成功创建,可在 Neo4j 中查询到

测试场景 2: 元数据已存在

步骤 1: 输入 "是,我要创建元数据"
步骤 2: 输入 "中文名:测试字段001,类型:string"
预期:
- AI 调用 check_metadata 检查
- 发现元数据已存在
- AI 提示用户该元数据已存在
- 询问是否需要其他帮助

验收: ✅ 未重复创建,友好提示

测试场景 3: 信息不完整

步骤 1: 输入 "是,我要创建元数据"
步骤 2: 输入 "类型是 string"
预期:
- AI 识别信息不完整
- 提示需要提供中文名(必填)

验收: ✅ 友好提示缺少必填信息

测试场景 4: API 错误处理

步骤: 断开 192.168.3.143 网络
预期:
- Tool 调用失败
- AI 友好提示用户服务暂时不可用

验收: ✅ 错误处理正确

📊 技术方案总结

架构设计

选择的方案: LangChain AI Agent + HTTP Request Tools

优势:

  1. 用户体验好: 对话式交互,自然流畅
  2. 灵活性高: AI 自动判断何时调用哪个工具
  3. 可扩展: 后续可以轻松添加更多工具
  4. 错误处理: AI 可以理解错误并友好反馈

工作流程:

用户输入
    ↓
Chat Trigger
    ↓
AI Agent (DeepSeek)
    ├─ 分析用户意图
    ├─ 提取参数信息
    ├─ 决定调用哪个工具
    ↓
工具层
    ├─ check_metadata Tool → GET /api/meta/check
    └─ create_metadata Tool → POST /api/meta/node/add
    ↓
API 层 (192.168.3.143)
    ├─ Neo4j 查询
    └─ Neo4j 创建
    ↓
AI Agent 处理响应
    ↓
返回用户

关键技术点

  1. LangChain Tools

    • 使用 @n8n/n8n-nodes-langchain.toolHttpRequest
    • 通过 ai_tool 连接类型连接到 AI Agent
    • AI 根据 Tool Description 自动决定调用时机
  2. 参数提取

    • AI Agent 从对话中提取结构化参数
    • 使用 Placeholder Definitions 定义参数
    • 支持默认值(如 data_type || 'string'
  3. 错误处理

    • Tool 调用失败时 AI Agent 可以感知
    • AI 会友好地告诉用户发生了什么
    • 支持重试机制

🎓 经验总结

遇到的问题

问题 1: MCP API 无法正确添加 LangChain Tools

原因:

  • LangChain Tools 需要特殊的 ai_tool 连接类型
  • MCP API 在建立这种连接时存在限制
  • 验证机制要求 Tools 必须有连接,否则报错

解决方案:

  • 放弃通过 API 自动化添加
  • 改为提供详细的手动操作指南
  • 编写 docs/n8n_add_tools_guide.md 文档

经验:

  • 对于复杂的 LangChain 工作流,图形界面操作更可靠
  • API 适合简单的节点操作,不适合复杂的连接配置

问题 2: Chat Trigger 的 Internal Server Error

原因:

  • Chat Trigger 期望 AI Agent 是最后一个节点
  • 在 AI Agent 后面添加其他节点会导致响应失败
  • Set 节点配置不完整(空的 assignments)

解决方案:

  • 移除 AI Agent 后的所有 main 连接
  • 使用 Tools 来执行操作,而不是后续节点
  • 修复 Set 节点配置

经验:

  • Chat Trigger + AI Agent 必须保持简单结构
  • AI Agent 应该是 main 连接的终点
  • 所有操作通过 Tools 完成

最佳实践

  1. AI Agent 系统消息设计

    • ✅ 明确工作流程
    • ✅ 说明何时使用哪个工具
    • ✅ 包含错误处理指导
    • ✅ 保持语言自然友好
  2. Tool Description 编写

    • ✅ 清晰描述功能
    • ✅ 明确说明需要哪些参数
    • ✅ 说明返回什么结果
    • ✅ AI 根据 Description 决定是否调用
  3. API 设计

    • ✅ 统一的返回格式
    • ✅ 完整的错误处理
    • ✅ 清晰的错误消息
    • ✅ 日志记录

📈 项目价值

业务价值

  1. 效率提升:

    • 从手动填表到对话式交互
    • 自动检查重复,避免数据冗余
    • 实时反馈,减少等待时间
  2. 用户体验:

    • 自然语言交互,无需学习界面
    • 友好的错误提示
    • 智能引导,减少输入错误
  3. 数据质量:

    • 自动检查重复,保证数据唯一性
    • 必填字段验证
    • 类型约束

技术价值

  1. 架构示范:

    • Chat Trigger + AI Agent + Tools 的标准模式
    • 可复用到其他数据治理场景
  2. 扩展性:

    • 易于添加新工具(如数据质量检查、数据标准制定)
    • 易于添加新功能
  3. 可维护性:

    • 清晰的架构
    • 完整的文档
    • 标准的 API 接口

🚀 后续建议

短期(1-2周)

  1. 添加更多元数据字段

    • 支持更多属性(如分类、标签、责任人)
    • 支持自定义字段
  2. 增强验证规则

    • 数据类型格式验证
    • 中文名命名规范检查
    • 必填字段完整性验证
  3. 批量操作

    • 支持一次创建多个元数据
    • 支持从文件导入

中期(1-3个月)

  1. 元数据管理扩展

    • 元数据更新功能
    • 元数据删除功能
    • 元数据查询功能
  2. 数据标准制定

    • 添加数据标准创建工具
    • 数据标准关联到元数据
  3. 数据质量检查

    • 添加数据质量规则配置
    • 自动检查数据质量

长期(3-6个月)

  1. 智能推荐

    • 基于历史数据推荐元数据属性
    • 自动关联相关元数据
  2. 工作流编排

    • 支持复杂的数据治理流程
    • 多步骤审批机制
  3. 可视化分析

    • 元数据血缘图谱
    • 数据质量仪表板

📞 支持与反馈

文档索引

  • 操作指南: docs/n8n_add_tools_guide.md
  • 设计方案: docs/n8n_improved_workflow_design.md
  • 故障排除: docs/n8n_chat_trigger_error_diagnosis.md
  • 总体概览: N8N_WORKFLOW_SUMMARY.md

联系方式

如遇问题或需要协助,请查阅以上文档或联系项目团队。


✅ 工作完成确认

后端开发: ✅ 完成
工作流设计: ✅ 完成
文档编写: ✅ 完成
手动配置指南: ✅ 完成

待用户操作:

  • ⏳ 在 n8n 界面添加 HTTP Request Tools(15-20分钟)
  • ⏳ 测试工作流功能

预计总工作量:

  • 已完成:2-3 小时(后端 + 工作流 + 文档)
  • 待完成:15-20 分钟(手动添加 Tools)

完成日期: 2025-11-04
版本: v1.0
状态: ✅ 后端和设计完成,等待前端配置