{
  "name": "📊 Reporte de Traducciones - cdrdpyj",
  "nodes": [
    {
      "id": "webhook-1",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1.2,
      "position": [250, 300],
      "parameters": {
        "path": "news-summary",
        "httpMethod": "POST",
        "authentication": "headerAuth",
        "responseMode": "onReceived",
        "responseData": "{{ $json }}",
        "options": {}
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": null,
          "name": "crpj-summary-key"
        }
      }
    },
    {
      "id": "code-1",
      "name": "Formatear datos",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [480, 300],
      "parameters": {
        "language": "javaScript",
        "code": "const langNames = {\n  es: 'Español',\n  en: 'English',\n  fr: 'Français',\n  pt: 'Português',\n  rw: 'Kinyarwanda',\n  he: 'עברית',\n  uk: 'Українська',\n  ru: 'Русский',\n  kr: 'Kreyòl',\n};\n\nconst ORDER = ['es', 'en', 'fr', 'pt', 'rw', 'he', 'uk', 'ru', 'kr'];\nconst payload = $input.first().json.body;\n\nconst summaryRows = [];\nfor (const code of ORDER) {\n  const s = payload.summary[code];\n  if (!s) continue;\n  summaryRows.push({\n    json: {\n      language: langNames[code] || code,\n      code,\n      totalEs: payload.totals.spanishArticles,\n      translated: s.translated,\n      missing: s.missing,\n      percent: s.percent,\n    },\n  });\n}\n\nconst detailRows = [];\nconst orphanCount = payload.orphaned?.length || 0;\n\nif (orphanCount > 0) {\n  const warnRow = { json: { date: '', spanishTitle: `⚠️  ${orphanCount} archivo(s) huérfano(s) — sin versión en español`, spanishUrl: '' } };\n  for (const lang of ORDER) warnRow.json[lang] = '';\n  detailRows.push(warnRow);\n}\n\nfor (const art of payload.articles) {\n  const row = { json: { date: art.date, spanishTitle: art.spanishTitle, spanishUrl: art.spanishUrl || '' } };\n  for (const lang of ORDER) row.json[lang] = art.files[lang] ? '✅' : '❌';\n  detailRows.push(row);\n}\n\nfor (const orphan of payload.orphaned) {\n  const row = { json: { date: orphan.groupId, spanishTitle: `⚠️ Huérfano: solo en ${orphan.languages.join(', ')}`, spanishUrl: orphan.urls?.[orphan.languages[0]] || '' } };\n  for (const lang of ORDER) row.json[lang] = orphan.languages.includes(lang) ? '⚠️' : '—';\n  detailRows.push(row);\n}\n\nreturn [summaryRows, detailRows];\n",
        "mode": "raw"
      },
      "nodesOnOutput": {
        "main": [
          {
            "type": "n8n-nodes-base.googleSheets",
            "index": [
              0
            ]
          },
          {
            "type": "n8n-nodes-base.googleSheets",
            "index": [
              1
            ]
          }
        ]
      }
    },
    {
      "id": "sheets-summary",
      "name": "Sheets - Resumen",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4,
      "position": [720, 180],
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "",
          "mode": "id"
        },
        "sheetName": "Resumen",
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "A": "={{ $json.language }}",
            "B": "={{ $json.code }}",
            "C": "={{ $json.totalEs }}",
            "D": "={{ $json.translated }}",
            "E": "={{ $json.missing }}",
            "F": "={{ $json.percent }}"
          }
        },
        "options": {
          "cellFormat": "USER_ENTERED",
          "dataLocationOnSheet": "A:F"
        },
        "handshake": false
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": null,
          "name": "Google Sheets"
        }
      }
    },
    {
      "id": "sheets-detail",
      "name": "Sheets - Detalle",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4,
      "position": [720, 420],
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "",
          "mode": "id"
        },
        "sheetName": "Detalle",
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "A": "={{ $json.date }}",
            "B": "={{ $json.spanishTitle }}",
            "C": "={{ $json.spanishUrl }}",
            "D": "={{ $json.es }}",
            "E": "={{ $json.en }}",
            "F": "={{ $json.fr }}",
            "G": "={{ $json.pt }}",
            "H": "={{ $json.rw }}",
            "I": "={{ $json.he }}",
            "J": "={{ $json.uk }}",
            "K": "={{ $json.ru }}",
            "L": "={{ $json.kr }}"
          }
        },
        "options": {
          "cellFormat": "USER_ENTERED",
          "dataLocationOnSheet": "A:L"
        },
        "handshake": false
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": null,
          "name": "Google Sheets"
        }
      }
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Formatear datos",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Formatear datos": {
      "main": [
        [
          {
            "node": "Sheets - Resumen",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Sheets - Detalle",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {},
  "staticData": null,
  "tags": [],
  "versionId": "1.0"
}
