import { useEffect, useState } from "react"; import SecaoHeader from "../components/SecaoHeader.jsx"; import TrendChart from "../components/TrendChart.jsx"; import { buscarHistorico } from "../api.js"; const METRICAS = [ ["opportunities.open_pipeline_product_value", "Pipeline (produtos)"], ["opportunities.open_pipeline_amount", "Pipeline (Amount)"], ["leads.new_leads", "Leads novos"], ["leads.conversion_rate", "Conversão (%)"], ["opportunities.won_opportunities", "Ganhas"], ["opportunities.stalled_opportunities", "Paradas"], ["tasks.tasks_overdue", "Tarefas vencidas"], ["satisfaction.avg_score", "Satisfação"], ]; export default function Trends() { const [metrica, setMetrica] = useState(METRICAS[0][0]); const [dias, setDias] = useState(7); const [serie, setSerie] = useState([]); const [status, setStatus] = useState("Carregando série do banco…"); async function carregar() { setStatus("Carregando do Turso…"); try { const d = await buscarHistorico(dias); const lista = d.days || []; setSerie(lista); setStatus(lista.length ? `${lista.length} dia(s) · ${METRICAS.find((m) => m[0] === metrica)?.[1]}` : "Sem dados salvos ainda — rode o agente em alguns dias."); } catch (e) { setStatus("Falha: " + e.message); } } useEffect(() => { carregar(); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return (
} /> m[0] === metrica)?.[1] || metrica} />
{status}
); }