8
n8n 中文网amn8n.com

多级文档审批与审计工作流

高级

这是一个Document Extraction, Multimodal AI领域的自动化工作流,包含 38 个节点。主要使用 If, Set, Form, Gmail, Crypto 等节点。 使用 Supabase 和 Gmail 自动化多级工作流的文档审批

前置要求
  • Google 账号和 Gmail API 凭证
  • HTTP Webhook 端点(n8n 会自动生成)
  • Supabase URL 和 API Key
  • 可能需要目标 API 的认证凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "5myl9GWWVupDIebk",
  "meta": {
    "instanceId": "70273a2379644db63ce659827cfd8abac2d0b189210eafa02dd5376e3a62cd1d",
    "templateCredsSetupCompleted": true
  },
  "name": "多级文档审批与审计工作流",
  "tags": [],
  "nodes": [
    {
      "id": "9e61af97-d649-4260-becd-ea8865bad9ff",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -560,
        1104
      ],
      "webhookId": "df187a3e-6f1c-4dc6-9821-47f3a043c43e",
      "parameters": {
        "path": "approve",
        "options": {},
        "responseMode": "responseNode"
      },
      "typeVersion": 2.1
    },
    {
      "id": "cb8cc119-29a2-48e7-84bf-81f79d57c27e",
      "name": "审计1",
      "type": "n8n-nodes-base.supabase",
      "position": [
        -256,
        2032
      ],
      "parameters": {
        "tableId": "audit_logs",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "document_id",
              "fieldValue": "={{ $('get_approval_data').item.json.document_id }}"
            },
            {
              "fieldId": "action",
              "fieldValue": "approval_sent"
            },
            {
              "fieldId": "actor_email",
              "fieldValue": "system@workflow"
            },
            {
              "fieldId": "details",
              "fieldValue": "=Level {{ $('get_next_level').item.json.level_number }}  requests sent to role_id {{ $('generate_uuid').item.json.role_id}} "
            }
          ]
        }
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "7dd27017-db27-40d2-ae81-1f5e8bd296b5",
      "name": "最终更新文档",
      "type": "n8n-nodes-base.supabase",
      "position": [
        80,
        1808
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "id",
              "keyValue": "={{ $('get_approval_data').item.json.document_id }}",
              "condition": "eq"
            }
          ]
        },
        "tableId": "documents",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "status",
              "fieldValue": "={{ $json.status }}"
            },
            {
              "fieldId": "updated_at",
              "fieldValue": "={{ new Date(Date.now()).toISOString() }}"
            }
          ]
        },
        "operation": "update"
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "564ca96f-4b65-4f0b-b075-1a02eed98893",
      "name": "保存文档",
      "type": "n8n-nodes-base.supabase",
      "position": [
        816,
        0
      ],
      "parameters": {
        "tableId": "documents",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "title",
              "fieldValue": "={{ $('start_approval_form').item.json.Title }}"
            },
            {
              "fieldId": "content",
              "fieldValue": "={{ $('start_approval_form').item.json.data[0].filename }}"
            },
            {
              "fieldId": "submitted_by",
              "fieldValue": "1"
            },
            {
              "fieldId": "status",
              "fieldValue": "Pending"
            }
          ]
        }
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "98fbb076-c588-4e88-8a62-b91c6adab3c2",
      "name": "获取工作流第一级",
      "type": "n8n-nodes-base.supabase",
      "position": [
        1184,
        0
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "level_number",
              "keyValue": "1"
            }
          ]
        },
        "tableId": "workflow_levels",
        "operation": "get"
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "550fde74-26c2-4a04-bfcb-cc801f2bdf50",
      "name": "按角色获取用户",
      "type": "n8n-nodes-base.supabase",
      "position": [
        448,
        224
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "role_id",
              "keyValue": "={{ $json.role_id }}",
              "condition": "eq"
            }
          ]
        },
        "tableId": "users",
        "operation": "getAll",
        "returnAll": true
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d45ef572-ca77-4e3b-b040-933d14d54763",
      "name": "创建UUID令牌",
      "type": "n8n-nodes-base.crypto",
      "position": [
        816,
        224
      ],
      "parameters": {
        "action": "generate"
      },
      "typeVersion": 1
    },
    {
      "id": "5b325046-052d-4f11-960c-f97a6ac79703",
      "name": "创建审批记录",
      "type": "n8n-nodes-base.supabase",
      "position": [
        1184,
        224
      ],
      "parameters": {
        "tableId": "approvals",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "document_id",
              "fieldValue": "={{ $('save_document').item.json.id }}"
            },
            {
              "fieldId": "level_id",
              "fieldValue": "={{ $('get_workflow_level_one').item.json.id }}"
            },
            {
              "fieldId": "approver_id",
              "fieldValue": "={{ $json.id }}"
            },
            {
              "fieldId": "token",
              "fieldValue": "={{ $json.data }}"
            },
            {
              "fieldId": "status",
              "fieldValue": "={{ $('save_document').item.json.status }}"
            },
            {
              "fieldId": "expiry_time",
              "fieldValue": "={{ new Date(Date.now() + 48 * 60 * 60 * 1000) }}"
            }
          ]
        }
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "cd4dc454-6893-44d7-89d5-b4703e1787d7",
      "name": "发送邮件",
      "type": "n8n-nodes-base.gmail",
      "position": [
        816,
        464
      ],
      "webhookId": "7eb15f9c-c5a6-402b-8c53-ac0f1094602c",
      "parameters": {
        "sendTo": "={{ $('create_uuid_token').item.json.email }}",
        "message": "=<p>Please review: {{ $('save_document').item.json.title }}</p>\n<p>\n  <a href=\"http://localhost:5678/webhook-test/doc-approval/approve?token={{$json.token}}&decision=approved\">Approve</a> |\n  <a href=\"http://localhost:5678/webhook-test/doc-approvalapprove?token={{$json.token}}&decision=rejected\">Reject</a>\n</p>",
        "options": {
          "attachmentsUi": {
            "attachmentsBinary": [
              {}
            ]
          }
        },
        "subject": "=Document Approval Request -  {{ $('save_document').item.json.title }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "nbxshtC1cYPiRV0b",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "879f0811-789f-426e-8a09-caf7c326b3fc",
      "name": "审计邀请",
      "type": "n8n-nodes-base.supabase",
      "position": [
        1200,
        464
      ],
      "parameters": {
        "tableId": "audit_logs",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "document_id",
              "fieldValue": "={{ $('save_document').item.json.id }}"
            },
            {
              "fieldId": "action",
              "fieldValue": "approval_sent"
            },
            {
              "fieldId": "actor_email",
              "fieldValue": "system@workflow"
            },
            {
              "fieldId": "details",
              "fieldValue": "=Level 1 requests sent to role_id {{ $('get_workflow_level_one').item.json.role_id}} "
            }
          ]
        }
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4c3db623-dc84-47cd-81c3-2d1553f0218b",
      "name": "启动审批表单",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        128,
        0
      ],
      "webhookId": "f0834914-b1a9-4176-9910-9e67714b9495",
      "parameters": {
        "options": {
          "path": "approval-process-start",
          "ignoreBots": true,
          "buttonLabel": "Send for Approval",
          "appendAttribution": true,
          "useWorkflowTimezone": true
        },
        "formTitle": "Document Approval",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Title",
              "placeholder": "Give some Title of document ",
              "requiredField": true
            },
            {
              "fieldType": "textarea",
              "fieldLabel": "Description",
              "placeholder": "Describe what document all about. "
            },
            {
              "fieldType": "file",
              "fieldLabel": "data",
              "requiredField": true,
              "acceptFileTypes": ".pdf"
            }
          ]
        },
        "formDescription": "Document Approval Workflow "
      },
      "typeVersion": 2.2,
      "alwaysOutputData": false
    },
    {
      "id": "3523cf77-050b-46f7-b06e-975ae91c606f",
      "name": "获取审批数据",
      "type": "n8n-nodes-base.supabase",
      "position": [
        -272,
        1104
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "token",
              "keyValue": "={{ $json.query.token }}"
            }
          ]
        },
        "tableId": "approvals",
        "operation": "get"
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "0047e141-6fe8-40b3-b998-874e2c3fa018",
      "name": "更新审批数据",
      "type": "n8n-nodes-base.supabase",
      "position": [
        416,
        1088
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "approver_id",
              "keyValue": "={{ $json.approver_id }}",
              "condition": "eq"
            },
            {
              "keyName": "status",
              "keyValue": "Pending",
              "condition": "eq"
            },
            {
              "keyName": "token",
              "keyValue": "={{ $json.token }}",
              "condition": "eq"
            }
          ]
        },
        "tableId": "approvals",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "status",
              "fieldValue": "={{ $('Webhook').item.json.query.decision }}"
            },
            {
              "fieldId": "acted_at",
              "fieldValue": "={{ new Date(Date.now()).toISOString() }}"
            }
          ]
        },
        "matchType": "allFilters",
        "operation": "update"
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4f6b45fc-e8de-469d-a936-de70f9c890c0",
      "name": "检查拒绝或批准",
      "type": "n8n-nodes-base.if",
      "position": [
        800,
        1088
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "6222263f-cd22-457d-8446-b19f7e1b6ffb",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $('Webhook').item.json.query.decision }}",
              "rightValue": "approved"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "6afc3654-1ac1-43a0-a800-2d60a676f336",
      "name": "获取级别详情",
      "type": "n8n-nodes-base.supabase",
      "position": [
        1168,
        1072
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "id",
              "keyValue": "={{ $('get_approval_data').item.json.level_id }}"
            }
          ]
        },
        "tableId": "workflow_levels",
        "operation": "get"
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e8913824-5efa-46f2-b95d-d065491b63b1",
      "name": "获取下一级别",
      "type": "n8n-nodes-base.supabase",
      "position": [
        1520,
        1072
      ],
      "parameters": {
        "limit": 1,
        "filters": {
          "conditions": [
            {
              "keyName": "level_number",
              "keyValue": "={{ $json.level_number }}",
              "condition": "gt"
            }
          ]
        },
        "tableId": "workflow_levels",
        "operation": "getAll"
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "ced013ad-e2c4-42b0-9a4a-63198d442a21",
      "name": "是否为最后级别",
      "type": "n8n-nodes-base.if",
      "position": [
        -544,
        1456
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "fb67a0fe-ced5-47a8-8f08-805d4253d0cf",
              "operator": {
                "type": "object",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $('get_next_level').item.json }}",
              "rightValue": "={{ {} }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "8ab1e933-546e-4f31-8e4b-f40e6fd24ccc",
      "name": "按级别获取工作流",
      "type": "n8n-nodes-base.supabase",
      "position": [
        -272,
        1440
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "level_number",
              "keyValue": "= {{ $json.level_number }}"
            }
          ]
        },
        "tableId": "workflow_levels",
        "operation": "get"
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "68732d0b-c579-45dd-90b5-022bacccd8c3",
      "name": "按角色获取用户1",
      "type": "n8n-nodes-base.supabase",
      "position": [
        80,
        1440
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "role_id",
              "keyValue": "={{ $json.role_id }}",
              "condition": "eq"
            }
          ]
        },
        "tableId": "users",
        "operation": "getAll",
        "returnAll": true
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4075c718-7f9d-41ef-a8d9-aad892838493",
      "name": "生成UUID",
      "type": "n8n-nodes-base.crypto",
      "position": [
        416,
        1440
      ],
      "parameters": {
        "action": "generate"
      },
      "typeVersion": 1
    },
    {
      "id": "4c8bac58-805f-4a43-92a0-ebfde03c5092",
      "name": "创建审批记录",
      "type": "n8n-nodes-base.supabase",
      "position": [
        800,
        1456
      ],
      "parameters": {
        "tableId": "approvals",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "document_id",
              "fieldValue": "={{ $('get_approval_data').item.json.document_id }}"
            },
            {
              "fieldId": "level_id",
              "fieldValue": "={{ $('get_next_level').item.json.id }}"
            },
            {
              "fieldId": "approver_id",
              "fieldValue": "={{ $json.id }}"
            },
            {
              "fieldId": "token",
              "fieldValue": "={{ $json.data }}"
            },
            {
              "fieldId": "status",
              "fieldValue": "=Pending"
            },
            {
              "fieldId": "expiry_time",
              "fieldValue": "={{ new Date(Date.now() + 48 * 60 * 60 * 1000) }}"
            }
          ]
        }
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ebd1975c-a8c6-4703-89a0-9eb062aae079",
      "name": "按级别发送邮件",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -560,
        2032
      ],
      "webhookId": "7eb15f9c-c5a6-402b-8c53-ac0f1094602c",
      "parameters": {
        "sendTo": "={{ $('generate_uuid').item.json.email }}",
        "message": "=<p>Please review:</p>\n<p>\n  <a href=\"http://localhost:5678/webhook-test/approve?token={{ $('generate_uuid').item.json.data }}&decision=approved\">Approve</a> |\n  <a href=\"http://localhost:5678/webhook-test/approve?token={{ $('generate_uuid').item.json.data }}&decision=rejected\">Reject</a>\n</p>",
        "options": {
          "attachmentsUi": {
            "attachmentsBinary": [
              {}
            ]
          }
        },
        "subject": "=Document Approval Request - {{ $('get_document_details').item.json.title }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "nbxshtC1cYPiRV0b",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "40dcfb0b-0c3f-4469-a3ba-c85793c1da1b",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1312,
        -240
      ],
      "parameters": {
        "width": 608,
        "height": 2528,
        "content": "## 多级文档审批与审计工作流"
      },
      "typeVersion": 1
    },
    {
      "id": "7db49d0e-c7c5-4423-af60-17e63aa9fea1",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -656,
        -224
      ],
      "parameters": {
        "width": 720,
        "height": 1120,
        "content": "## 数据库架构"
      },
      "typeVersion": 1
    },
    {
      "id": "25ef7fca-6462-4806-bf01-d0c552aabae7",
      "name": "审计",
      "type": "n8n-nodes-base.supabase",
      "position": [
        416,
        1792
      ],
      "parameters": {
        "tableId": "audit_logs",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldId": "document_id",
              "fieldValue": "={{ $('get_approval_data').item.json.document_id }}"
            },
            {
              "fieldId": "action",
              "fieldValue": "approval_sent"
            },
            {
              "fieldId": "actor_email",
              "fieldValue": "system@workflow"
            },
            {
              "fieldId": "details",
              "fieldValue": "=Level {{ $('get_next_level').item.json.level_number }}  requests sent to role_id {{ $('generate_uuid').item.json.role_id}} "
            }
          ]
        }
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "48036695-12b4-479a-a547-eb45eb9da598",
      "name": "响应Webhook1",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        1552,
        2016
      ],
      "parameters": {
        "options": {},
        "respondWith": "text",
        "responseBody": "=Workflow Competed - {{ $json.Response }}"
      },
      "typeVersion": 1.4
    },
    {
      "id": "d2c8dca0-c040-4035-bbd2-5812e571e0b9",
      "name": "上传到Supabase存储",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        464,
        0
      ],
      "parameters": {
        "url": "=https://<your_project_id>.supabase.co/storage/v1/object/test-n8n/{{ $binary.data.fileName }}",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "binaryData",
        "authentication": "predefinedCredentialType",
        "inputDataFieldName": "data",
        "nodeCredentialType": "supabaseApi"
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "86e2bbb7-44b6-43f7-bf31-28453caf3369",
      "name": "获取要审阅的文件",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        432,
        464
      ],
      "parameters": {
        "url": "=https://uptttiuxuaacxrdofqgm.supabase.co/storage/v1/object/{{ $('upload_to_supabase_storage').item.json.Key }}",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "supabaseApi"
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "c82dba30-479d-4045-af9d-635f1aea605b",
      "name": "获取文档详情",
      "type": "n8n-nodes-base.supabase",
      "position": [
        1168,
        1456
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "id",
              "keyValue": "={{ $json.document_id }}"
            }
          ]
        },
        "tableId": "documents",
        "operation": "get"
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "13d7e82a-f7b3-4cbd-b51f-bcc1e57a1602",
      "name": "获取要审阅的文件1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1536,
        1456
      ],
      "parameters": {
        "url": "=https://<your_project_id>.supabase.co/storage/v1/object/test-n8n/{{ $json.content }}",
        "options": {},
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "supabaseApi"
      },
      "credentials": {
        "supabaseApi": {
          "id": "UMM6kngXouHxEYn4",
          "name": "Supabase account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "db503b96-a362-4b14-a41b-aa87bf156392",
      "name": "条件判断",
      "type": "n8n-nodes-base.if",
      "position": [
        80,
        1104
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "eff8437b-ef76-4bef-a6c2-9d65083ab8c5",
              "operator": {
                "type": "object",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "694b4cde-a457-4496-816f-02ba86b4eb9e",
      "name": "响应消息",
      "type": "n8n-nodes-base.set",
      "position": [
        800,
        1296
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "d6c443be-ca83-4708-b80b-9a5eefd11d60",
              "name": "Response",
              "type": "string",
              "value": "Not a value token"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "30cd5073-3d59-48ae-a572-57157ee5e6cb",
      "name": "响应消息1",
      "type": "n8n-nodes-base.set",
      "position": [
        800,
        1792
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "d6c443be-ca83-4708-b80b-9a5eefd11d60",
              "name": "Response",
              "type": "string",
              "value": "Rejected"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "17e8d16b-8c04-45de-90a0-1d8fc1711cd5",
      "name": "响应消息2",
      "type": "n8n-nodes-base.set",
      "position": [
        128,
        2032
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "d6c443be-ca83-4708-b80b-9a5eefd11d60",
              "name": "Response",
              "type": "string",
              "value": "Approved"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "bb9fb0aa-d3a2-434b-a34a-047562654983",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        352,
        -128
      ],
      "parameters": {
        "width": 336,
        "height": 288,
        "content": "### 更新Supabase存储的URL"
      },
      "typeVersion": 1
    },
    {
      "id": "d902be56-14a6-4071-ae13-7b0dddf4284a",
      "name": "结束表单",
      "type": "n8n-nodes-base.form",
      "position": [
        1472,
        464
      ],
      "webhookId": "3af20380-25dd-4a07-970c-29929c8037e5",
      "parameters": {
        "options": {},
        "operation": "completion",
        "completionTitle": "Approval Workflow Started."
      },
      "typeVersion": 1
    },
    {
      "id": "edf83e23-536a-4a9d-a5be-f6401690ab2a",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        112,
        -208
      ],
      "parameters": {
        "color": 4,
        "width": 1664,
        "height": 1120,
        "content": "## 表单提交流程"
      },
      "typeVersion": 1
    },
    {
      "id": "5109e9e9-b938-44be-8154-7dd287030589",
      "name": "便签4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -656,
        992
      ],
      "parameters": {
        "color": 4,
        "width": 2448,
        "height": 1264,
        "content": "## 下一级别审批"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "de5c52a4-7369-4d59-a8c1-b7e4e1aa5636",
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "update_approval_data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "response_message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Audit": {
      "main": [
        [
          {
            "node": "response_message1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Audit1": {
      "main": [
        [
          {
            "node": "response_message2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "get_approval_data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "send_email": {
      "main": [
        [
          {
            "node": "audit_invites",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "audit_invites": {
      "main": [
        [
          {
            "node": "end_form",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "generate_uuid": {
      "main": [
        [
          {
            "node": "create_approval_record",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "is_last_level": {
      "main": [
        [
          {
            "node": "get_workflow_by_level",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Final Update Document",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "save_document": {
      "main": [
        [
          {
            "node": "get_workflow_level_one",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get_next_level": {
      "main": [
        [
          {
            "node": "is_last_level",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get_user_by_role": {
      "main": [
        [
          {
            "node": "create_uuid_token",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "response_message": {
      "main": [
        [
          {
            "node": "Respond to Webhook1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "create_uuid_token": {
      "main": [
        [
          {
            "node": "create_record_approvals",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get_approval_data": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get_level_details": {
      "main": [
        [
          {
            "node": "get_next_level",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get_user_by_role1": {
      "main": [
        [
          {
            "node": "generate_uuid",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "response_message1": {
      "main": [
        [
          {
            "node": "Respond to Webhook1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "response_message2": {
      "main": [
        [
          {
            "node": "Respond to Webhook1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "send_emai_by_level": {
      "main": [
        [
          {
            "node": "Audit1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "start_approval_form": {
      "main": [
        [
          {
            "node": "upload_to_supabase_storage",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fetch_file_to_review": {
      "main": [
        [
          {
            "node": "send_email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get_document_details": {
      "main": [
        [
          {
            "node": "fetch_file_to_review1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "update_approval_data": {
      "main": [
        [
          {
            "node": "check_reject_or_approve",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Final Update Document": {
      "main": [
        [
          {
            "node": "Audit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fetch_file_to_review1": {
      "main": [
        [
          {
            "node": "send_emai_by_level",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get_workflow_by_level": {
      "main": [
        [
          {
            "node": "get_user_by_role1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "create_approval_record": {
      "main": [
        [
          {
            "node": "get_document_details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get_workflow_level_one": {
      "main": [
        [
          {
            "node": "get_user_by_role",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "check_reject_or_approve": {
      "main": [
        [
          {
            "node": "get_level_details",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Final Update Document",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "create_record_approvals": {
      "main": [
        [
          {
            "node": "fetch_file_to_review",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "upload_to_supabase_storage": {
      "main": [
        [
          {
            "node": "save_document",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 文档提取, 多模态 AI

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量38
分类2
节点类型11
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

作者
Alok Kumar

Alok Kumar

@alokkumar

I am a Principal Software Engineer based in Ireland with a deep passion for AI and emerging technologies. With extensive experience in designing and implementing scalable software solutions, I focus on leveraging artificial intelligence to solve real-world problems. I enjoy exploring innovative applications of AI, from intelligent automation to data-driven insights, and I’m dedicated to building systems that are both efficient and impactful.

外部链接
在 n8n.io 查看

分享此工作流