{
  "name": "WF01-\ubc1c\uba85\uc81c\uc548\uc11c\uc785\ub825",
  "id": "galbpC91RCA90yyi",
  "description": "\ubc1c\uba85 \uc81c\uc548\uc11c \uc785\ub825 \ubc0f \uac80\uc99d \uc6cc\ud06c\ud50c\ub85c\uc6b0 - MAIPatent \ud30c\uc774\ud504\ub77c\uc778\uc758 \uccab \ubc88\uc9f8 \ub2e8\uacc4",
  "active": false,
  "nodes": [
    {
      "id": "form-trigger",
      "name": "\ubc1c\uba85\uc81c\uc548\uc11c Form",
      "type": "n8n-nodes-base.formTrigger",
      "typeVersion": 2.2,
      "position": [
        0,
        0
      ],
      "parameters": {
        "formTitle": "\ubc1c\uba85 \uc81c\uc548\uc11c \uc785\ub825",
        "formDescription": "\ud2b9\ud5c8 \uba85\uc138\uc11c \uc790\ub3d9 \uc0dd\uc131\uc744 \uc704\ud55c \ubc1c\uba85 \uc81c\uc548\uc11c\ub97c \uc785\ub825\ud574\uc8fc\uc138\uc694.",
        "formFields": {
          "values": [
            {
              "fieldLabel": "\ubc1c\uba85\uc758 \uba85\uce6d",
              "fieldType": "text",
              "requiredField": true,
              "placeholder": "\uc608: \uc778\uacf5\uc9c0\ub2a5 \uae30\ubc18 \ud2b9\ud5c8 \uba85\uc138\uc11c \uc790\ub3d9 \uc0dd\uc131 \uc2dc\uc2a4\ud15c"
            },
            {
              "fieldLabel": "\uae30\uc220\ubd84\uc57c",
              "fieldType": "text",
              "requiredField": true,
              "placeholder": "\uc608: \uc778\uacf5\uc9c0\ub2a5, \uc790\uc5f0\uc5b4\ucc98\ub9ac, \ud2b9\ud5c8 \uc790\ub3d9\ud654"
            },
            {
              "fieldLabel": "\ud574\uacb0\ud558\ub824\ub294 \uacfc\uc81c",
              "fieldType": "textarea",
              "requiredField": true,
              "placeholder": "\ubc1c\uba85\uc774 \ud574\uacb0\ud558\uace0\uc790 \ud558\ub294 \uae30\uc220\uc801 \uacfc\uc81c\ub97c \uc0c1\uc138\ud788 \uae30\uc220\ud574\uc8fc\uc138\uc694."
            },
            {
              "fieldLabel": "\ubc1c\uba85\uc758 \ud575\uc2ec \uad6c\uc131",
              "fieldType": "textarea",
              "requiredField": true,
              "placeholder": "\ubc1c\uba85\uc758 \ud575\uc2ec\uc801\uc778 \uae30\uc220\uc801 \uad6c\uc131\uc744 \uae30\uc220\ud574\uc8fc\uc138\uc694."
            },
            {
              "fieldLabel": "\ubc1c\uba85\uc758 \ud6a8\uacfc",
              "fieldType": "textarea",
              "requiredField": true,
              "placeholder": "\ubc1c\uba85\uc73c\ub85c \uc778\ud574 \uc5bb\uc744 \uc218 \uc788\ub294 \uae30\uc220\uc801 \ud6a8\uacfc\ub97c \uae30\uc220\ud574\uc8fc\uc138\uc694."
            },
            {
              "fieldLabel": "\ucd9c\uc6d0\uc778",
              "fieldType": "text",
              "requiredField": true,
              "placeholder": "\ucd9c\uc6d0\uc778 \uc774\ub984"
            },
            {
              "fieldLabel": "\ubc1c\uba85\uc790",
              "fieldType": "text",
              "requiredField": true,
              "placeholder": "\ubc1c\uba85\uc790 \uc774\ub984"
            }
          ]
        },
        "options": {}
      }
    },
    {
      "id": "webhook-trigger",
      "name": "API Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        0,
        200
      ],
      "parameters": {
        "path": "wf01-invention-input",
        "httpMethod": "POST",
        "responseMode": "responseNode",
        "options": {
          "responseHeaders": {
            "entries": [
              {
                "name": "Access-Control-Allow-Origin",
                "value": "*"
              }
            ]
          }
        }
      }
    },
    {
      "id": "normalize-webhook-data",
      "name": "Webhook \ub370\uc774\ud130 \uc815\uaddc\ud654",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        220,
        200
      ],
      "parameters": {
        "jsCode": "// Webhook\uc5d0\uc11c \ubc1b\uc740 \ub370\uc774\ud130\ub97c Form Trigger \ud615\uc2dd\uc73c\ub85c \uc815\uaddc\ud654\nconst input = $input.first().json;\n\n// Webhook payload \uad6c\uc870: { headers, params, query, body }\n// body.invention \ub610\ub294 \uc9c1\uc811 invention \uac1d\uccb4 \ucd94\ucd9c\nconst invention = input.body?.invention || input.invention || input.body || input;\n\n// Form Trigger \ud615\uc2dd\uc73c\ub85c \ub9e4\ud551\nconst normalizedData = {\n  '\ubc1c\uba85\uc758 \uba85\uce6d': invention.inventionTitle || invention['\ubc1c\uba85\uc758 \uba85\uce6d'] || '',\n  '\uae30\uc220\ubd84\uc57c': invention.technicalField || invention['\uae30\uc220\ubd84\uc57c'] || '',\n  '\ud574\uacb0\ud558\ub824\ub294 \uacfc\uc81c': invention.technicalProblem || invention['\ud574\uacb0\ud558\ub824\ub294 \uacfc\uc81c'] || '',\n  '\ubc1c\uba85\uc758 \ud575\uc2ec \uad6c\uc131': invention.proposedSolution || invention['\ubc1c\uba85\uc758 \ud575\uc2ec \uad6c\uc131'] || '',\n  '\ubc1c\uba85\uc758 \ud6a8\uacfc': invention.expectedEffects || invention['\ubc1c\uba85\uc758 \ud6a8\uacfc'] || '',\n  '\ucd9c\uc6d0\uc778': invention.inventorAffiliation || invention['\ucd9c\uc6d0\uc778'] || '',\n  '\ubc1c\uba85\uc790': invention.inventorName || invention['\ubc1c\uba85\uc790'] || '',\n  'submittedAt': new Date().toISOString(),\n  'formMode': 'webhook'\n};\n\nreturn [{ json: normalizedData }];"
      }
    },
    {
      "id": "validate-code",
      "name": "\ub370\uc774\ud130 \uac80\uc99d",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        220,
        0
      ],
      "parameters": {
        "jsCode": "// \ubc1c\uba85 \uc81c\uc548\uc11c \uac80\uc99d\nconst input = $input.first().json;\n\nconst errors = [];\n\n// \ud544\uc218 \ud544\ub4dc \uac80\uc99d\nconst requiredFields = [\n  { key: '\ubc1c\uba85\uc758 \uba85\uce6d', label: '\ubc1c\uba85\uc758 \uba85\uce6d' },\n  { key: '\uae30\uc220\ubd84\uc57c', label: '\uae30\uc220\ubd84\uc57c' },\n  { key: '\ud574\uacb0\ud558\ub824\ub294 \uacfc\uc81c', label: '\ud574\uacb0\ud558\ub824\ub294 \uacfc\uc81c' },\n  { key: '\ubc1c\uba85\uc758 \ud575\uc2ec \uad6c\uc131', label: '\ubc1c\uba85\uc758 \ud575\uc2ec \uad6c\uc131' },\n  { key: '\ubc1c\uba85\uc758 \ud6a8\uacfc', label: '\ubc1c\uba85\uc758 \ud6a8\uacfc' },\n  { key: '\ucd9c\uc6d0\uc778', label: '\ucd9c\uc6d0\uc778' },\n  { key: '\ubc1c\uba85\uc790', label: '\ubc1c\uba85\uc790' }\n];\n\nfor (const field of requiredFields) {\n  if (!input[field.key] || input[field.key].trim() === '') {\n    errors.push(`${field.label}\uc740(\ub294) \ud544\uc218 \uc785\ub825 \ud56d\ubaa9\uc785\ub2c8\ub2e4.`);\n  }\n}\n\n// \ucd5c\uc18c \uae38\uc774 \uac80\uc99d\nif (input['\ud574\uacb0\ud558\ub824\ub294 \uacfc\uc81c'] && input['\ud574\uacb0\ud558\ub824\ub294 \uacfc\uc81c'].length < 50) {\n  errors.push('\ud574\uacb0\ud558\ub824\ub294 \uacfc\uc81c\ub294 \ucd5c\uc18c 50\uc790 \uc774\uc0c1 \uc785\ub825\ud574\uc8fc\uc138\uc694.');\n}\n\nif (input['\ubc1c\uba85\uc758 \ud575\uc2ec \uad6c\uc131'] && input['\ubc1c\uba85\uc758 \ud575\uc2ec \uad6c\uc131'].length < 100) {\n  errors.push('\ubc1c\uba85\uc758 \ud575\uc2ec \uad6c\uc131\uc740 \ucd5c\uc18c 100\uc790 \uc774\uc0c1 \uc785\ub825\ud574\uc8fc\uc138\uc694.');\n}\n\n// \uac80\uc99d \uacb0\uacfc \ubc18\ud658\nif (errors.length > 0) {\n  return [{\n    json: {\n      valid: false,\n      errors: errors,\n      input: input\n    }\n  }];\n}\n\nreturn [{\n  json: {\n    valid: true,\n    data: input\n  }\n}];"
      }
    },
    {
      "id": "if-valid",
      "name": "\uac80\uc99d \uacb0\uacfc \ubd84\uae30",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [
        440,
        0
      ],
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict"
          },
          "conditions": [
            {
              "id": "valid-check",
              "leftValue": "={{ $json.valid }}",
              "rightValue": true,
              "operator": {
                "type": "boolean",
                "operation": "equals"
              }
            }
          ],
          "combinator": "and"
        }
      }
    },
    {
      "id": "enrich-code",
      "name": "\ub370\uc774\ud130 \ubcf4\uac15",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        660,
        -100
      ],
      "parameters": {
        "jsCode": "// \ub370\uc774\ud130 \ubcf4\uac15: IPC \ucf54\ub4dc \ucd94\ucc9c, \ud0a4\uc6cc\ub4dc \ucd94\ucd9c\nconst data = $input.first().json.data;\n\n// \ud0a4\uc6cc\ub4dc \ucd94\ucd9c\nconst allText = `${data['\ubc1c\uba85\uc758 \uba85\uce6d']} ${data['\uae30\uc220\ubd84\uc57c']} ${data['\ud574\uacb0\ud558\ub824\ub294 \uacfc\uc81c']}`;\nconst words = allText.split(/\\s+/);\nconst stopWords = ['\ubc0f', '\ub610\ub294', '\uc758', '\uc744', '\ub97c', '\uc774', '\uac00', '\uc740', '\ub294', '\uc5d0', '\ub85c', '\uc73c\ub85c', '\ud558\ub294', '\uc788\ub2e4', '\ub41c\ub2e4'];\nconst keywords = [...new Set(words)]\n  .filter(w => w.length > 1 && !stopWords.includes(w))\n  .slice(0, 10);\n\n// IPC \ucf54\ub4dc \ucd94\ucc9c\nconst ipcMap = {\n  '\uc778\uacf5\uc9c0\ub2a5': 'G06N',\n  '\uc790\uc5f0\uc5b4\ucc98\ub9ac': 'G06F 40',\n  '\ud2b9\ud5c8': 'G06Q 50/18',\n  '\uc790\ub3d9\ud654': 'G05B 19',\n  '\ub525\ub7ec\ub2dd': 'G06N 3/08',\n  '\uba38\uc2e0\ub7ec\ub2dd': 'G06N 20',\n  '\ube14\ub85d\uccb4\uc778': 'G06F 21',\n  '\ud074\ub77c\uc6b0\ub4dc': 'G06F 9',\n  '\ubcf4\uc548': 'G06F 21',\n  '\ub370\uc774\ud130': 'G06F 16'\n};\n\nconst technicalField = data['\uae30\uc220\ubd84\uc57c'] || '';\nconst suggestedIpc = [];\nfor (const [keyword, ipc] of Object.entries(ipcMap)) {\n  if (technicalField.includes(keyword)) {\n    suggestedIpc.push(ipc);\n  }\n}\nif (suggestedIpc.length === 0) suggestedIpc.push('G06F');\n\n// \uba54\ud0c0\ub370\uc774\ud130 \ucd94\uac00\nconst submissionId = `INV-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n\nconst enrichedData = {\n  submission_id: submissionId,\n  invention_title: data['\ubc1c\uba85\uc758 \uba85\uce6d'],\n  technical_field: data['\uae30\uc220\ubd84\uc57c'],\n  problem_to_solve: data['\ud574\uacb0\ud558\ub824\ub294 \uacfc\uc81c'],\n  solution_description: data['\ubc1c\uba85\uc758 \ud575\uc2ec \uad6c\uc131'],\n  advantages: data['\ubc1c\uba85\uc758 \ud6a8\uacfc'],\n  applicant_name: data['\ucd9c\uc6d0\uc778'],\n  inventor_name: data['\ubc1c\uba85\uc790'],\n  keywords: keywords,\n  suggested_ipc: suggestedIpc,\n  submission_date: new Date().toISOString(),\n  status: 'pending'\n};\n\nreturn [{ json: enrichedData }];"
      }
    },
    {
      "id": "set-output",
      "name": "\ucd9c\ub825 \ub370\uc774\ud130 \uc124\uc815",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        880,
        -100
      ],
      "parameters": {
        "mode": "manual",
        "duplicateItem": false,
        "assignments": {
          "assignments": [
            {
              "id": "submission_id",
              "name": "submission_id",
              "value": "={{ $json.submission_id }}",
              "type": "string"
            },
            {
              "id": "invention_title",
              "name": "invention_title",
              "value": "={{ $json.invention_title }}",
              "type": "string"
            },
            {
              "id": "keywords",
              "name": "keywords",
              "value": "={{ $json.keywords }}",
              "type": "array"
            },
            {
              "id": "suggested_ipc",
              "name": "suggested_ipc",
              "value": "={{ $json.suggested_ipc }}",
              "type": "array"
            },
            {
              "id": "status",
              "name": "status",
              "value": "submitted",
              "type": "string"
            }
          ]
        },
        "includeOtherFields": true
      }
    },
    {
      "id": "error-response",
      "name": "\uc624\ub958 \uc751\ub2f5",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        660,
        100
      ],
      "parameters": {
        "mode": "manual",
        "duplicateItem": false,
        "assignments": {
          "assignments": [
            {
              "id": "success",
              "name": "success",
              "value": false,
              "type": "boolean"
            },
            {
              "id": "message",
              "name": "message",
              "value": "\uc785\ub825 \ub370\uc774\ud130 \uac80\uc99d\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.",
              "type": "string"
            },
            {
              "id": "errors",
              "name": "errors",
              "value": "={{ $json.errors }}",
              "type": "array"
            }
          ]
        }
      }
    },
    {
      "id": "convert-to-json-file",
      "name": "JSON \ud30c\uc77c \ubcc0\ud658",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1100,
        -100
      ],
      "parameters": {
        "jsCode": "// \ubc1c\uba85 \uc81c\uc548\uc11c\ub97c JSON \ud30c\uc77c\ub85c \ubcc0\ud658\nconst data = $input.first().json;\n\n// Patent ID \uc0dd\uc131\nconst patentId = `PAT-${String(Date.now()).slice(-6)}`;\n\nconst proposalData = {\n  patent_id: patentId,\n  submission_id: data.submission_id,\n  invention_title: data.invention_title,\n  technical_field: data.technical_field,\n  problem_to_solve: data.problem_to_solve,\n  solution_description: data.solution_description,\n  advantages: data.advantages,\n  applicant_name: data.applicant_name,\n  inventor_name: data.inventor_name,\n  keywords: data.keywords,\n  suggested_ipc: data.suggested_ipc,\n  submission_date: data.submission_date,\n  status: 'generating'\n};\n\n// Buffer\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc62c\ubc14\ub978 binary \ub370\uc774\ud130 \uc0dd\uc131\nconst jsonString = JSON.stringify(proposalData, null, 2);\nconst binaryData = Buffer.from(jsonString, 'utf-8');\n\nreturn [{\n  json: proposalData,\n  binary: {\n    data: {\n      data: binaryData.toString('base64'),\n      mimeType: 'application/json',\n      fileName: `\ubc1c\uba85\uc81c\uc548\uc11c_${patentId}.json`\n    }\n  }\n}];"
      }
    },
    {
      "id": "google-drive-upload",
      "name": "Google Drive \uc5c5\ub85c\ub4dc (\ubc1c\uba85\uc81c\uc548\uc11c)",
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [
        1320,
        -100
      ],
      "parameters": {
        "operation": "upload",
        "folderId": {
          "__rl": true,
          "value": "={{ $vars.GOOGLE_DRIVE_PROPOSAL_FOLDER_ID }}",
          "mode": "id"
        },
        "name": "=\ubc1c\uba85\uc81c\uc548\uc11c_{{ $json.patent_id }}_{{ $now.format('yyyyMMdd') }}.json",
        "options": {
          "mimeType": "application/json"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "id": "google-sheets-append",
      "name": "Google Sheets \uc800\uc7a5 (\uba54\ud0c0\ub370\uc774\ud130)",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.5,
      "position": [
        1540,
        -100
      ],
      "parameters": {
        "operation": "appendOrUpdate",
        "documentId": {
          "__rl": true,
          "value": "={{ $vars.GOOGLE_SHEETS_TRACKING_ID }}",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": "\uc81c\ucd9c\uc774\ub825",
          "mode": "name"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Patent ID": "={{ $json.patent_id }}",
            "\ubc1c\uba85 \uba85\uce6d": "={{ $json.invention_title }}",
            "\ubc1c\uba85\uc790": "={{ $json.inventor_name }}",
            "\uc18c\uc18d": "={{ $json.applicant_name }}",
            "\uae30\uc220\ubd84\uc57c": "={{ $json.technical_field }}",
            "\ud0a4\uc6cc\ub4dc": "={{ $json.keywords.join(', ') }}",
            "\uc0c1\ud0dc": "generating",
            "\uc81c\ucd9c\uc77c": "={{ $now.format('yyyy-MM-dd') }}",
            "\ubc1c\uba85\uc81c\uc548\uc11c URL": "={{ $('Google Drive \uc5c5\ub85c\ub4dc (\ubc1c\uba85\uc81c\uc548\uc11c)').item.json.webViewLink }}"
          }
        },
        "options": {}
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "id": "set-output-with-urls",
      "name": "URL \ud3ec\ud568 \ucd9c\ub825 \uc124\uc815",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1760,
        -100
      ],
      "parameters": {
        "mode": "manual",
        "duplicateItem": false,
        "assignments": {
          "assignments": [
            {
              "id": "drive_url",
              "name": "drive_url",
              "value": "={{ $('Google Drive \uc5c5\ub85c\ub4dc (\ubc1c\uba85\uc81c\uc548\uc11c)').item.json.webViewLink }}",
              "type": "string"
            },
            {
              "id": "sheets_row",
              "name": "sheets_row",
              "value": "={{ $('Google Sheets \uc800\uc7a5 (\uba54\ud0c0\ub370\uc774\ud130)').item.json.updates.updatedRows }}",
              "type": "number"
            }
          ]
        },
        "includeOtherFields": true
      }
    },
    {
      "id": "call-wf02",
      "name": "WF02 \uc120\ud589\uae30\uc220\uac80\uc0c9 \ud638\ucd9c",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1980,
        -100
      ],
      "parameters": {
        "method": "POST",
        "url": "https://mai-n8n.app.n8n.cloud/webhook/wf02-prior-art-search",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{ JSON.stringify($json) }}",
        "options": {}
      }
    },
    {
      "id": "webhook-response-success",
      "name": "Webhook \uc131\uacf5 \uc751\ub2f5",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [
        2200,
        -100
      ],
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ { success: true, patent_id: $('JSON \ud30c\uc77c \ubcc0\ud658').item.json.patent_id, submission_id: $('JSON \ud30c\uc77c \ubcc0\ud658').item.json.submission_id, message: '\ubc1c\uba85\uc81c\uc548\uc11c\uac00 \uc131\uacf5\uc801\uc73c\ub85c \uc81c\ucd9c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.', drive_url: $('Google Drive \uc5c5\ub85c\ub4dc (\ubc1c\uba85\uc81c\uc548\uc11c)').item.json.webViewLink } }}",
        "options": {
          "responseHeaders": {
            "entries": [
              {
                "name": "Access-Control-Allow-Origin",
                "value": "*"
              }
            ]
          }
        }
      }
    },
    {
      "id": "webhook-response-error",
      "name": "Webhook \uc624\ub958 \uc751\ub2f5",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [
        880,
        100
      ],
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ { success: false, message: '\uc785\ub825 \ub370\uc774\ud130 \uac80\uc99d\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.', errors: $json.errors } }}",
        "options": {
          "responseCode": 400,
          "responseHeaders": {
            "entries": [
              {
                "name": "Access-Control-Allow-Origin",
                "value": "*"
              }
            ]
          }
        }
      }
    }
  ],
  "connections": {
    "\ubc1c\uba85\uc81c\uc548\uc11c Form": {
      "main": [
        [
          {
            "node": "\ub370\uc774\ud130 \uac80\uc99d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "API Webhook": {
      "main": [
        [
          {
            "node": "Webhook \ub370\uc774\ud130 \uc815\uaddc\ud654",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook \ub370\uc774\ud130 \uc815\uaddc\ud654": {
      "main": [
        [
          {
            "node": "\ub370\uc774\ud130 \uac80\uc99d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ub370\uc774\ud130 \uac80\uc99d": {
      "main": [
        [
          {
            "node": "\uac80\uc99d \uacb0\uacfc \ubd84\uae30",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\uac80\uc99d \uacb0\uacfc \ubd84\uae30": {
      "main": [
        [
          {
            "node": "\ub370\uc774\ud130 \ubcf4\uac15",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "\uc624\ub958 \uc751\ub2f5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ub370\uc774\ud130 \ubcf4\uac15": {
      "main": [
        [
          {
            "node": "\ucd9c\ub825 \ub370\uc774\ud130 \uc124\uc815",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ucd9c\ub825 \ub370\uc774\ud130 \uc124\uc815": {
      "main": [
        [
          {
            "node": "JSON \ud30c\uc77c \ubcc0\ud658",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "JSON \ud30c\uc77c \ubcc0\ud658": {
      "main": [
        [
          {
            "node": "Google Drive \uc5c5\ub85c\ub4dc (\ubc1c\uba85\uc81c\uc548\uc11c)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Drive \uc5c5\ub85c\ub4dc (\ubc1c\uba85\uc81c\uc548\uc11c)": {
      "main": [
        [
          {
            "node": "Google Sheets \uc800\uc7a5 (\uba54\ud0c0\ub370\uc774\ud130)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets \uc800\uc7a5 (\uba54\ud0c0\ub370\uc774\ud130)": {
      "main": [
        [
          {
            "node": "URL \ud3ec\ud568 \ucd9c\ub825 \uc124\uc815",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "URL \ud3ec\ud568 \ucd9c\ub825 \uc124\uc815": {
      "main": [
        [
          {
            "node": "WF02 \uc120\ud589\uae30\uc220\uac80\uc0c9 \ud638\ucd9c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "WF02 \uc120\ud589\uae30\uc220\uac80\uc0c9 \ud638\ucd9c": {
      "main": [
        [
          {
            "node": "Webhook \uc131\uacf5 \uc751\ub2f5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\uc624\ub958 \uc751\ub2f5": {
      "main": [
        [
          {
            "node": "Webhook \uc624\ub958 \uc751\ub2f5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1",
    "callerPolicy": "workflowsFromSameOwner"
  },
  "meta": {
    "version": "1.2.0",
    "created": "2026-01-10",
    "updated": "2026-01-13",
    "project": "MAIPatent",
    "workflow_sequence": 1,
    "next_workflow": "WF02-prior-art-search",
    "trigger_connection": "HTTP Request to WF02 Webhook"
  }
}