"use client"; import { useState, useEffect } from "react"; import { adminAPI } from "@/lib/api"; import { format } from "date-fns"; import { Database, Trash2, RefreshCw } from "lucide-react"; interface AdminKB { id: number; name: string; description: string | null; owner_name: string; is_system: boolean; document_count: number; chunk_count: number; created_at: string; } export default function KnowledgeAdminPage() { const [kbs, setKbs] = useState([]); const [loading, setLoading] = useState(true); const [confirmDelete, setConfirmDelete] = useState(null); const load = () => { setLoading(true); adminAPI.listKnowledgeBases() .then(setKbs) .catch(console.error) .finally(() => setLoading(false)); }; useEffect(() => { load(); }, []); const handleDelete = async (kbId: number) => { try { await adminAPI.deleteKnowledgeBase(kbId); setConfirmDelete(null); setKbs((prev) => prev.filter((kb) => kb.id !== kbId)); } catch (e) { console.error(e); } }; if (loading) { return
加载中...
; } return (

知识库管理

共 {kbs.length} 个知识库
{kbs.length === 0 ? (
暂无知识库
) : (
{kbs.map((kb) => ( ))}
名称 描述 所有者 类型 文档数 向量数 创建时间 操作
{kb.name} {kb.description || "—"} {kb.owner_name} {kb.is_system ? "系统" : "用户"} {kb.document_count} {kb.chunk_count} {format(new Date(kb.created_at), "yyyy/M/d HH:mm")} {confirmDelete === kb.id ? (
) : ( )}
)}
); }