evolution-api/dashboard/components/MessageChart.tsx
Claude 97e3930033
feat: adiciona painel interativo com chat e IA para análise de mensagens
- Dashboard completo com métricas em tempo real
- Chat interativo com IA para consultas em linguagem natural
- Análise de sentimento das mensagens
- Gráficos interativos (mensagens por dia, sentimentos)
- Filtros avançados por instância e data
- Top contatos e timeline de mensagens
- API routes para stats, mensagens, sentimento e chat
- Integração com PostgreSQL via Prisma
- Interface moderna com Next.js 14, TypeScript e Tailwind CSS
- Documentação completa com README e QUICKSTART
2025-11-14 03:16:46 +00:00

72 lines
2.3 KiB
TypeScript

'use client';
import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from 'recharts';
import { TrendingUp } from 'lucide-react';
export default function MessageChart() {
// Dados de exemplo - substituir por dados reais da API
const data = [
{ name: 'Seg', enviadas: 420, recebidas: 380 },
{ name: 'Ter', enviadas: 380, recebidas: 420 },
{ name: 'Qua', enviadas: 520, recebidas: 480 },
{ name: 'Qui', enviadas: 460, recebidas: 510 },
{ name: 'Sex', enviadas: 590, recebidas: 550 },
{ name: 'Sáb', enviadas: 320, recebidas: 280 },
{ name: 'Dom', enviadas: 280, recebidas: 240 },
];
return (
<div className="bg-white dark:bg-gray-800 rounded-xl shadow-sm p-6 border border-gray-200 dark:border-gray-700">
<div className="flex items-center justify-between mb-6">
<div className="flex items-center space-x-2">
<TrendingUp className="w-5 h-5 text-primary-500" />
<h3 className="text-lg font-semibold text-gray-900 dark:text-white">
Mensagens por Dia
</h3>
</div>
<span className="text-sm text-gray-500 dark:text-gray-400">Últimos 7 dias</span>
</div>
<ResponsiveContainer width="100%" height={300}>
<LineChart data={data}>
<CartesianGrid strokeDasharray="3 3" stroke="#374151" opacity={0.1} />
<XAxis
dataKey="name"
stroke="#6B7280"
style={{ fontSize: '12px' }}
/>
<YAxis
stroke="#6B7280"
style={{ fontSize: '12px' }}
/>
<Tooltip
contentStyle={{
backgroundColor: '#1F2937',
border: 'none',
borderRadius: '8px',
color: '#fff'
}}
/>
<Legend />
<Line
type="monotone"
dataKey="enviadas"
stroke="#22c55e"
strokeWidth={2}
dot={{ fill: '#22c55e', r: 4 }}
activeDot={{ r: 6 }}
/>
<Line
type="monotone"
dataKey="recebidas"
stroke="#3b82f6"
strokeWidth={2}
dot={{ fill: '#3b82f6', r: 4 }}
activeDot={{ r: 6 }}
/>
</LineChart>
</ResponsiveContainer>
</div>
);
}