{
  "name": "SudoMock - Sequential Batch Render (10 Renders)",
  "nodes": [
    {
      "parameters": {},
      "id": "11111111-aaaa-bbbb-cccc-111111111111",
      "name": "When clicking Test workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        240,
        400
      ]
    },
    {
      "parameters": {
        "operation": "uploadPsd",
        "psdFileUrl": "https://drive.usercontent.google.com/download?id=1CVh67lYHkyCHRw6NGJYYWLRar65E6b9K&export=download",
        "psdName": "Batch Test Mockup"
      },
      "id": "22222222-aaaa-bbbb-cccc-222222222222",
      "name": "Upload PSD",
      "type": "n8n-nodes-sudomock.sudoMock",
      "typeVersion": 1,
      "position": [
        460,
        400
      ]
    },
    {
      "parameters": {
        "jsCode": "const mockupData = $input.item.json.data;\nconst pressureSO = mockupData.smart_objects.find(so => so.name === \"Pressure\");\n\nif (!pressureSO) {\n  throw new Error(\"Smart object 'Pressure' not found in mockup\");\n}\n\nconst designs = [\n  \"https://picsum.photos/seed/design1/1000/1000\",\n  \"https://picsum.photos/seed/design2/1000/1000\",\n  \"https://picsum.photos/seed/design3/1000/1000\",\n  \"https://picsum.photos/seed/design4/1000/1000\",\n  \"https://picsum.photos/seed/design5/1000/1000\",\n  \"https://picsum.photos/seed/design6/1000/1000\",\n  \"https://picsum.photos/seed/design7/1000/1000\",\n  \"https://picsum.photos/seed/design8/1000/1000\",\n  \"https://picsum.photos/seed/design9/1000/1000\",\n  \"https://picsum.photos/seed/design10/1000/1000\"\n];\n\nreturn designs.map((designUrl, index) => ({\n  json: {\n    mockupUuid: mockupData.uuid,\n    smartObjectUuid: pressureSO.uuid,\n    designUrl: designUrl,\n    batchNumber: index + 1\n  }\n}));"
      },
      "id": "33333333-aaaa-bbbb-cccc-333333333333",
      "name": "Prepare Designs",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        680,
        400
      ]
    },
    {
      "parameters": {
        "batchSize": 1
      },
      "id": "44444444-aaaa-bbbb-cccc-444444444444",
      "name": "Loop",
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        900,
        400
      ]
    },
    {
      "parameters": {
        "operation": "render",
        "mockupUuid": "={{ $json.mockupUuid }}",
        "smartObjects": {
          "items": [
            {
              "uuid": "={{ $json.smartObjectUuid }}",
              "assetUrl": "={{ $json.designUrl }}",
              "fit": "cover"
            }
          ]
        },
        "exportOptions": {
          "imageFormat": "webp",
          "imageSize": 1920,
          "quality": 90,
          "exportLabel": "={{ 'render-' + $json.batchNumber }}"
        }
      },
      "id": "55555555-aaaa-bbbb-cccc-555555555555",
      "name": "Render",
      "type": "n8n-nodes-sudomock.sudoMock",
      "typeVersion": 1,
      "position": [
        1120,
        400
      ],
      "continueOnFail": true
    },
    {
      "parameters": {
        "jsCode": "const loopData = $('Loop').item.json;\nconst renderResult = $input.item.json;\n\nreturn [{\n  json: {\n    batchNumber: loopData.batchNumber,\n    mockupUuid: loopData.mockupUuid,\n    designUrl: loopData.designUrl,\n    renderedUrl: renderResult.renderedImageUrl || null,\n    success: !!renderResult.renderedImageUrl,\n    error: renderResult.error || null\n  }\n}];"
      },
      "id": "66666666-aaaa-bbbb-cccc-666666666666",
      "name": "Collect Result",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1340,
        400
      ]
    },
    {
      "parameters": {
        "jsCode": "const allResults = $input.all();\nconst mockupUuid = allResults[0]?.json?.mockupUuid || \"\";\n\nreturn [{\n  json: {\n    total: allResults.length,\n    successful: allResults.filter(r => r.json.success).length,\n    failed: allResults.filter(r => !r.json.success).length,\n    renderedUrls: allResults.filter(r => r.json.renderedUrl).map(r => r.json.renderedUrl),\n    mockupUuid: mockupUuid\n  }\n}];"
      },
      "id": "77777777-aaaa-bbbb-cccc-777777777777",
      "name": "Summary",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1340,
        600
      ]
    },
    {
      "parameters": {
        "operation": "deleteMockup",
        "deleteMockupUuid": "={{ $json.mockupUuid }}"
      },
      "id": "88888888-aaaa-bbbb-cccc-888888888888",
      "name": "Cleanup",
      "type": "n8n-nodes-sudomock.sudoMock",
      "typeVersion": 1,
      "position": [
        1560,
        600
      ]
    }
  ],
  "connections": {
    "When clicking Test workflow": {
      "main": [
        [
          {
            "node": "Upload PSD",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload PSD": {
      "main": [
        [
          {
            "node": "Prepare Designs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Designs": {
      "main": [
        [
          {
            "node": "Loop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop": {
      "main": [
        [
          {
            "node": "Summary",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Render",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Render": {
      "main": [
        [
          {
            "node": "Collect Result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Collect Result": {
      "main": [
        [
          {
            "node": "Loop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Summary": {
      "main": [
        [
          {
            "node": "Cleanup",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "tags": []
}