import React, { useState, useEffect } from 'react'; import { GenerationTemplate } from '@/api/entities'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Textarea } from '@/components/ui/textarea'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Label } from '@/components/ui/label'; import { Alert, AlertDescription } from '@/components/ui/alert'; import { HelpCircle, Save, PlusCircle, Loader2, Image } from 'lucide-react'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; export default function ImagePromptManager() { const [templates, setTemplates] = useState([]); const [currentTemplate, setCurrentTemplate] = useState({ id: null, name: '', image_prompt: '', style: 'fashion' }); const [isLoading, setIsLoading] = useState(false); const [message, setMessage] = useState(null); useEffect(() => { loadTemplates(); }, []); const loadTemplates = async () => { const data = await GenerationTemplate.list('-created_date'); setTemplates(data); }; const handleSelectTemplate = (templateId) => { const selected = templates.find(t => t.id === templateId); if (selected) { setCurrentTemplate(selected); } }; const handleInputChange = (field, value) => { setCurrentTemplate(prev => ({ ...prev, [field]: value })); }; const handleSaveTemplate = async () => { if (!currentTemplate.name || !currentTemplate.image_prompt) { setMessage({ type: 'error', text: '模板名称和生图提示词不能为空' }); return; } setIsLoading(true); setMessage(null); try { if (currentTemplate.id) { await GenerationTemplate.update(currentTemplate.id, { name: currentTemplate.name, image_prompt: currentTemplate.image_prompt, style: currentTemplate.style }); } else { await GenerationTemplate.create({ name: currentTemplate.name, image_prompt: currentTemplate.image_prompt, style: currentTemplate.style, text_template: "", // 保持兼容性 target_platform: "xiaohongshu" }); } await loadTemplates(); setMessage({ type: 'success', text: '生图模板保存成功!' }); handleNewTemplate(); } catch (error) { setMessage({ type: 'error', text: '保存失败,请重试' }); } setIsLoading(false); }; const handleNewTemplate = () => { setCurrentTemplate({ id: null, name: '', image_prompt: '', style: 'fashion' }); }; const styleOptions = [ { value: 'fashion', label: '时尚穿搭' }, { value: 'lifestyle', label: '生活方式' }, { value: 'product', label: '产品展示' }, { value: 'story', label: '故事场景' } ]; return (