import React, { useState, useEffect } from 'react'; import { Prompt, PromptVersion, Category } from '../types'; import { SparklesIcon, HistoryIcon, TrashIcon } from './Icons'; import { optimizePrompt } from '../services/geminiService'; interface PromptEditorProps { prompt: Prompt; versions: PromptVersion[]; categoryName: string; onSave: (content: string, summary: string) => void; onDelete: (id: string) => void; } const PromptEditor: React.FC = ({ prompt, versions, categoryName, onSave, onDelete }) => { const currentVersion = versions.find(v => v.id === prompt.currentVersionId); const [content, setContent] = useState(currentVersion?.content || ''); const [summary, setSummary] = useState(''); const [isOptimizing, setIsOptimizing] = useState(false); const [showHistory, setShowHistory] = useState(false); useEffect(() => { setContent(currentVersion?.content || ''); setSummary(''); }, [prompt.id, prompt.currentVersionId, currentVersion]); const handleOptimize = async () => { if (!content.trim()) return; setIsOptimizing(true); const optimized = await optimizePrompt(content, categoryName); setContent(optimized); setIsOptimizing(false); }; const handleSave = () => { if (!content.trim()) return; onSave(content, summary || `${versions.length + 1}차 고도화 진행`); }; return (
{/* Header */}
{categoryName} / 진화 단계 v{currentVersion?.versionNumber || 1}

{prompt.name}

{/* Editor Area */}
활성 연구 워크스페이스