Skip to content

Commit 589fee7

Browse files
committed
feat: resource management knowledge
1 parent c114502 commit 589fee7

12 files changed

Lines changed: 324 additions & 14 deletions

File tree

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
import { del, get, getExportFile, put } from '@/api/admin/core/request'
2+
import type { ParamsPage, ResponsePage } from '@/api/admin/core/types'
3+
import type { Dict, KnowledgeDetail, KnowledgeItem, KnowledgeGeneratePayload } from '@/api/types'
4+
5+
const prefix = '/system/resource/knowledge'
6+
7+
/** 获取系统资源管理不分页的知识库列表。 */
8+
const getAllKnowledge = (query?: Dict<unknown>) => {
9+
return get<KnowledgeItem[]>(prefix, query)
10+
}
11+
/** 获取系统资源管理知识库分页列表。 */
12+
const getKnowledgePage = (page: ParamsPage, query?: Dict<unknown>) => {
13+
return get<ResponsePage<KnowledgeItem>>(`${prefix}/${page.currentPage}/${page.pageSize}`, query)
14+
}
15+
16+
/** 获取系统资源管理知识库详情。 */
17+
const getKnowledgeDetail = (knowledgeId: string) => {
18+
return get<KnowledgeDetail>(`${prefix}/${knowledgeId}`)
19+
}
20+
21+
/** 删除工作空间知识库。 */
22+
const deleteKnowledge = (knowledgeId: string) => {
23+
return del<boolean>(`${prefix}/${knowledgeId}`)
24+
}
25+
26+
/** 更新工作空间知识库信息。 */
27+
const putKnowledge = (knowledgeId: string, payload: Partial<KnowledgeItem>) => {
28+
return put<Partial<KnowledgeItem>, KnowledgeItem>(`${prefix}/${knowledgeId}`, payload)
29+
}
30+
31+
/** 根据知识库中的分段生成关联问题。 */
32+
const putGenerateKnowledgeQuestions = (knowledgeId: string, payload: KnowledgeGeneratePayload) => {
33+
return put(`${prefix}/${knowledgeId}/generate_related`, payload)
34+
}
35+
36+
/** 对知识库中的文档重新向量化。 */
37+
const putReEmbeddingKnowledge = (knowledgeId: string) => {
38+
return put<undefined, boolean>(`${prefix}/${knowledgeId}/embedding`)
39+
}
40+
41+
/** 同步 Web 知识库。 */
42+
const putSyncWebKnowledge = (knowledgeId: string, syncType: 'replace' | 'complete') => {
43+
return put<undefined, boolean>(`${prefix}/${knowledgeId}/sync`, undefined, { sync_type: syncType })
44+
}
45+
46+
/** 将知识库文档导出为 Excel。 */
47+
const exportKnowledgeExcel = (knowledgeId: string, knowledgeName: string) => {
48+
return getExportFile(`${knowledgeName}.xlsx`, `${prefix}/${knowledgeId}/export`)
49+
}
50+
51+
/** 将知识库文档及图片导出为 ZIP。 */
52+
const exportKnowledgeZip = (knowledgeId: string, knowledgeName: string) => {
53+
return getExportFile(`${knowledgeName}.zip`, `${prefix}/${knowledgeId}/export_zip`)
54+
}
55+
56+
/** 导出可用于导入创建的知识库压缩包。 */
57+
const exportKnowledge = (knowledgeId: string, knowledgeName: string) => {
58+
return getExportFile(`${knowledgeName}.zip`, `${prefix}/${knowledgeId}/export_knowledge`)
59+
}
60+
61+
/** 获取知识库外部检索服务生成的 MCP 连接配置。 */
62+
const getKnowledgeMcpConfig = (knowledgeId: string): Promise<string> =>
63+
get<{ mcp_config: Record<string, unknown> }>(`${prefix}/${knowledgeId}/external_service`).then(({ mcp_config }) =>
64+
JSON.stringify(mcp_config, null, 2),
65+
)
66+
67+
/** 提交知识库分词索引任务。 */
68+
const putKnowledgeKeywordIndex = (knowledgeId: string) => put<undefined, void>(`${prefix}/${knowledgeId}/tokenize`)
69+
70+
export default {
71+
putKnowledgeKeywordIndex,
72+
exportKnowledgeExcel,
73+
exportKnowledgeZip,
74+
exportKnowledge,
75+
deleteKnowledge,
76+
getAllKnowledge,
77+
getKnowledgeDetail,
78+
getKnowledgePage,
79+
putKnowledge,
80+
putReEmbeddingKnowledge,
81+
putGenerateKnowledgeQuestions,
82+
getKnowledgeMcpConfig,
83+
putSyncWebKnowledge,
84+
}

