'use client' import { useState } from "react" import { useRouter } from "next/navigation" export default function AgentForm({ categories, agent, }: { categories: { id: number; name: string }[] agent?: { id?: number name: string slug: string description: string icon?: string categoryId?: number features?: string hotQuestions?: string quickQuestions?: string difyApiUrl?: string difyApiKey?: string status?: string isFeatured?: boolean featuredOrder?: number } }) { const router = useRouter() const [formData, setFormData] = useState({ name: agent?.name || "", slug: agent?.slug || "", description: agent?.description || "", icon: agent?.icon || "", categoryId: agent?.categoryId || "", features: agent?.features || "", hotQuestions: agent?.hotQuestions ? JSON.parse(agent.hotQuestions).join('\n') : '', quickQuestions: agent?.quickQuestions ? JSON.parse(agent.quickQuestions).join('\n') : '', difyApiUrl: agent?.difyApiUrl || "", difyApiKey: agent?.difyApiKey || "", status: agent?.status || "active", isFeatured: agent?.isFeatured ?? false, featuredOrder: agent?.featuredOrder ?? 0, }) const [loading, setLoading] = useState(false) const [error, setError] = useState("") const [success, setSuccess] = useState(false) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setLoading(true) setError("") try { const url = agent?.id ? `/api/admin/agents/${agent.id}` : "/api/admin/agents" const method = agent?.id ? "PUT" : "POST" const body = { ...formData, isFeatured: formData.isFeatured, featuredOrder: formData.featuredOrder, hotQuestions: JSON.stringify(formData.hotQuestions.split('\n').filter(q => q.trim())), quickQuestions: JSON.stringify(formData.quickQuestions.split('\n').filter(q => q.trim())), } const res = await fetch(url, { method, headers: { "Content-Type": "application/json" }, body: JSON.stringify(body), }) if (res.ok) { setSuccess(true) await new Promise(r => setTimeout(r, 1000)) router.push("/admin/agents") } else { const data = await res.json().catch(() => ({})) setError(data.error || "保存失败") } } catch (err) { setError("保存失败,请稍后重试") } finally { setLoading(false) } } return (
) }