Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions ui/src/api/admin/system/resource-management/knowledge/knowledge.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import { del, get, getExportFile, put } from '@/api/admin/core/request'
import type { ParamsPage, ResponsePage } from '@/api/admin/core/types'
import type { Dict, KnowledgeDetail, KnowledgeItem, KnowledgeGeneratePayload } from '@/api/types'

const prefix = '/system/resource/knowledge'

/** 获取系统资源管理不分页的知识库列表。 */
const getAllKnowledge = (query?: Dict<unknown>) => {
return get<KnowledgeItem[]>(prefix, query)
}
/** 获取系统资源管理知识库分页列表。 */
const getKnowledgePage = (page: ParamsPage, query?: Dict<unknown>) => {
return get<ResponsePage<KnowledgeItem>>(`${prefix}/${page.currentPage}/${page.pageSize}`, query)
}

/** 获取系统资源管理知识库详情。 */
const getKnowledgeDetail = (knowledgeId: string) => {
return get<KnowledgeDetail>(`${prefix}/${knowledgeId}`)
}

/** 删除工作空间知识库。 */
const deleteKnowledge = (knowledgeId: string) => {
return del<boolean>(`${prefix}/${knowledgeId}`)
}

/** 更新工作空间知识库信息。 */
const putKnowledge = (knowledgeId: string, payload: Partial<KnowledgeItem>) => {
return put<Partial<KnowledgeItem>, KnowledgeItem>(`${prefix}/${knowledgeId}`, payload)
}

/** 根据知识库中的分段生成关联问题。 */
const putGenerateKnowledgeQuestions = (knowledgeId: string, payload: KnowledgeGeneratePayload) => {
return put(`${prefix}/${knowledgeId}/generate_related`, payload)
}

/** 对知识库中的文档重新向量化。 */
const putReEmbeddingKnowledge = (knowledgeId: string) => {
return put<undefined, boolean>(`${prefix}/${knowledgeId}/embedding`)
}

/** 同步 Web 知识库。 */
const putSyncWebKnowledge = (knowledgeId: string, syncType: 'replace' | 'complete') => {
return put<undefined, boolean>(`${prefix}/${knowledgeId}/sync`, undefined, { sync_type: syncType })
}

/** 将知识库文档导出为 Excel。 */
const exportKnowledgeExcel = (knowledgeId: string, knowledgeName: string) => {
return getExportFile(`${knowledgeName}.xlsx`, `${prefix}/${knowledgeId}/export`)
}

/** 将知识库文档及图片导出为 ZIP。 */
const exportKnowledgeZip = (knowledgeId: string, knowledgeName: string) => {
return getExportFile(`${knowledgeName}.zip`, `${prefix}/${knowledgeId}/export_zip`)
}

/** 导出可用于导入创建的知识库压缩包。 */
const exportKnowledge = (knowledgeId: string, knowledgeName: string) => {
return getExportFile(`${knowledgeName}.zip`, `${prefix}/${knowledgeId}/export_knowledge`)
}

/** 获取知识库外部检索服务生成的 MCP 连接配置。 */
const getKnowledgeMcpConfig = (knowledgeId: string): Promise<string> =>
get<{ mcp_config: Record<string, unknown> }>(`${prefix}/${knowledgeId}/external_service`).then(({ mcp_config }) =>
JSON.stringify(mcp_config, null, 2),
)

/** 提交知识库分词索引任务。 */
const putKnowledgeKeywordIndex = (knowledgeId: string) => put<undefined, void>(`${prefix}/${knowledgeId}/tokenize`)

