import { useState, useEffect } from "react"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Wand2, GitBranch } from "lucide-react"; interface EditPromptDialogProps { open: boolean; onOpenChange: (open: boolean) => void; prompt: { id: number; title: string; systemPrompt?: string; version?: string; } | null; } export function EditPromptDialog({ open, onOpenChange, prompt }: EditPromptDialogProps) { const [title, setTitle] = useState(""); const [systemPrompt, setSystemPrompt] = useState(""); const [versionType, setVersionType] = useState<"major" | "minor" | "patch">("minor"); const [changeDescription, setChangeDescription] = useState(""); // Assistente fields const [agentName, setAgentName] = useState(""); const [agentRole, setAgentRole] = useState(""); const [targetAudience, setTargetAudience] = useState(""); const [mainObjective, setMainObjective] = useState(""); const [toneOfVoice, setToneOfVoice] = useState(""); const [forbiddenPatterns, setForbiddenPatterns] = useState(""); const [refinementInstructions, setRefinementInstructions] = useState(""); const [isGenerated, setIsGenerated] = useState(false); // Carregar dados do prompt quando o dialog abrir useEffect(() => { if (prompt && open) { setTitle(prompt.title); setSystemPrompt(prompt.systemPrompt || ""); setChangeDescription(""); setVersionType("minor"); } }, [prompt, open]); const handleGeneratePrompt = () => { let generatedPrompt = `Você é ${agentName}, ${agentRole}. Público-alvo: ${targetAudience} Objetivo principal: ${mainObjective} Tom de voz: ${toneOfVoice} ${forbiddenPatterns ? `Padrões proibidos:\n${forbiddenPatterns}` : ''} Siga estas diretrizes em todas as suas interações.`; if (refinementInstructions && isGenerated) { generatedPrompt += `\n\nInstruções adicionais:\n${refinementInstructions}`; } setSystemPrompt(generatedPrompt); setIsGenerated(true); }; const handleStartOver = () => { setAgentName(""); setAgentRole(""); setTargetAudience(""); setMainObjective(""); setToneOfVoice(""); setForbiddenPatterns(""); setRefinementInstructions(""); setSystemPrompt(""); setIsGenerated(false); }; const handleSave = () => { console.log("Salvando nova versão:", { promptId: prompt?.id, title, systemPrompt, versionType, changeDescription }); // Aqui você implementaria a lógica de salvar nova versão no backend onOpenChange(false); }; const getVersionDescription = () => { switch (versionType) { case "major": return "Mudanças significativas que alteram a funcionalidade principal"; case "minor": return "Novas funcionalidades ou melhorias sem quebrar compatibilidade"; case "patch": return "Correções e ajustes menores"; } }; if (!prompt) return null; return ( Editar Prompt Edite o prompt manualmente ou use o assistente. Uma nova versão será criada preservando o histórico.
Versão atual: {prompt.version || "1.0.0"}
setTitle(e.target.value)} />
Manual Assistente