{
  "name": "DiGiFlowAI — Contrôler les fiches CRM — démonstration sans suppression",
  "nodes": [
    {
      "id": "controle-crm-start",
      "name": "Démarrer manuellement",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        0,
        0
      ],
      "parameters": {}
    },
    {
      "id": "controle-crm-data",
      "name": "Données fictives à modifier",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        240,
        0
      ],
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "return [\n  {\n    \"id\": \"CRM-DEMO-1\",\n    \"email\": \"contact@example.com\"\n  },\n  {\n    \"id\": \"CRM-DEMO-2\",\n    \"email\": \" CONTACT@example.com \"\n  },\n  {\n    \"id\": \"CRM-DEMO-3\",\n    \"email\": \"adresse-invalide\"\n  }\n].map(json => ({ json }));"
      }
    },
    {
      "id": "controle-crm-logic",
      "name": "Contrôler les données",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        480,
        0
      ],
      "parameters": {
        "mode": "runOnceForAllItems",
        "jsCode": "const rows = $input.all().map(({ json }) => ({ ...json, emailNormalise: String(json.email ?? '').trim().toLowerCase() }));\nconst count = new Map();\nfor (const row of rows) if (row.emailNormalise) count.set(row.emailNormalise, (count.get(row.emailNormalise) || 0) + 1);\nreturn rows.map(row => {\n  const emailValide = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(row.emailNormalise);\n  const doublonDansLeLot = emailValide && count.get(row.emailNormalise) > 1;\n  return { json: { ...row, emailValide, doublonDansLeLot, statut: !emailValide || doublonDansLeLot ? 'a_verifier' : 'valide', suppressionEffectuee: false } };\n});"
      },
      "notesInFlow": true,
      "notes": "Exercice local. Aucune connexion externe, aucun envoi, aucune suppression. Prévoir authentification, stockage persistant, gestion des doublons et alertes avant une utilisation réelle."
    }
  ],
  "connections": {
    "Démarrer manuellement": {
      "main": [
        [
          {
            "node": "Données fictives à modifier",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Données fictives à modifier": {
      "main": [
        [
          {
            "node": "Contrôler les données",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1",
    "timezone": "Europe/Brussels"
  },
  "pinData": {},
  "tags": []
}
