feat: 简化知识库导入——只输入NodeToken,自动获取标题和SpaceID
- admin_knowledge.py: /knowledge/import 改为单条导入,自动获取 title+space_id - feishu_service.py: 新增 get_node_info() 公开方法 - App.vue: 简化 UI,只保留 NodeToken 输入框和导入按钮 - api.ts: 更新类型定义
This commit is contained in:
@@ -37,7 +37,7 @@ const chatDetailOpen = ref(false);
|
||||
const recordTab = ref("chats");
|
||||
const editingModelId = ref<number | null>(null);
|
||||
const editingKnowledgeId = ref<number | null>(null);
|
||||
const batchParentToken = ref("");
|
||||
const batchNodeToken = ref("");
|
||||
const batchImporting = ref(false);
|
||||
const agentDebugging = ref(false);
|
||||
const agentPreviewMessages = ref<{ role: "user" | "assistant" | "system"; content: string }[]>([
|
||||
@@ -592,16 +592,20 @@ function resetKnowledgeForm() {
|
||||
}
|
||||
|
||||
async function batchImportKnowledge() {
|
||||
const parentToken = batchParentToken.value.trim();
|
||||
if (!parentToken) {
|
||||
ElMessage.warning("请输入父节点 NodeToken");
|
||||
const token = batchNodeToken.value.trim();
|
||||
if (!token) {
|
||||
ElMessage.warning("请输入 NodeToken");
|
||||
return;
|
||||
}
|
||||
batchImporting.value = true;
|
||||
try {
|
||||
const result = await api.importKnowledgeFromSpace({ parent_node_token: parentToken });
|
||||
ElMessage.success(`导入完成:新增 ${result.imported} 个,跳过 ${result.skipped} 个`);
|
||||
batchParentToken.value = "";
|
||||
const result = await api.importKnowledgeFromSpace({ node_token: token });
|
||||
if (result.imported > 0) {
|
||||
ElMessage.success(`导入成功:${result.name}(id=${result.id})`);
|
||||
} else {
|
||||
ElMessage.info(`该节点已存在:${result.name}(id=${result.id})`);
|
||||
}
|
||||
batchNodeToken.value = "";
|
||||
await loadCurrentMenu();
|
||||
} catch (e: any) {
|
||||
ElMessage.error(e.message || "导入失败");
|
||||
@@ -1125,8 +1129,8 @@ function buildChatQuery() {
|
||||
|
||||
<el-divider />
|
||||
<div class="batch-import-row">
|
||||
<el-input v-model="batchParentToken" placeholder="输入父节点 NodeToken(如 wikcnXXX),递归导入所有子节点" style="max-width: 400px" />
|
||||
<el-button type="primary" @click="batchImportKnowledge" :loading="batchImporting">递归导入</el-button>
|
||||
<el-input v-model="batchNodeToken" placeholder="输入 NodeToken(如 wikcnXXX),自动获取标题与 SpaceID" style="max-width: 400px" />
|
||||
<el-button type="primary" @click="batchImportKnowledge" :loading="batchImporting">导入</el-button>
|
||||
</div>
|
||||
<el-table :data="knowledge" stripe>
|
||||
<el-table-column prop="id" label="ID" width="80" />
|
||||
|
||||
@@ -106,8 +106,8 @@ export const api = {
|
||||
updateKnowledge: (id: number, payload: Record<string, unknown>) =>
|
||||
request<KnowledgeItem>(`/admin/knowledge/${id}`, { method: "PUT", body: JSON.stringify(payload) }),
|
||||
deleteKnowledge: (id: number) => request<null>(`/admin/knowledge/${id}`, { method: "DELETE" }),
|
||||
importKnowledgeFromSpace: (body: Record<string, string>) =>
|
||||
request<{ imported: number; skipped: number; nodes: { name: string; nodeToken: string; status: string; id?: number }[] }>(
|
||||
importKnowledgeFromSpace: (body: { node_token: string }) =>
|
||||
request<{ imported: number; skipped: number; id: number; name: string }>(
|
||||
"/admin/knowledge/import",
|
||||
{ method: "POST", body: JSON.stringify(body) },
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user