"use client"; import React, { useState, useEffect } from "react"; interface AgentConfig { name: string; description: string; greeting: string; personality: string; } interface AgentConfigManagerProps { onConfigSaved?: (config: AgentConfig) => void; } export function AgentConfigManager({ onConfigSaved }: AgentConfigManagerProps) { const [config, setConfig] = useState({ name: "", description: "", greeting: "", personality: "", }); const [loading, setLoading] = useState(false); const [saving, setSaving] = useState(false); const [message, setMessage] = useState(""); // 현재 설정 로드 const loadConfig = async () => { try { setLoading(true); const response = await fetch("/api/rag/agent-config"); const data = await response.json(); if (data.success) { setConfig(data.config); } else { console.error("설정 로드 실패:", data.error); setMessage("설정을 불러오는데 실패했습니다."); } } catch (error) { console.error("설정 로드 중 오류:", error); setMessage("네트워크 오류가 발생했습니다."); } finally { setLoading(false); } }; // 설정 저장 const saveConfig = async () => { if (!config.name.trim()) { setMessage("에이전트 이름은 필수입니다."); return; } try { setSaving(true); setMessage(""); const response = await fetch("/api/rag/agent-config", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(config), }); const data = await response.json(); if (data.success) { setConfig(data.config); setMessage("설정이 성공적으로 저장되었습니다!"); onConfigSaved?.(data.config); // 3초 후 메시지 제거 setTimeout(() => setMessage(""), 3000); } else { setMessage("설정 저장에 실패했습니다: " + data.error); } } catch (error) { console.error("설정 저장 중 오류:", error); setMessage("네트워크 오류가 발생했습니다."); } finally { setSaving(false); } }; // 설정 초기화 const resetConfig = async () => { if (!confirm("설정을 기본값으로 초기화하시겠습니까?")) { return; } try { setSaving(true); setMessage(""); const response = await fetch("/api/rag/agent-config", { method: "DELETE", }); const data = await response.json(); if (data.success) { setConfig(data.config); setMessage("설정이 기본값으로 초기화되었습니다!"); onConfigSaved?.(data.config); // 3초 후 메시지 제거 setTimeout(() => setMessage(""), 3000); } else { setMessage("설정 초기화에 실패했습니다: " + data.error); } } catch (error) { console.error("설정 초기화 중 오류:", error); setMessage("네트워크 오류가 발생했습니다."); } finally { setSaving(false); } }; // 컴포넌트 마운트 시 설정 로드 useEffect(() => { loadConfig(); }, []); return (
{/* 메시지 표시 */} {message && (
{message}
)} {/* 에이전트 설정 폼 */}

채팅 에이전트 설정

{/* 에이전트 이름 */}
setConfig({ ...config, name: e.target.value })} placeholder="예: RAG 어시스턴트" className="w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-transparent" />

채팅 화면에 표시될 에이전트의 이름입니다.

{/* 에이전트 설명 */}
setConfig({ ...config, description: e.target.value }) } placeholder="예: 문서 기반 질문 답변 AI 어시스턴트" className="w-full px-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-transparent" />

에이전트에 대한 간단한 설명입니다.

{/* 인사말 */}