import React from 'react'; import { Target, CheckCircle2, TrendingUp } from 'lucide-react'; import BudgetSimulator from '@/components/BudgetSimulator'; export const revalidate = 0; export default async function EstrategiaPage() { const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL || 'https://supabase.4ventures.es'; const serviceKey = process.env.SUPABASE_SERVICE_ROLE_KEY || process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY || ''; const now = new Date(); const currentMonth = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-01`; let targetData: any = { revenue_target: 10000, revenue_actual: 0, revenue_achievement_pct: 0, leads_target: 20, leads_actual: 0, clients_target: 4, clients_actual: 0 }; try { const res = await fetch(`${supabaseUrl}/rest/v1/rpc/targets_vs_actual`, { method: 'POST', headers: { apikey: serviceKey, Authorization: `Bearer ${serviceKey}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ p_month: currentMonth }), cache: 'no-store' }); if (res.ok) { const data = await res.json(); if (Array.isArray(data) && data.length > 0) { targetData = data[0]; } } } catch (e) { console.error('Error fetching targets_vs_actual:', e); } const revenuePct = Math.min(100, Math.round(targetData.revenue_achievement_pct || 0)); const leadsPct = targetData.leads_target > 0 ? Math.min(100, Math.round((Number(targetData.leads_actual) / Number(targetData.leads_target)) * 100)) : 0; const clientsPct = targetData.clients_target > 0 ? Math.min(100, Math.round((Number(targetData.clients_actual) / Number(targetData.clients_target)) * 100)) : 0; return (
Monitoreo mensual en tiempo real de metas fijadas frente al rendimiento real consolidado en Supabase.
{Number(targetData.revenue_actual || 0).toLocaleString('es-ES', { minimumFractionDigits: 2 })} €
Meta: {Number(targetData.revenue_target || 0).toLocaleString('es-ES')} € ({revenuePct}% completado)
{targetData.leads_actual || 0}
{targetData.leads_actual || 0} de {targetData.leads_target || 0} leads captados ({leadsPct}%)
{targetData.clients_actual || 0}
{targetData.clients_actual || 0} de {targetData.clients_target || 0} clientes ganados ({clientsPct}%)