import { useState } from "react"; import { useParams, useNavigate } from "react-router-dom"; import { Button } from "@/components/ui/button"; import { Textarea } from "@/components/ui/textarea"; import { Badge } from "@/components/ui/badge"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { ArrowLeft, Save, History, Power, Pencil } from "lucide-react"; import { useToast } from "@/hooks/use-toast"; import { VersionHistoryDialog } from "@/components/agents/VersionHistoryDialog"; import { SaveVersionDialog } from "@/components/agents/SaveVersionDialog"; import { Input } from "@/components/ui/input"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "@/components/ui/alert-dialog"; export default function AgentDetails() { const { id } = useParams(); const navigate = useNavigate(); const { toast } = useToast(); const [isHistoryOpen, setIsHistoryOpen] = useState(false); const [isSaveVersionOpen, setIsSaveVersionOpen] = useState(false); const [isDeactivateDialogOpen, setIsDeactivateDialogOpen] = useState(false); const [isEditingName, setIsEditingName] = useState(false); const [tempName, setTempName] = useState(""); // Mock data - substituir por dados reais do backend const [agent, setAgent] = useState<{ id: string | undefined; name: string; status: "active" | "inactive"; model: string; systemPrompt: string; }>({ id: id, name: "Agente de Atendimento", status: "active", model: "google/gemini-2.5-flash", systemPrompt: "Você é um assistente de atendimento ao cliente. Seja educado, prestativo e objetivo nas suas respostas. Sempre mantenha um tom profissional e cordial.", }); const [versions] = useState([ { id: 1, version: "2.1", type: "major" as const, description: "Melhorias na clareza das respostas", model: "Google Gemini 2.5 Flash", prompt: "Você é um assistente de atendimento ao cliente. Seja educado, prestativo e objetivo nas suas respostas. Sempre mantenha um tom profissional e cordial.", createdAt: "2024-01-15 14:30", author: "João Silva", }, { id: 2, version: "2.0", type: "major" as const, description: "Reformulação completa do prompt", model: "Google Gemini 2.5 Pro", prompt: "Você é um assistente de atendimento. Seja cordial e ajude o cliente.", createdAt: "2024-01-10 09:15", author: "Maria Santos", }, { id: 3, version: "1.5", type: "minor" as const, description: "Ajustes de tom", model: "OpenAI GPT-5 Mini", prompt: "Você é um assistente. Seja educado.", createdAt: "2024-01-05 16:45", author: "João Silva", }, ]); const aiModels = [ { value: "google/gemini-2.5-pro", label: "Google Gemini 2.5 Pro" }, { value: "google/gemini-2.5-flash", label: "Google Gemini 2.5 Flash" }, { value: "google/gemini-2.5-flash-lite", label: "Google Gemini 2.5 Flash Lite" }, { value: "openai/gpt-5", label: "OpenAI GPT-5" }, { value: "openai/gpt-5-mini", label: "OpenAI GPT-5 Mini" }, { value: "openai/gpt-5-nano", label: "OpenAI GPT-5 Nano" }, ]; const handleSave = (versionType: "major" | "minor" | "patch", notes: string) => { // TODO: Implementar salvamento no backend console.log("Saving agent:", agent, "Version type:", versionType, "Notes:", notes); toast({ title: "Agente atualizado", description: `Nova versão ${versionType} salva com sucesso.`, }); }; const handleToggleStatus = () => { if (agent.status === "active") { setIsDeactivateDialogOpen(true); } else { // Ativar diretamente sem modal setAgent({ ...agent, status: "active" }); toast({ title: "Status atualizado", description: "Agente ativado com sucesso.", }); } }; const handleConfirmDeactivate = () => { setAgent({ ...agent, status: "inactive" }); toast({ title: "Status atualizado", description: "Agente desativado com sucesso. Esta ação foi registrada.", }); setIsDeactivateDialogOpen(false); }; const handleStartEditName = () => { setTempName(agent.name); setIsEditingName(true); }; const handleNameBlur = () => { if (tempName.trim()) { setAgent({ ...agent, name: tempName.trim() }); } else { setTempName(agent.name); } setIsEditingName(false); }; return (