"use client"; import Link from "next/link"; import { ArrowLeft, Trash2, Upload } from "lucide-react"; import { useEffect, useState } from "react"; import { apiFetch } from "@/lib/api"; interface DocumentItem { id?: string; doc_id?: string; title?: string; filename?: string; status?: string; } export default function KnowledgePage() { const [items, setItems] = useState([]); const [file, setFile] = useState(null); const [message, setMessage] = useState(""); const [isAdmin, setIsAdmin] = useState(false); async function load() { try { setItems(await apiFetch("/knowledge/documents")); } catch (error) { setMessage(error instanceof Error ? error.message : "知识库加载失败"); } } useEffect(() => { void apiFetch<{ user: { user_type?: string } }>("/auth/me").then(({ user }) => { const allowed = user.user_type === "ADMIN"; setIsAdmin(allowed); if (allowed) void load(); else setMessage("知识库管理仅对 ADMIN 开放"); }).catch(() => setMessage("请先登录管理员账号")); }, []); async function upload(path: "/knowledge/documents/preview" | "/knowledge/documents/confirm") { if (!file) return; const body = new FormData(); body.append("file", file); body.append("title", file.name); body.append("strategy", "default"); const token = localStorage.getItem("huaxia_token"); const response = await fetch(`/backend${path}`, { method: "POST", headers: token ? { Authorization: `Bearer ${token}` } : undefined, body }); const payload = await response.json(); setMessage(payload.message ?? (response.ok ? "操作成功" : "操作失败")); if (response.ok && path.endsWith("confirm")) await load(); } async function remove(id: string) { await apiFetch(`/knowledge/documents/${id}`, { method: "DELETE" }); await load(); } return
返回员工工作区

知识库管理

{!isAdmin ?

知识库管理仅对 ADMIN 开放。

: <>
setFile(event.target.files?.[0] ?? null)} />
{message &&

{message}

}
{items.map((item) => { const id = item.id ?? item.doc_id ?? ""; return
{item.title ?? item.filename ?? id} {item.status ?? "已入库"}
; })}{!items.length &&

暂无知识库文档

}
}
; }