{
  "name": "Boulangerie — Daily Production Sheet",
  "nodes": [
    {
      "parameters": {
        "rule": { "interval": [{ "field": "cronExpression", "expression": "0 4 * * *" }] }
      },
      "id": "a1b2c3d4-e001-e002-e003-e00400000001",
      "name": "Chaque nuit à 4h",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1,
      "position": [250, 300]
    },
    {
      "parameters": {
        "authentication": "serviceAccount",
        "operation": "readRows",
        "documentId": { "__rl": true, "mode": "id", "value": "VOTRE_GOOGLE_SHEET_ID" },
        "sheetName": { "__rl": true, "mode": "name", "value": "Commandes du jour" },
        "options": {}
      },
      "id": "b2c3d4e5-e001-e002-e003-e00400000002",
      "name": "Lire commandes du jour",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4,
      "position": [450, 200]
    },
    {
      "parameters": {
        "authentication": "serviceAccount",
        "operation": "readRows",
        "documentId": { "__rl": true, "mode": "id", "value": "VOTRE_GOOGLE_SHEET_ID" },
        "sheetName": { "__rl": true, "mode": "name", "value": "Moyennes hebdo" },
        "options": {}
      },
      "id": "c3d4e5f6-e001-e002-e003-e00400000003",
      "name": "Lire moyennes habituelles",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4,
      "position": [450, 420]
    },
    {
      "parameters": {
        "jsCode": "const commandes = $('Lire commandes du jour').all().map(r => r.json);\nconst moyennes = $('Lire moyennes habituelles').all().map(r => r.json);\n\nconst today = new Date();\nconst jourSemaine = ['dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi'][today.getDay()];\nconst dateStr = today.toLocaleDateString('fr-FR', { weekday: 'long', day: 'numeric', month: 'long' });\n\nconst production = {};\n\nmoyennes.forEach(m => {\n  const qte = Number(m[jourSemaine] || m['Moyenne'] || 0);\n  if (qte > 0) production[m['Produit']] = { base: qte, commandes: 0 };\n});\n\ncommandes.forEach(c => {\n  const p = c['Produit'];\n  if (!production[p]) production[p] = { base: 0, commandes: 0 };\n  production[p].commandes += Number(c['Quantité'] || 1);\n});\n\nlet fiche = `FICHE DE PRODUCTION — ${dateStr.toUpperCase()}\\n${'='.repeat(50)}\\n\\n`;\nObject.entries(production).forEach(([produit, data]) => {\n  const total = data.base + data.commandes;\n  fiche += `${produit.padEnd(28)} ${String(total).padStart(4)} pièces`;\n  if (data.commandes > 0) fiche += ` (dont ${data.commandes} sur commande)`;\n  fiche += '\\n';\n});\nfiche += `\\n${'='.repeat(50)}\\nTotal lignes : ${Object.keys(production).length}`;\n\nreturn [{ json: { fiche, date: dateStr } }];"
      },
      "id": "d4e5f6a7-e001-e002-e003-e00400000004",
      "name": "Générer la fiche",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [700, 300]
    },
    {
      "parameters": {
        "sendTo": "boulanger@votre-boulangerie.fr",
        "subject": "📋 Fiche de production — {{ $json.date }}",
        "message": "Bonjour,\n\nVoici la fiche de production pour aujourd'hui :\n\n{{ $json.fiche }}\n\nBonne journée de production !",
        "options": {}
      },
      "id": "e5f6a7b8-e001-e002-e003-e00400000005",
      "name": "Envoyer la fiche",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2,
      "position": [950, 300]
    }
  ],
  "connections": {
    "Chaque nuit à 4h": {
      "main": [[
        { "node": "Lire commandes du jour", "type": "main", "index": 0 },
        { "node": "Lire moyennes habituelles", "type": "main", "index": 0 }
      ]]
    },
    "Lire commandes du jour": { "main": [[{ "node": "Générer la fiche", "type": "main", "index": 0 }]] },
    "Lire moyennes habituelles": { "main": [[{ "node": "Générer la fiche", "type": "main", "index": 0 }]] },
    "Générer la fiche": { "main": [[{ "node": "Envoyer la fiche", "type": "main", "index": 0 }]] }
  },
  "active": false,
  "settings": { "executionOrder": "v1" },
  "tags": [{ "name": "boulangerie" }, { "name": "production" }],
  "meta": {
    "templateId": "likyly-boulangerie-daily-production",
    "templateVersion": "1.0",
    "description": "Génère chaque nuit à 4h la fiche de production du jour en combinant les commandes sur mesure et les moyennes habituelles par jour de semaine.",
    "instructions": "1. Créez une feuille 'Commandes du jour' : Produit, Quantité, Date retrait (filtre automatique sur aujourd'hui)\n2. Créez une feuille 'Moyennes hebdo' : Produit, lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche, Moyenne\n3. Remplacez VOTRE_GOOGLE_SHEET_ID et l'email boulanger\n4. Configurez Gmail\n5. Activez"
  }
}
