@@ -690,7 +695,7 @@ export function WeKnoraSourceDrawer({
{loading && (
- 正在加载完整文档预览
+ 正在加载 Wiki 页面
)}
diff --git a/frontend-web/src/strategy-components/components/resource-management/llmwiki/WeKnoraWikiManagementPage.tsx b/frontend-web/src/strategy-components/components/resource-management/llmwiki/WeKnoraWikiManagementPage.tsx
index 743d6b2a..3eddeb72 100644
--- a/frontend-web/src/strategy-components/components/resource-management/llmwiki/WeKnoraWikiManagementPage.tsx
+++ b/frontend-web/src/strategy-components/components/resource-management/llmwiki/WeKnoraWikiManagementPage.tsx
@@ -1,4 +1,4 @@
-import { ArrowLeft, ChevronDown, ChevronRight, FilePlus2, FileText, Folder, Loader2, RefreshCw, Save, Search, Trash2 } from "lucide-react";
+import { ArrowLeft, ChevronDown, ChevronRight, Cpu, Download, FilePlus2, FileText, Folder, Loader2, RefreshCw, Save, Search, Trash2 } from "lucide-react";
import { type Dispatch, type SetStateAction, useEffect, useMemo, useState } from "react";
import { Navigate, useNavigate, useParams } from "react-router-dom";
import { toast } from "sonner";
@@ -13,6 +13,7 @@ import {
useLlmWikiActions,
useLlmWikiKnowledgeBase,
useLlmWikiRuntime,
+ useLlmWikiWikiIndexStatus,
useLlmWikiWikiPage,
useLlmWikiWikiPages,
} from "@/strategy-components/api/llmwiki";
@@ -298,6 +299,7 @@ export function WeKnoraWikiManagementPage() {
const canWrite = !!details.data?.can_write && !details.data?.is_conversation_deposit;
const pages = useLlmWikiWikiPages(noteId || null, 1, 500, "", !!noteId);
+ const indexStatus = useLlmWikiWikiIndexStatus(noteId || null, !!noteId);
const detail = useLlmWikiWikiPage(
noteId || null,
selectedSlug || null,
@@ -561,6 +563,34 @@ export function WeKnoraWikiManagementPage() {
}
};
+ const vectorize = async () => {
+ if (!canWrite) return;
+ try {
+ await actions.vectorizeWiki.mutateAsync({ id: noteId });
+ toast.success("已提交整库 Wiki 向量化任务");
+ await indexStatus.refetch();
+ } catch (error) {
+ toast.error(error instanceof Error ? error.message : "触发向量化失败");
+ }
+ };
+
+ const exportExcel = async () => {
+ try {
+ await actions.exportWikiExcel.mutateAsync({ id: noteId, name: title });
+ toast.success("Wiki 已全部导出为 Excel");
+ } catch (error) {
+ toast.error(error instanceof Error ? error.message : "导出 Wiki Excel 失败");
+ }
+ };
+
+ const vectorStatusText = !indexStatus.data?.local_index_enabled
+ ? "本地向量未启用,检索使用 Wiki 接口"
+ : indexStatus.data.fully_vectorized
+ ? `整库已向量化(${indexStatus.data.vector_count ?? 0} 个向量章节)`
+ : indexStatus.data.state === "running" || indexStatus.data.state === "rebuilding"
+ ? "整库向量化进行中,完成前检索使用 Wiki 接口"
+ : "整库尚未完成向量化,检索使用 Wiki 接口";
+
return (
@@ -571,9 +601,26 @@ export function WeKnoraWikiManagementPage() {
{title}
-
Wiki 文档新增、编辑、删除
+
Wiki 文档新增、编辑、删除 · {vectorStatusText}
+
+