'use client'; import { useEffect, useState } from 'react'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, } from '@/components/ui/dialog'; import { Sidebar, SidebarContent, SidebarGroup, SidebarGroupContent, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarProvider, } from '@/components/ui/sidebar'; import { Button } from '@/components/ui/button'; import { useTranslation } from 'react-i18next'; import { httpClient } from '@/app/infra/http/HttpClient'; // import { KnowledgeBase } from '@/app/infra/entities/api'; import KBForm from '@/app/home/knowledge/components/kb-form/KBForm'; import KBDoc from '@/app/home/knowledge/components/kb-docs/KBDoc'; import KBRetrieve from '@/app/home/knowledge/components/kb-retrieve/KBRetrieve'; interface KBDetailDialogProps { open: boolean; onOpenChange: (open: boolean) => void; kbId?: string; onFormCancel: () => void; onKbDeleted: () => void; onNewKbCreated: (kbId: string) => void; onKbUpdated: (kbId: string) => void; } export default function KBDetailDialog({ open, onOpenChange, kbId: propKbId, onFormCancel, onKbDeleted, onNewKbCreated, onKbUpdated, }: KBDetailDialogProps) { const { t } = useTranslation(); const [kbId, setKbId] = useState(propKbId); const [activeMenu, setActiveMenu] = useState('metadata'); const [showDeleteConfirm, setShowDeleteConfirm] = useState(false); useEffect(() => { setKbId(propKbId); setActiveMenu('metadata'); }, [propKbId, open]); const menu = [ { key: 'metadata', label: t('knowledge.metadata'), icon: ( ), }, { key: 'documents', label: t('knowledge.documents'), icon: ( ), }, { key: 'retrieve', label: t('knowledge.retrieve'), icon: ( ), }, ]; const confirmDelete = () => { httpClient.deleteKnowledgeBase(kbId ?? '').then(() => { onKbDeleted(); }); setShowDeleteConfirm(false); }; if (!kbId) { // new kb return (
{t('knowledge.createKnowledgeBase')}
{activeMenu === 'metadata' && ( )} {activeMenu === 'documents' &&
documents
}
{activeMenu === 'metadata' && (
)}
); } return ( <> {menu.map((item) => ( setActiveMenu(item.key)} > {item.icon} {item.label} ))}
{activeMenu === 'metadata' ? t('knowledge.editKnowledgeBase') : activeMenu === 'documents' ? t('knowledge.editDocument') : t('knowledge.retrieveTest')}
{activeMenu === 'metadata' && ( )} {activeMenu === 'documents' && } {activeMenu === 'retrieve' && }
{activeMenu === 'metadata' && (
)}
{/* 删除确认对话框 */} {t('common.confirmDelete')}
{t('knowledge.deleteKnowledgeBaseConfirmation')}
); }