'use client'; import { useState, useRef, useEffect } from 'react'; import { Send, Bot, User, Sparkles, TrendingUp, MessageSquare } from 'lucide-react'; interface Message { id: number; role: 'user' | 'assistant'; content: string; timestamp: Date; data?: any; } export default function ChatInterface() { const [messages, setMessages] = useState([ { id: 1, role: 'assistant', content: 'Olá! Sou seu assistente de análise de dados do WhatsApp. Posso te ajudar a:\n\n• Analisar sentimentos das mensagens\n• Identificar padrões de conversação\n• Detectar spam e mensagens suspeitas\n• Gerar relatórios personalizados\n• Responder perguntas sobre suas métricas\n\nO que você gostaria de saber?', timestamp: new Date(), } ]); const [input, setInput] = useState(''); const [loading, setLoading] = useState(false); const messagesEndRef = useRef(null); const scrollToBottom = () => { messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); }; useEffect(() => { scrollToBottom(); }, [messages]); const suggestedQuestions = [ { icon: TrendingUp, text: 'Quais são os horários de pico de mensagens?' }, { icon: MessageSquare, text: 'Mostre-me o sentimento geral das conversas' }, { icon: Sparkles, text: 'Detecte padrões nas mensagens recebidas' }, ]; const handleSendMessage = async () => { if (!input.trim() || loading) return; const userMessage: Message = { id: messages.length + 1, role: 'user', content: input, timestamp: new Date(), }; setMessages(prev => [...prev, userMessage]); setInput(''); setLoading(true); try { // Chamar API real do chat const response = await fetch('/api/chat', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ message: input, instanceId: null, // Pode ser configurado para filtrar por instância }), }); if (!response.ok) { throw new Error('Erro ao processar mensagem'); } const data = await response.json(); const assistantMessage: Message = { id: messages.length + 2, role: 'assistant', content: data.response, timestamp: new Date(), }; setMessages(prev => [...prev, assistantMessage]); setLoading(false); } catch (error) { console.error('Erro ao enviar mensagem:', error); const errorMessage: Message = { id: messages.length + 2, role: 'assistant', content: '❌ Desculpe, ocorreu um erro ao processar sua mensagem. Tente novamente.', timestamp: new Date(), }; setMessages(prev => [...prev, errorMessage]); setLoading(false); } }; const handleSuggestedQuestion = (question: string) => { setInput(question); }; const handleKeyPress = (e: React.KeyboardEvent) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); handleSendMessage(); } }; return (
{/* Chat Principal */}
{/* Header */}

Assistente IA

Análise inteligente de dados

{/* Messages */}
{messages.map((message) => (
{message.role === 'user' ? ( ) : ( )}

{message.content}

{message.timestamp.toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' })}
))} {loading && (
)}
{/* Input */}
setInput(e.target.value)} onKeyPress={handleKeyPress} placeholder="Digite sua pergunta..." disabled={loading} className="flex-1 px-4 py-3 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-primary-500 focus:border-transparent dark:bg-gray-700 dark:text-white disabled:opacity-50" />
{/* Sugestões */}

Perguntas Sugeridas

{suggestedQuestions.map((q, index) => ( ))}

Dica Pro

Faça perguntas específicas para obter análises mais precisas. Você pode perguntar sobre períodos, contatos, sentimentos e muito mais!

); }