{
  "name": "E-Commerce ML Automation Pipeline - Optimized",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "ml-trigger",
        "options": {}
      },
      "id": "ddd944df-3814-492b-ab86-28f3796ba51b",
      "name": "D\u00e9clencheur Airflow",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        -600,
        200
      ]
    },
    {
      "parameters": {
        "jsCode": "return [{\n  \"models\": [\n    { \"model\": \"TimeSeries\", \"endpoint\": \"sales_forecast\", \"table\": \"ML_SALES_FORECAST\" },\n    { \"model\": \"Clustering\", \"endpoint\": \"segmentation\", \"table\": \"ML_CUSTOMER_SEGMENTS\" },\n    { \"model\": \"Regression\", \"endpoint\": \"regression\", \"table\": \"ML_REGRESSION_RESULTS\" },\n    { \"model\": \"Classification\", \"endpoint\": \"classification\", \"table\": \"ML_CLASSIFICATION_RESULTS\" },\n    { \"model\": \"Recommendation\", \"endpoint\": \"recommendations\", \"table\": \"ML_RECOMMENDATIONS\" }\n  ]\n}];"
      },
      "id": "model-metadata-node",
      "name": "Liste des Mod\u00e8les",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -380,
        200
      ]
    },
    {
      "parameters": {
        "fieldToSplitOut": "models",
        "options": {}
      },
      "id": "prepare-models-node",
      "name": "Pr\u00e9parer Mod\u00e8les",
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [
        -180,
        200
      ]
    },
    {
      "parameters": {
        "batchSize": 1,
        "options": {}
      },
      "id": "loop-node",
      "name": "Boucle sur mod\u00e8les",
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        20,
        200
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "=http://ml-api:8000/predict/{{$json.endpoint}}",
        "options": {}
      },
      "id": "api-call-node",
      "name": "Appel API ML",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [
        220,
        200
      ]
    },
    {
      "parameters": {
        "fieldToSplitOut": "data",
        "options": {}
      },
      "id": "split-data-node",
      "name": "Extraire Lignes",
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [
        420,
        200
      ]
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict"
          },
          "conditions": [
            {
              "id": "null-check",
              "leftValue": "={{Object.keys($json).length > 0}}",
              "rightValue": true,
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "id": "filter-node",
      "name": "V\u00e9rification Null",
      "type": "n8n-nodes-base.filter",
      "typeVersion": 2,
      "position": [
        620,
        200
      ]
    },
    {
      "parameters": {
        "table": "={{$('Boucle sur mod\u00e8les').first().json.table}}",
        "columns": "={{Object.keys($json).join(', ')}}"
      },
      "id": "sql-node",
      "name": "Insertion SSMS",
      "type": "n8n-nodes-base.microsoftSql",
      "typeVersion": 1.1,
      "position": [
        820,
        200
      ],
      "credentials": {
        "microsoftSql": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "D\u00e9clencheur Airflow": {
      "main": [
        [
          {
            "node": "Liste des Mod\u00e8les",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Liste des Mod\u00e8les": {
      "main": [
        [
          {
            "node": "Pr\u00e9parer Mod\u00e8les",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pr\u00e9parer Mod\u00e8les": {
      "main": [
        [
          {
            "node": "Boucle sur mod\u00e8les",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Boucle sur mod\u00e8les": {
      "main": [
        [],
        [
          {
            "node": "Appel API ML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Appel API ML": {
      "main": [
        [
          {
            "node": "Extraire Lignes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extraire Lignes": {
      "main": [
        [
          {
            "node": "V\u00e9rification Null",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "V\u00e9rification Null": {
      "main": [
        [
          {
            "node": "Insertion SSMS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Insertion SSMS": {
      "main": [
        [
          {
            "node": "Boucle sur mod\u00e8les",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1"
  }
}