From fff5bf1ca26401fa9d1aa283ee9386795b675bd2 Mon Sep 17 00:00:00 2001 From: Marcos Fargas Date: Sun, 4 Oct 2026 23:18:30 +0200 Subject: [PATCH] fix: complete KPI HTML dashboard integration (mock window.claude, add ig.fol, map piezas, pass wData) --- src/app/dashboard/kpis/kpis/route.ts | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/app/dashboard/kpis/kpis/route.ts b/src/app/dashboard/kpis/kpis/route.ts index aa7fc5b..8f6e736 100644 --- a/src/app/dashboard/kpis/kpis/route.ts +++ b/src/app/dashboard/kpis/kpis/route.ts @@ -42,7 +42,7 @@ export async function GET() { gsc: { m: { clk: Array(daysCount).fill(null), imp: Array(daysCount).fill(null), posw: Array(daysCount).fill(null) }, from: startStr, to: endStr }, ga4: { m: { ses: Array(daysCount).fill(null), usr: Array(daysCount).fill(null), new: Array(daysCount).fill(null), key: Array(daysCount).fill(null) }, from: startStr, to: endStr }, gbp: { m: { imp: Array(daysCount).fill(null), call: Array(daysCount).fill(null), web: Array(daysCount).fill(null), dir: Array(daysCount).fill(null) }, from: startStr, to: endStr }, - ig: { m: { views: Array(daysCount).fill(null), inter: Array(daysCount).fill(null), likes: Array(daysCount).fill(null), com: Array(daysCount).fill(null), saves: Array(daysCount).fill(null), shares: Array(daysCount).fill(null), taps: Array(daysCount).fill(null) }, from: startStr, to: endStr }, + ig: { m: { views: Array(daysCount).fill(null), inter: Array(daysCount).fill(null), likes: Array(daysCount).fill(null), com: Array(daysCount).fill(null), saves: Array(daysCount).fill(null), shares: Array(daysCount).fill(null), taps: Array(daysCount).fill(null), fol: Array(daysCount).fill(null) }, from: startStr, to: endStr }, fb: { m: { imp: Array(daysCount).fill(null), eng: Array(daysCount).fill(null), views: Array(daysCount).fill(null), fol: Array(daysCount).fill(null) }, from: startStr, to: endStr }, li: { m: { imp: Array(daysCount).fill(null), clk: Array(daysCount).fill(null), eng: Array(daysCount).fill(null), fol: Array(daysCount).fill(null) }, from: startStr, to: endStr } } @@ -83,10 +83,29 @@ export async function GET() { const kData = { seguidores: 0, posts: [], actualizado: endStr, desde: startStr, hasta: endStr }; - // Inject data - const dataPayload = { K, KC: {}, kData, piezas: creativePipeline || [] }; + // Map creative_pipeline to HTML's expected format (estado, formato, titulo, fecha, etc.) + const piezasMapped = (creativePipeline || []).map((cp: any) => ({ + id: cp.id, + titulo: cp.title || cp.titulo || 'Sin título', + formato: cp.format || cp.formato || 'post', + estado: cp.status || cp.estado || 'borrador', + pilar: cp.pillar || cp.pilar || '', + copy: cp.caption || cp.copy || '', + visual: cp.visual_idea || cp.visual || '', + fecha: cp.published_at ? String(cp.published_at).slice(0, 10) : (cp.created_at ? String(cp.created_at).slice(0, 10) : endStr), + imgs: Array.isArray(cp.images) ? cp.images : (cp.images ? [cp.images] : []), + comentarios: [] + })); + + // Inject data and mock window.claude so early calls to downloads/sample don't throw + const dataPayload = { K, KC: {}, kData, piezas: piezasMapped }; let htmlStr = htmlTemplate.replace( + '