export default {
putKnowledgeKeywordIndex,
exportKnowledgeExcel,
exportKnowledgeZip,
exportKnowledge,
deleteKnowledge,
getAllKnowledge,
getKnowledgeDetail,
getKnowledgePage,
putKnowledge,
putReEmbeddingKnowledge,
putGenerateKnowledgeQuestions,
getKnowledgeMcpConfig,
putSyncWebKnowledge,
}
2 changes: 1 addition & 1 deletion ui/src/router/admin/system/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ export const systemRoutes: RouteRecordRaw = {
{
path: 'knowledge',
name: 'system-resource-knowledge',
component: () => import('@/views/system/index.vue'),
component: () => import('@/views/system/resource-management/knowledge/index.vue'),
meta: { title: '知识库', order: 20, permission: perm.knowledge.system.read, next: 'system-resource-tools' },
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@
import type KnowledgeApi from '@/api/admin/workspace/knowledge/knowledge'
import type { KnowledgeItem } from '@/api/types'
import { MsgConfirm, MsgSuccess } from '@/utils/message'
import type SystemResourceKnowledgeApi from '@/api/admin/system/resource-management/knowledge/knowledge'

defineOptions({ name: 'DeleteKnowledgeAction' })

const props = defineProps<{ api: typeof KnowledgeApi; knowledge: KnowledgeItem; label: string }>()
const props = defineProps<{ api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi; knowledge: KnowledgeItem; label: string }>()

const loading = defineModel<boolean>('loading', { default: false })

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,16 @@
import type KnowledgeApi from '@/api/admin/workspace/knowledge/knowledge'
import type { KnowledgeItem } from '@/api/types'
import { MsgSuccess } from '@/utils/message'
import type SystemResourceKnowledgeApi from '@/api/admin/system/resource-management/knowledge/knowledge'

defineOptions({ name: 'EmbeddingKnowledgeAction' })

const props = defineProps<{ api: typeof KnowledgeApi; knowledge: KnowledgeItem; label: string }>()
const props = defineProps<{
api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi
display?: 'menu' | 'button'
knowledge: KnowledgeItem
label: string
}>()
const loading = defineModel<boolean>('loading', { default: false })

/* 知识库向量化 */
Expand All @@ -25,8 +31,11 @@ function handleEmbedding() {

<template>
<!-- 执行向量化 -->
<MkDropdownItem :disabled="loading" @click.stop="handleEmbedding">
<template #icon><MkIcon name="icon_sheet-datareference_outlined" /></template>
<span>{{ label }}</span>
</MkDropdownItem>
<MkAction
:display="display"
:label="label"
icon="icon_sheet-datareference_outlined"
:disabled="loading"
@click="handleEmbedding"
/>
</template>
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<script setup lang="ts">
import type KnowledgeApi from '@/api/admin/workspace/knowledge/knowledge'
import type { KnowledgeItem } from '@/api/types'
import type SystemResourceKnowledgeApi from '@/api/admin/system/resource-management/knowledge/knowledge'

defineOptions({ name: 'ExportKnowledgeAction' })

const props = defineProps<{ api: typeof KnowledgeApi; knowledge: KnowledgeItem; label: string }>()
const props = defineProps<{ api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi; knowledge: KnowledgeItem; label: string }>()
const loading = defineModel<boolean>('loading', { default: false })

/* 知识库导出菜单 */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ import type KnowledgeApi from '@/api/admin/workspace/knowledge/knowledge'
import type { DocumentTaskState, KnowledgeItem, RelatedQuestionsConfig } from '@/api/types'
import GenerateQuestionsDialog from '@/components/business/generate-questions/GenerateQuestionsDialog.vue'
import { MsgSuccess } from '@/utils/message'
import type SystemResourceKnowledgeApi from '@/api/admin/system/resource-management/knowledge/knowledge'

defineOptions({ name: 'GenerateQuestionsAction' })
const props = defineProps<{ api: typeof KnowledgeApi; knowledge: KnowledgeItem; label: string }>()
const props = defineProps<{ api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi; knowledge: KnowledgeItem; label: string }>()
const loading = defineModel<boolean>('loading', { default: false })

/* 知识库生成问题配置:按需挂载并固定本次操作目标。 */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@
import type KnowledgeApi from '@/api/admin/workspace/knowledge/knowledge'
import type { KnowledgeItem } from '@/api/types'
import { MsgSuccess } from '@/utils/message'
import type SystemResourceKnowledgeApi from '@/api/admin/system/resource-management/knowledge/knowledge'

defineOptions({ name: 'KeywordIndexKnowledgeAction' })

const props = defineProps<{ api: typeof KnowledgeApi; knowledge: KnowledgeItem; label: string }>()
const props = defineProps<{ api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi; knowledge: KnowledgeItem; label: string }>()
const loading = defineModel<boolean>('loading', { default: false })

/* 知识库分词索引 */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
<script setup lang="ts">
import { nextTick, ref, useTemplateRef } from 'vue'
import type RelatedResourcesApi from '@/api/admin/workspace/related-resources'
import type SystemRelatedResourcesApi from '@/api/admin/system/resource-management/related-resources'
import type { KnowledgeItem } from '@/api/types'
import { RESOURCE_TYPE } from '@/api/enums'
import { MsgError } from '@/utils/message'
import RelatedResourcesDrawer from '@/components/business/related-resources-drawer/index.vue'

defineOptions({ name: 'RelatedResourcesKnowledgeAction' })
const props = defineProps<{
api: typeof RelatedResourcesApi
api: typeof RelatedResourcesApi | typeof SystemRelatedResourcesApi
knowledge: KnowledgeItem
label: string
}>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@ import { nextTick, ref, useTemplateRef } from 'vue'
import type KnowledgeApi from '@/api/admin/workspace/knowledge/knowledge'
import type { KnowledgeItem } from '@/api/types'
import KnowledgeMcpConfigDialog from './KnowledgeMcpConfigDialog.vue'
import type SystemResourceKnowledgeApi from '@/api/admin/system/resource-management/knowledge/knowledge'

defineOptions({ name: 'McpConfigKnowledgeAction' })

const props = defineProps<{ api: typeof KnowledgeApi; knowledge: KnowledgeItem; label: string }>()
const props = defineProps<{ api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi; knowledge: KnowledgeItem; label: string }>()
const loading = defineModel<boolean>('loading', { default: false })

/* 知识库 MCP 配置详情 */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<script setup lang="ts">
import { ref } from 'vue'
import type KnowledgeApi from '@/api/admin/workspace/knowledge/knowledge'
import type SystemResourceKnowledgeApi from '@/api/admin/system/resource-management/knowledge/knowledge'
import { MsgSuccess } from '@/utils/message'

defineOptions({ name: 'KnowledgeSyncDialog' })
const props = defineProps<{ api: typeof KnowledgeApi; knowledgeId: string }>()
const props = defineProps<{ api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi; knowledgeId: string }>()
const loading = defineModel<boolean>('loading', { default: false })
const emit = defineEmits<{ closed: [] }>()

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
<script setup lang="ts">
import { nextTick, ref, useTemplateRef } from 'vue'
import type KnowledgeApi from '@/api/admin/workspace/knowledge/knowledge'
import type SystemResourceKnowledgeApi from '@/api/admin/system/resource-management/knowledge/knowledge'
import type { KnowledgeItem } from '@/api/types'
import KnowledgeSyncDialog from './KnowledgeSyncDialog.vue'

defineOptions({ name: 'SyncKnowledgeAction' })
defineProps<{ api: typeof KnowledgeApi; knowledge: KnowledgeItem; label: string }>()
defineProps<{ api: typeof KnowledgeApi | typeof SystemResourceKnowledgeApi; knowledge: KnowledgeItem; label: string }>()
const loading = defineModel<boolean>('loading', { default: false })

/* 知识库同步弹窗按需挂载 */
Expand Down
Loading
Loading