‎ui/src/router/admin/system/index.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ export const systemRoutes: RouteRecordRaw = {
163163
{
164164
path: 'knowledge',
165165
name: 'system-resource-knowledge',
166-
component: () => import('@/views/system/index.vue'),
166+
component: () => import('@/views/system/resource-management/knowledge/index.vue'),
167167
meta: { title: '知识库', order: 20, permission: perm.knowledge.system.read, next: 'system-resource-tools' },
168168
},
169169
{

‎ui/src/views/knowledge/knowledge-card/action-dropdown/DeleteKnowledgeAction.vue‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
import type KnowledgeApi from '@/api/admin/workspace/knowledge/knowledge'
33
import type { KnowledgeItem } from '@/api/types'
44
import { MsgConfirm, MsgSuccess } from '@/utils/message'
5+
import type SystemResourceKnowledgeApi from '@/api/admin/system/resource-management/knowledge/knowledge'
56
67
defineOptions({ name: 'DeleteKnowledgeAction' })
78
8-
const props = defineProps<{ api: typeof KnowledgeApi; knowledge: KnowledgeItem; label: string }>()
9+
const props = defineProps<{ api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi; knowledge: KnowledgeItem; label: string }>()
910
1011
const loading = defineModel<boolean>('loading', { default: false })
1112

‎ui/src/views/knowledge/knowledge-card/action-dropdown/EmbeddingKnowledgeAction.vue‎

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,16 @@
22
import type KnowledgeApi from '@/api/admin/workspace/knowledge/knowledge'
33
import type { KnowledgeItem } from '@/api/types'
44
import { MsgSuccess } from '@/utils/message'
5+
import type SystemResourceKnowledgeApi from '@/api/admin/system/resource-management/knowledge/knowledge'
56
67
defineOptions({ name: 'EmbeddingKnowledgeAction' })
78
8-
const props = defineProps<{ api: typeof KnowledgeApi; knowledge: KnowledgeItem; label: string }>()
9+
const props = defineProps<{
10+
api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi
11+
display?: 'menu' | 'button'
12+
knowledge: KnowledgeItem
13+
label: string
14+
}>()
915
const loading = defineModel<boolean>('loading', { default: false })
1016
1117
/* 知识库向量化 */
@@ -25,8 +31,11 @@ function handleEmbedding() {
2531

2632
<template>
2733
<!-- 执行向量化 -->
28-
<MkDropdownItem :disabled="loading" @click.stop="handleEmbedding">
29-
<template #icon><MkIcon name="icon_sheet-datareference_outlined" /></template>
30-
<span>{{ label }}</span>
31-
</MkDropdownItem>
34+
<MkAction
35+
:display="display"
36+
:label="label"
37+
icon="icon_sheet-datareference_outlined"
38+
:disabled="loading"
39+
@click="handleEmbedding"
40+
/>
3241
</template>

‎ui/src/views/knowledge/knowledge-card/action-dropdown/ExportKnowledgeAction.vue‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
<script setup lang="ts">
22
import type KnowledgeApi from '@/api/admin/workspace/knowledge/knowledge'
33
import type { KnowledgeItem } from '@/api/types'
4+
import type SystemResourceKnowledgeApi from '@/api/admin/system/resource-management/knowledge/knowledge'
45
56
defineOptions({ name: 'ExportKnowledgeAction' })
67
7-
const props = defineProps<{ api: typeof KnowledgeApi; knowledge: KnowledgeItem; label: string }>()
8+
const props = defineProps<{ api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi; knowledge: KnowledgeItem; label: string }>()
89
const loading = defineModel<boolean>('loading', { default: false })
910
1011
/* 知识库导出菜单 */

‎ui/src/views/knowledge/knowledge-card/action-dropdown/GenerateQuestionsAction.vue‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ import type KnowledgeApi from '@/api/admin/workspace/knowledge/knowledge'
44
import type { DocumentTaskState, KnowledgeItem, RelatedQuestionsConfig } from '@/api/types'
55
import GenerateQuestionsDialog from '@/components/business/generate-questions/GenerateQuestionsDialog.vue'
66
import { MsgSuccess } from '@/utils/message'
7+
import type SystemResourceKnowledgeApi from '@/api/admin/system/resource-management/knowledge/knowledge'
78
89
defineOptions({ name: 'GenerateQuestionsAction' })
9-
const props = defineProps<{ api: typeof KnowledgeApi; knowledge: KnowledgeItem; label: string }>()
10+
const props = defineProps<{ api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi; knowledge: KnowledgeItem; label: string }>()
1011
const loading = defineModel<boolean>('loading', { default: false })
1112
1213
/* 知识库生成问题配置:按需挂载并固定本次操作目标。 */

‎ui/src/views/knowledge/knowledge-card/action-dropdown/KeywordIndexKnowledgeAction.vue‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
import type KnowledgeApi from '@/api/admin/workspace/knowledge/knowledge'
33
import type { KnowledgeItem } from '@/api/types'
44
import { MsgSuccess } from '@/utils/message'
5+
import type SystemResourceKnowledgeApi from '@/api/admin/system/resource-management/knowledge/knowledge'
56
67
defineOptions({ name: 'KeywordIndexKnowledgeAction' })
78
8-
const props = defineProps<{ api: typeof KnowledgeApi; knowledge: KnowledgeItem; label: string }>()
9+
const props = defineProps<{ api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi; knowledge: KnowledgeItem; label: string }>()
910
const loading = defineModel<boolean>('loading', { default: false })
1011
1112
/* 知识库分词索引 */

‎ui/src/views/knowledge/knowledge-card/action-dropdown/RelatedResourcesKnowledgeAction.vue‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
<script setup lang="ts">
22
import { nextTick, ref, useTemplateRef } from 'vue'
33
import type RelatedResourcesApi from '@/api/admin/workspace/related-resources'
4+
import type SystemRelatedResourcesApi from '@/api/admin/system/resource-management/related-resources'
45
import type { KnowledgeItem } from '@/api/types'
56
import { RESOURCE_TYPE } from '@/api/enums'
67
import { MsgError } from '@/utils/message'
78
import RelatedResourcesDrawer from '@/components/business/related-resources-drawer/index.vue'
89
910
defineOptions({ name: 'RelatedResourcesKnowledgeAction' })
1011
const props = defineProps<{
11-
api: typeof RelatedResourcesApi
12+
api: typeof RelatedResourcesApi | typeof SystemRelatedResourcesApi
1213
knowledge: KnowledgeItem
1314
label: string
1415
}>()

‎ui/src/views/knowledge/knowledge-card/action-dropdown/mcp-config-action/McpConfigKnowledgeAction.vue‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ import { nextTick, ref, useTemplateRef } from 'vue'
33
import type KnowledgeApi from '@/api/admin/workspace/knowledge/knowledge'
44
import type { KnowledgeItem } from '@/api/types'
55
import KnowledgeMcpConfigDialog from './KnowledgeMcpConfigDialog.vue'
6+
import type SystemResourceKnowledgeApi from '@/api/admin/system/resource-management/knowledge/knowledge'
67
78
defineOptions({ name: 'McpConfigKnowledgeAction' })
89
9-
const props = defineProps<{ api: typeof KnowledgeApi; knowledge: KnowledgeItem; label: string }>()
10+
const props = defineProps<{ api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi; knowledge: KnowledgeItem; label: string }>()
1011
const loading = defineModel<boolean>('loading', { default: false })
1112
1213
/* 知识库 MCP 配置详情 */

‎ui/src/views/knowledge/knowledge-card/action-dropdown/sync-knowledge-action/KnowledgeSyncDialog.vue‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
<script setup lang="ts">
22
import { ref } from 'vue'
33
import type KnowledgeApi from '@/api/admin/workspace/knowledge/knowledge'
4+
import type SystemResourceKnowledgeApi from '@/api/admin/system/resource-management/knowledge/knowledge'
45
import { MsgSuccess } from '@/utils/message'
56
67
defineOptions({ name: 'KnowledgeSyncDialog' })
7-
const props = defineProps<{ api: typeof KnowledgeApi; knowledgeId: string }>()
8+
const props = defineProps<{ api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi; knowledgeId: string }>()
89
const loading = defineModel<boolean>('loading', { default: false })
910
const emit = defineEmits<{ closed: [] }>()
1011

0 commit comments

Comments
 (0)