Update backup: Tablero CDC - Refrescar Banco Fulgencio Diario

This commit is contained in:
2026-06-28 04:00:42 +00:00
parent b21fe59b99
commit ff6b9d3c91
+240 -112
View File
@@ -1,5 +1,5 @@
{
"updatedAt": "2026-06-18T14:57:07.574Z",
"updatedAt": "2026-06-25T03:27:49.324Z",
"createdAt": "2026-06-16T17:22:11.395Z",
"id": "g2JtKXNz5GDbkmQH",
"name": "Tablero CDC - Refrescar Banco Fulgencio Diario",
@@ -20,8 +20,8 @@
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.3,
"position": [
0,
0
-816,
-64
],
"id": "37cc170e-2f53-4e2e-915a-f6020e701c2e",
"name": "Schedule Trigger"
@@ -54,8 +54,8 @@
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
208,
0
-608,
-64
],
"id": "da0ce8a1-0efe-4f5b-909d-7f64b67e8f3b",
"name": "Sheets - Leer Banco Fulgencio",
@@ -73,8 +73,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
416,
0
-400,
-64
],
"id": "1422a9de-12a8-4b2d-bda9-9dc7193a5d67",
"name": "Code - Filtrar filas Tablero CDC"
@@ -86,8 +86,8 @@
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
640,
0
-176,
-64
],
"id": "3fb77467-0f3c-419e-8a6e-ab44d118ceef",
"name": "Loop - Filas Banco Fulgencio"
@@ -120,8 +120,8 @@
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
800,
-144
-16,
-208
],
"id": "6896c55a-b17b-41bf-8f99-3fa949c29d67",
"name": "IF - Tiene file_id?"
@@ -136,8 +136,8 @@
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
992,
-368
368,
-336
],
"id": "40ccb6f9-4e2d-4b21-ad1c-583151c84641",
"name": "HTTP - Obtener metadata Drive",
@@ -157,8 +157,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1888,
-224
640,
-288
],
"id": "ebeb387e-0038-4166-b3a9-bdfdd863550a",
"name": "Code - Evaluar refresco"
@@ -191,8 +191,8 @@
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
2112,
-224
864,
-288
],
"id": "a0ac9c90-9029-41de-9338-1d076f045947",
"name": "IF - Debe refrescar?"
@@ -213,8 +213,8 @@
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
3552,
-288
2640,
-368
],
"id": "2eabdc4e-1bb5-4f8a-bacb-844e87d379c0",
"name": "HTTP - Exportar Slides TXT",
@@ -234,8 +234,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
4160,
-336
3536,
-432
],
"id": "fadb71e0-541f-4cc0-8e03-be43fb3fd841",
"name": "Code - Preparar texto IA Refresco"
@@ -268,8 +268,8 @@
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
4368,
-336
3744,
-432
],
"id": "cade8a8b-995a-4951-9b76-7f695a10fe7d",
"name": "IF - Tiene contenido?"
@@ -312,8 +312,8 @@
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"typeVersion": 1.2,
"position": [
4976,
-400
4352,
-496
],
"id": "08c0d48c-400f-454a-832d-9e08d4724fbd",
"name": "Gemini - Reanalizar contenido Slides"
@@ -326,8 +326,8 @@
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1.1,
"position": [
4976,
-192
4352,
-288
],
"id": "5875c1c9-5aa3-4f60-a3ee-f94e0293ec04",
"name": "Google Gemini Chat Model",
@@ -345,8 +345,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
5328,
-400
4704,
-496
],
"id": "525e3816-a692-49e3-9885-20b8b4ddccbe",
"name": "Code - Normalizar respuesta refresco"
@@ -709,8 +709,8 @@
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
6096,
448
5472,
352
],
"id": "f6487012-88de-4be3-b62e-fa9bdfdda270",
"name": "Google Sheets - Upsert Banco Fulgencio",
@@ -728,8 +728,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
4752,
96
4128,
0
],
"id": "42c459da-dd49-4ed8-aa1d-ff1f39688acf",
"name": "Code - Marcar sin contenido"
@@ -741,8 +741,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1984,
176
736,
112
],
"id": "6287af34-de8e-49aa-b432-778c016c9f8d",
"name": "Code - Marcar sin file_id"
@@ -754,8 +754,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1936,
-32
688,
-96
],
"id": "389332ff-4d6b-4a5d-824d-28a1098030ef",
"name": "Code - Marcar error metadata Drive"
@@ -767,8 +767,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
4096,
-144
3472,
-240
],
"id": "251b1833-27c9-4a63-9a97-6ad600ea5283",
"name": "Code - Marcar error export Slides"
@@ -801,8 +801,8 @@
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
2320,
-224
1408,
-304
],
"id": "5de289da-1c11-422e-be69-73d6d8c67db8",
"name": "IF - Es Google Slides nativo?"
@@ -841,8 +841,8 @@
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
2848,
-112
1936,
-192
],
"id": "150797a7-4db0-4aff-88ed-d18eb0afc202",
"name": "HTTP - Convertir PPTX con Apps Script"
@@ -854,8 +854,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
3024,
-112
2112,
-192
],
"id": "fcc131cb-6181-41fc-9231-129dfc7d6095",
"name": "Code - Preparar ID convertido"
@@ -887,8 +887,8 @@
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
3232,
-112
2320,
-192
],
"id": "dd855b50-ab6f-449d-8c5c-6c5b5a80f339",
"name": "IF - Conversion OK?"
@@ -920,8 +920,8 @@
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
2576,
-64
1664,
-144
],
"id": "ea25df58-fe23-4f28-83d0-2ce8851aa353",
"name": "IF - PPTX pesa <= 100MB?"
@@ -933,11 +933,75 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
3232,
176
2320,
96
],
"id": "2390d0c3-bf35-4480-8987-6ee1509d211e",
"name": "Code - Marcar PPTX demasiado pesado"
},
{
"parameters": {
"content": "## 📅 ENTRADA DIARIA — BANCO FULGENCIO\n\nEste flujo corre automáticamente todos los días a las 23:00.\n\nLee el Banco de Propuestas de Fulgencio y procesa solo filas provenientes de Tablero CDC.\n\nCriterios mínimos:\n- tablero_origen = Tablero CDC\n- tablero_sync_key presente\n- tablero_project_id presente\n- Enlace a la propuesta presente\n\nObjetivo:\nmantener actualizado el banco que consulta FulgencioChat.",
"height": 544,
"width": 976,
"color": 5
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-864,
-384
],
"id": "9adcd60e-20bc-4e8a-a822-daaadb405c8e",
"name": "Sticky Note"
},
{
"parameters": {
"content": "## 🔎 EVALUACIÓN DE CAMBIOS EN DRIVE\n\nPor cada fila válida, el flujo obtiene metadata del archivo en Google Drive.\n\nCompara:\n- drive_modified_time actual\n- ultimo_refresco_ia guardado\n- drive_modified_time previo\n\nSolo refresca si:\n- nunca se refrescó\n- el archivo cambió después del último refresco\n- cambió la fecha de modificación en Drive\n\nSi no hay cambios, pasa a la siguiente fila.",
"height": 896,
"width": 704,
"color": 3
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
320,
-640
],
"id": "fa12fd6a-ee6b-47ee-af68-5fb1f186bd9a",
"name": "Sticky Note1"
},
{
"parameters": {
"content": "## 📄 EXTRACCIÓN DE CONTENIDO\n\nSi el archivo es Google Slides nativo:\n- se exporta directamente a texto.\n\nSi el archivo es PPTX:\n- solo se convierte si pesa 100 MB o menos.\n- se convierte con Apps Script a Google Slides.\n- luego se exporta a texto.\n\nErrores controlados:\n- SIN_FILE_ID\n- ERROR_METADATA_DRIVE\n- ERROR_EXPORT_SLIDES\n- ERROR_CONVERT_PPTX\n- PPTX_DEMASIADO_PESADO\n- SIN_CONTENIDO\n\nUna fila con error se marca en el banco y el flujo continúa.",
"height": 1152,
"width": 1456,
"color": 2
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1344,
-832
],
"id": "75a29688-9331-4fdb-928f-600f4bd21136",
"name": "Sticky Note2"
},
{
"parameters": {
"content": "## 🤖 REANÁLISIS IA Y UPSERT AL BANCO\n\nGemini analiza el texto exportado de la presentación.\n\nPuede actualizar:\n- nombre_propuesta\n- tipo_accion\n- canal\n- tags\n- descripcion\n- tactica_promocional\n\nNo debe cambiar:\n- país\n- cliente\n- marca\n- enlace\n- identificadores de Tablero CDC\n\nReglas fijas:\n- APROBADA = PENDIENTE DE APROBACION\n- AMBIENTE DE COMPRA (RE) = PENDIENTE\n\nEl banco se actualiza usando:\ntablero_sync_key\n\nTambién guarda:\n- refresh_status\n- refresh_attempts\n- ultimo_refresco_ia\n- drive_modified_time\n- requiere_revision\n- motivos_revision",
"height": 1760,
"width": 2576,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
3152,
-1136
],
"id": "fc72547c-317e-4ac7-9428-825e8504f143",
"name": "Sticky Note3"
}
],
"connections": {
@@ -1286,9 +1350,9 @@
"meta": {
"templateCredsSetupCompleted": true
},
"versionId": "fa439ffe-bd81-48ec-b3e6-74cee25047a9",
"activeVersionId": "fa439ffe-bd81-48ec-b3e6-74cee25047a9",
"versionCounter": 362,
"versionId": "313b1289-adef-4382-b285-8866e343bef5",
"activeVersionId": "313b1289-adef-4382-b285-8866e343bef5",
"versionCounter": 418,
"triggerCount": 1,
"shared": [
{
@@ -1311,9 +1375,9 @@
],
"tags": [],
"activeVersion": {
"updatedAt": "2026-06-18T14:55:57.000Z",
"createdAt": "2026-06-18T14:55:56.722Z",
"versionId": "fa439ffe-bd81-48ec-b3e6-74cee25047a9",
"updatedAt": "2026-06-25T03:27:50.000Z",
"createdAt": "2026-06-25T03:27:49.327Z",
"versionId": "313b1289-adef-4382-b285-8866e343bef5",
"workflowId": "g2JtKXNz5GDbkmQH",
"nodes": [
{
@@ -1329,8 +1393,8 @@
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.3,
"position": [
0,
0
-816,
-64
],
"id": "37cc170e-2f53-4e2e-915a-f6020e701c2e",
"name": "Schedule Trigger"
@@ -1363,8 +1427,8 @@
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
208,
0
-608,
-64
],
"id": "da0ce8a1-0efe-4f5b-909d-7f64b67e8f3b",
"name": "Sheets - Leer Banco Fulgencio",
@@ -1382,8 +1446,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
416,
0
-400,
-64
],
"id": "1422a9de-12a8-4b2d-bda9-9dc7193a5d67",
"name": "Code - Filtrar filas Tablero CDC"
@@ -1395,8 +1459,8 @@
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
640,
0
-176,
-64
],
"id": "3fb77467-0f3c-419e-8a6e-ab44d118ceef",
"name": "Loop - Filas Banco Fulgencio"
@@ -1429,8 +1493,8 @@
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
800,
-144
-16,
-208
],
"id": "6896c55a-b17b-41bf-8f99-3fa949c29d67",
"name": "IF - Tiene file_id?"
@@ -1445,8 +1509,8 @@
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
992,
-368
368,
-336
],
"id": "40ccb6f9-4e2d-4b21-ad1c-583151c84641",
"name": "HTTP - Obtener metadata Drive",
@@ -1466,8 +1530,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1888,
-224
640,
-288
],
"id": "ebeb387e-0038-4166-b3a9-bdfdd863550a",
"name": "Code - Evaluar refresco"
@@ -1500,8 +1564,8 @@
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
2112,
-224
864,
-288
],
"id": "a0ac9c90-9029-41de-9338-1d076f045947",
"name": "IF - Debe refrescar?"
@@ -1522,8 +1586,8 @@
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
3552,
-288
2640,
-368
],
"id": "2eabdc4e-1bb5-4f8a-bacb-844e87d379c0",
"name": "HTTP - Exportar Slides TXT",
@@ -1543,8 +1607,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
4160,
-336
3536,
-432
],
"id": "fadb71e0-541f-4cc0-8e03-be43fb3fd841",
"name": "Code - Preparar texto IA Refresco"
@@ -1577,8 +1641,8 @@
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
4368,
-336
3744,
-432
],
"id": "cade8a8b-995a-4951-9b76-7f695a10fe7d",
"name": "IF - Tiene contenido?"
@@ -1621,8 +1685,8 @@
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"typeVersion": 1.2,
"position": [
4976,
-400
4352,
-496
],
"id": "08c0d48c-400f-454a-832d-9e08d4724fbd",
"name": "Gemini - Reanalizar contenido Slides"
@@ -1635,8 +1699,8 @@
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1.1,
"position": [
4976,
-192
4352,
-288
],
"id": "5875c1c9-5aa3-4f60-a3ee-f94e0293ec04",
"name": "Google Gemini Chat Model",
@@ -1654,8 +1718,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
5328,
-400
4704,
-496
],
"id": "525e3816-a692-49e3-9885-20b8b4ddccbe",
"name": "Code - Normalizar respuesta refresco"
@@ -2018,8 +2082,8 @@
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
6096,
448
5472,
352
],
"id": "f6487012-88de-4be3-b62e-fa9bdfdda270",
"name": "Google Sheets - Upsert Banco Fulgencio",
@@ -2037,8 +2101,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
4752,
96
4128,
0
],
"id": "42c459da-dd49-4ed8-aa1d-ff1f39688acf",
"name": "Code - Marcar sin contenido"
@@ -2050,8 +2114,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1984,
176
736,
112
],
"id": "6287af34-de8e-49aa-b432-778c016c9f8d",
"name": "Code - Marcar sin file_id"
@@ -2063,8 +2127,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1936,
-32
688,
-96
],
"id": "389332ff-4d6b-4a5d-824d-28a1098030ef",
"name": "Code - Marcar error metadata Drive"
@@ -2076,8 +2140,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
4096,
-144
3472,
-240
],
"id": "251b1833-27c9-4a63-9a97-6ad600ea5283",
"name": "Code - Marcar error export Slides"
@@ -2110,8 +2174,8 @@
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
2320,
-224
1408,
-304
],
"id": "5de289da-1c11-422e-be69-73d6d8c67db8",
"name": "IF - Es Google Slides nativo?"
@@ -2150,8 +2214,8 @@
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
2848,
-112
1936,
-192
],
"id": "150797a7-4db0-4aff-88ed-d18eb0afc202",
"name": "HTTP - Convertir PPTX con Apps Script"
@@ -2163,8 +2227,8 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
3024,
-112
2112,
-192
],
"id": "fcc131cb-6181-41fc-9231-129dfc7d6095",
"name": "Code - Preparar ID convertido"
@@ -2196,8 +2260,8 @@
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
3232,
-112
2320,
-192
],
"id": "dd855b50-ab6f-449d-8c5c-6c5b5a80f339",
"name": "IF - Conversion OK?"
@@ -2229,8 +2293,8 @@
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
2576,
-64
1664,
-144
],
"id": "ea25df58-fe23-4f28-83d0-2ce8851aa353",
"name": "IF - PPTX pesa <= 100MB?"
@@ -2242,11 +2306,75 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
3232,
176
2320,
96
],
"id": "2390d0c3-bf35-4480-8987-6ee1509d211e",
"name": "Code - Marcar PPTX demasiado pesado"
},
{
"parameters": {
"content": "## 📅 ENTRADA DIARIA — BANCO FULGENCIO\n\nEste flujo corre automáticamente todos los días a las 23:00.\n\nLee el Banco de Propuestas de Fulgencio y procesa solo filas provenientes de Tablero CDC.\n\nCriterios mínimos:\n- tablero_origen = Tablero CDC\n- tablero_sync_key presente\n- tablero_project_id presente\n- Enlace a la propuesta presente\n\nObjetivo:\nmantener actualizado el banco que consulta FulgencioChat.",
"height": 544,
"width": 976,
"color": 5
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-864,
-384
],
"id": "9adcd60e-20bc-4e8a-a822-daaadb405c8e",
"name": "Sticky Note"
},
{
"parameters": {
"content": "## 🔎 EVALUACIÓN DE CAMBIOS EN DRIVE\n\nPor cada fila válida, el flujo obtiene metadata del archivo en Google Drive.\n\nCompara:\n- drive_modified_time actual\n- ultimo_refresco_ia guardado\n- drive_modified_time previo\n\nSolo refresca si:\n- nunca se refrescó\n- el archivo cambió después del último refresco\n- cambió la fecha de modificación en Drive\n\nSi no hay cambios, pasa a la siguiente fila.",
"height": 896,
"width": 704,
"color": 3
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
320,
-640
],
"id": "fa12fd6a-ee6b-47ee-af68-5fb1f186bd9a",
"name": "Sticky Note1"
},
{
"parameters": {
"content": "## 📄 EXTRACCIÓN DE CONTENIDO\n\nSi el archivo es Google Slides nativo:\n- se exporta directamente a texto.\n\nSi el archivo es PPTX:\n- solo se convierte si pesa 100 MB o menos.\n- se convierte con Apps Script a Google Slides.\n- luego se exporta a texto.\n\nErrores controlados:\n- SIN_FILE_ID\n- ERROR_METADATA_DRIVE\n- ERROR_EXPORT_SLIDES\n- ERROR_CONVERT_PPTX\n- PPTX_DEMASIADO_PESADO\n- SIN_CONTENIDO\n\nUna fila con error se marca en el banco y el flujo continúa.",
"height": 1152,
"width": 1456,
"color": 2
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
1344,
-832
],
"id": "75a29688-9331-4fdb-928f-600f4bd21136",
"name": "Sticky Note2"
},
{
"parameters": {
"content": "## 🤖 REANÁLISIS IA Y UPSERT AL BANCO\n\nGemini analiza el texto exportado de la presentación.\n\nPuede actualizar:\n- nombre_propuesta\n- tipo_accion\n- canal\n- tags\n- descripcion\n- tactica_promocional\n\nNo debe cambiar:\n- país\n- cliente\n- marca\n- enlace\n- identificadores de Tablero CDC\n\nReglas fijas:\n- APROBADA = PENDIENTE DE APROBACION\n- AMBIENTE DE COMPRA (RE) = PENDIENTE\n\nEl banco se actualiza usando:\ntablero_sync_key\n\nTambién guarda:\n- refresh_status\n- refresh_attempts\n- ultimo_refresco_ia\n- drive_modified_time\n- requiere_revision\n- motivos_revision",
"height": 1760,
"width": 2576,
"color": 4
},
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
3152,
-1136
],
"id": "fc72547c-317e-4ac7-9428-825e8504f143",
"name": "Sticky Note3"
}
],
"connections": {
@@ -2584,15 +2712,15 @@
}
},
"authors": "Isaac Aracena",
"name": "Version fa439ffe",
"name": "Version 313b1289",
"description": "",
"autosaved": true,
"autosaved": false,
"workflowPublishHistory": [
{
"createdAt": "2026-06-18T14:55:57.914Z",
"id": 1574,
"createdAt": "2026-06-25T03:27:50.388Z",
"id": 1859,
"workflowId": "g2JtKXNz5GDbkmQH",
"versionId": "fa439ffe-bd81-48ec-b3e6-74cee25047a9",
"versionId": "313b1289-adef-4382-b285-8866e343bef5",
"event": "activated",
"userId": "0a88c0b1-928e-4412-896e-c5d1c99b2029"
}