From 05609d63c2bfa6b4e512167dbe7e8e047a770cbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E8=B0=A2=E9=9B=A8?= <554737215@qq.com> Date: Fri, 28 Feb 2025 17:38:36 +0800 Subject: [PATCH] =?UTF-8?q?fetch:=20=E9=A1=B5=E9=9D=A2=E7=A7=BB=E6=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 知识库接口对接 --- src/api/new-ai/docs.ts | 14 +- src/api/new-ai/embedding.ts | 6 +- src/api/new-ai/knowledge.ts | 12 +- src/api/new-ai/slice.ts | 12 +- src/views/knowledge/components/create.vue | 103 ++++++++++++ .../dataset-form/components/data-cut.vue | 140 ++++++++-------- .../dataset-form/components/data-document.vue | 149 ++++++++++-------- .../components/data-embedding.vue | 109 ++++++++----- .../dataset-form/components/data-import.vue | 92 ++++++++++- .../dataset-form/components/edit-doc.vue | 117 ++++++++++++++ src/views/knowledge/dataset-form/index.vue | 47 ++++-- src/views/knowledge/dataset.vue | 28 ++-- 12 files changed, 595 insertions(+), 234 deletions(-) create mode 100644 src/views/knowledge/components/create.vue create mode 100644 src/views/knowledge/dataset-form/components/edit-doc.vue diff --git a/src/api/new-ai/docs.ts b/src/api/new-ai/docs.ts index d42e777..4f88eaf 100644 --- a/src/api/new-ai/docs.ts +++ b/src/api/new-ai/docs.ts @@ -26,36 +26,36 @@ export interface DocsVO { export const DocsApi = { // 获得文档分页 async getDocsPage(params: any) { - return await request.get({ url: '/aigc/docs/page', params }) + return await request.get({ url: '/chat/aigc/docs/page', params }) }, // 获得文档列表 async getDocsList(params: any) { - return await request.get({ url: '/aigc/docs/list', params }) + return await request.get({ url: '/chat/aigc/docs/list', params }) }, // 获得文档详情 async getDocsById(id: string) { - return await request.get({ url: `/aigc/docs/${id}` }) + return await request.get({ url: `/chat/aigc/docs/${id}` }) }, // 创建文档 async addDocs(data: any) { - return await request.post({ url: '/aigc/docs', data }) + return await request.post({ url: '/chat/aigc/docs', data }) }, // 更新文档 async updateDocs(data: any) { - return await request.put({ url: '/aigc/docs', data }) + return await request.put({ url: '/chat/aigc/docs', data }) }, // 删除文档 async deleteDocs(id: string) { - return await request.delete({ url: `/aigc/docs/${id}` }) + return await request.delete({ url: `/chat/aigc/docs/${id}` }) }, // 重新向量化 async reEmbedDocs(id: string) { - return await request.get({ url: `/aigc/embedding/re-embed/${id}` }) + return await request.get({ url: `/chat/aigc/embedding/re-embed/${id}` }) } } diff --git a/src/api/new-ai/embedding.ts b/src/api/new-ai/embedding.ts index 4a8326a..b0b064e 100644 --- a/src/api/new-ai/embedding.ts +++ b/src/api/new-ai/embedding.ts @@ -5,12 +5,12 @@ import { AxiosProgressEvent } from 'axios' export const EmbeddingApi = { // 文本嵌入 embeddingText: async (params: any) => { - return await request.post({ url: '/aigc/embedding/text', params }) + return await request.post({ url: '/chat/aigc/embedding/text', params }) }, // 嵌入搜索 embeddingSearch: async (data: any) => { - return await request.post({ url: '/aigc/embedding/search', data }) + return await request.post({ url: '/chat/aigc/embedding/search', data }) }, // 文档嵌入 @@ -20,7 +20,7 @@ export const EmbeddingApi = { onUploadProgress?: (progressEvent: AxiosProgressEvent) => void ) => { return await request.post({ - url: `/aigc/embedding/docs/${knowledgeId}`, + url: `/chat/aigc/embedding/docs/${knowledgeId}`, data, headers: { 'Content-Type': 'multipart/form-data' diff --git a/src/api/new-ai/knowledge.ts b/src/api/new-ai/knowledge.ts index 755f834..9a52ad2 100644 --- a/src/api/new-ai/knowledge.ts +++ b/src/api/new-ai/knowledge.ts @@ -10,31 +10,31 @@ export interface KnowledgeVO { export const KnowledgeApi = { // 获得知识库列表 getKnowledgeList: async (params: any) => { - return await request.get({ url: '/aigc/knowledge/list', params }) + return await request.get({ url: '/chat/aigc/knowledge/list', params }) }, // 获得知识库分页 getKnowledgePage: async (params: any) => { - return await request.get({ url: '/aigc/knowledge/page', params }) + return await request.get({ url: '/chat/aigc/knowledge/page', params }) }, // 获得知识库详情 getKnowledge: async (id: string) => { - return await request.get({ url: `/aigc/knowledge/${id}` }) + return await request.get({ url: `/chat/aigc/knowledge/${id}` }) }, // 创建知识库 createKnowledge: async (data: any) => { - return await request.post({ url: '/aigc/knowledge', data }) + return await request.post({ url: '/chat/aigc/knowledge', data }) }, // 更新知识库 updateKnowledge: async (data: any) => { - return await request.put({ url: '/aigc/knowledge', data }) + return await request.put({ url: '/chat/aigc/knowledge', data }) }, // 删除知识库 deleteKnowledge: async (id: string) => { - return await request.delete({ url: `/aigc/knowledge/${id}` }) + return await request.delete({ url: `/chat/aigc/knowledge/${id}` }) } } \ No newline at end of file diff --git a/src/api/new-ai/slice.ts b/src/api/new-ai/slice.ts index bd7947e..3680b99 100644 --- a/src/api/new-ai/slice.ts +++ b/src/api/new-ai/slice.ts @@ -26,31 +26,31 @@ export interface SliceVO { export const SliceApi = { // 获得切片分页 getSlicePage: async (params: any) => { - return await request.get({ url: '/aigc/docs/slice/page', params }) + return await request.get({ url: '/chat/aigc/docs/slice/page', params }) }, // 获得切片列表 getSliceList: async (params: any) => { - return await request.get({ url: '/aigc/docs/slice/list', params }) + return await request.get({ url: '/chat/aigc/docs/slice/list', params }) }, // 获得切片详情 getSlice: async (id: string) => { - return await request.get({ url: `/aigc/docs/slice/${id}` }) + return await request.get({ url: `/chat/aigc/docs/slice/${id}` }) }, // 创建切片 createSlice: async (data: any) => { - return await request.post({ url: '/aigc/docs/slice', data }) + return await request.post({ url: '/chat/aigc/docs/slice', data }) }, // 更新切片 updateSlice: async (data: any) => { - return await request.put({ url: '/aigc/docs/slice', data }) + return await request.put({ url: '/chat/aigc/docs/slice', data }) }, // 删除切片 deleteSlice: async (id: string) => { - return await request.delete({ url: `/aigc/docs/slice/${id}` }) + return await request.delete({ url: `/chat/aigc/docs/slice/${id}` }) } } diff --git a/src/views/knowledge/components/create.vue b/src/views/knowledge/components/create.vue new file mode 100644 index 0000000..d4afe82 --- /dev/null +++ b/src/views/knowledge/components/create.vue @@ -0,0 +1,103 @@ + + + + + 取消 + 确定 + + + + + \ No newline at end of file diff --git a/src/views/knowledge/dataset-form/components/data-cut.vue b/src/views/knowledge/dataset-form/components/data-cut.vue index c4c4957..41eb088 100644 --- a/src/views/knowledge/dataset-form/components/data-cut.vue +++ b/src/views/knowledge/dataset-form/components/data-cut.vue @@ -1,121 +1,117 @@ + + :pagination="pagination" + @register="register" + :search-table-height="true" + > - - 删除 - + - + diff --git a/src/views/knowledge/dataset-form/components/data-document.vue b/src/views/knowledge/dataset-form/components/data-document.vue index ca6f8a2..b3cd144 100644 --- a/src/views/knowledge/dataset-form/components/data-document.vue +++ b/src/views/knowledge/dataset-form/components/data-document.vue @@ -1,84 +1,93 @@ + + :pagination="pagination" + :search-table-height="true" + @register="register" + > - - 重新向量化 - - - 删除 - + + + + - + diff --git a/src/views/knowledge/dataset-form/components/data-embedding.vue b/src/views/knowledge/dataset-form/components/data-embedding.vue index 9dfc8f8..30a420d 100644 --- a/src/views/knowledge/dataset-form/components/data-embedding.vue +++ b/src/views/knowledge/dataset-form/components/data-embedding.vue @@ -1,48 +1,79 @@ - - - - - 向量搜索 + + + + 向量搜索 + + + + + + + + + + {{ item.docsName }} + + + + {{ item.text }} + + - - - - - - - - - 首席信息 - - - - + + - diff --git a/src/views/knowledge/dataset-form/components/data-import.vue b/src/views/knowledge/dataset-form/components/data-import.vue index 18b9fde..aa32fb2 100644 --- a/src/views/knowledge/dataset-form/components/data-import.vue +++ b/src/views/knowledge/dataset-form/components/data-import.vue @@ -1,11 +1,97 @@ + - + + + + + 拖拽文件到此处或 点击上传 + + + + 支持的文件格式:.txt、.md、.docx、.doc、.pdf + + + + - diff --git a/src/views/knowledge/dataset-form/components/edit-doc.vue b/src/views/knowledge/dataset-form/components/edit-doc.vue new file mode 100644 index 0000000..5440616 --- /dev/null +++ b/src/views/knowledge/dataset-form/components/edit-doc.vue @@ -0,0 +1,117 @@ + + + + + + + + + 取消 + 确定 + + + + + diff --git a/src/views/knowledge/dataset-form/index.vue b/src/views/knowledge/dataset-form/index.vue index 9bfb21b..fe63642 100644 --- a/src/views/knowledge/dataset-form/index.vue +++ b/src/views/knowledge/dataset-form/index.vue @@ -8,11 +8,24 @@ import DataDocument from "@/views/knowledge/dataset-form/components/data-documen import DataEmbedding from "@/views/knowledge/dataset-form/components/data-embedding.vue"; import {KnowledgeApi} from '@/api/new-ai/knowledge' import {ElMessage} from 'element-plus' - +interface Knowledge { + id: string + embedStore?: { + id: string + name: string + } + embedModel?: { + id: string + name: string + } +} const route = useRoute() const router = useRouter() const active = ref('1') -const knowledgeData = ref({}) +const loading = ref(false) +const knowledgeData = ref({ + id: '', +}) const tabs = ref([ { @@ -42,11 +55,13 @@ const tabs = ref([ ]) const loadKnowledge = async () => { - const id = route.query.id as string + const id = route.params.id as string + console.log(id) if (id) { try { - const res = await KnowledgeApi.getKnowledge(id) - knowledgeData.value = res.data + loading.value = true; + const res = await KnowledgeApi.getKnowledge(id).finally(() => loading.value = false) + knowledgeData.value = res } catch (error) { console.error('Failed to load knowledge:', error) ElMessage.error('加载知识库失败') @@ -60,14 +75,14 @@ onMounted(() => { - - + + 知识库列表 - - + + @@ -76,20 +91,22 @@ onMounted(() => { 本地测试 - + - + - + + 未关联 - + + 未关联 - + @@ -100,7 +117,7 @@ onMounted(() => { {{item.label}} - + diff --git a/src/views/knowledge/dataset.vue b/src/views/knowledge/dataset.vue index 5cf915a..6e2df4e 100644 --- a/src/views/knowledge/dataset.vue +++ b/src/views/knowledge/dataset.vue @@ -1,7 +1,7 @@ - + 创建知识库 @@ -11,7 +11,8 @@ - @@ -20,12 +21,12 @@ {{ item.name }} - {{ item.documentCount || 0 }} 文档 - {{ item.characterCount || 0 }} 千字符 - {{ item.appCount || 0 }} 关联应用 + {{ item.docsNum || 0 }} 文档 + {{ (Number(item.totalSize) / 1000000).toFixed(2) }} MB + {{ item.embedStore.name }} - {{ item.description || '暂无描述' }} + {{ item.des || '暂无描述' }} @@ -44,6 +45,7 @@ @current-change="handleCurrentChange" /> + @@ -52,21 +54,21 @@ import {ref, onMounted} from 'vue' import {Plus, Folder} from '@element-plus/icons-vue' import {useRouter} from 'vue-router' import {KnowledgeApi} from '@/api/new-ai/knowledge' - +import Create from './components/create.vue' const router = useRouter() const currentPage = ref(1) const pageSize = ref(10) const total = ref(0) const tableData = ref([]) - +const createRef = ref() const loadData = async () => { try { const res = await KnowledgeApi.getKnowledgePage({ pageNo: currentPage.value, pageSize: pageSize.value }) - tableData.value = res.data.list || [] - total.value = res.data.total || 0 + tableData.value = res.list || [] + total.value = res.total || 0 } catch (error) { console.error('Failed to load knowledge list:', error) } @@ -86,10 +88,10 @@ const toDataset = (id: string) => { router.push(`/ai/console/knowledge/${id}`) } -const toDatasetForm = () => { - router.push('/ai/console/knowledge/1') -} +const handleCreate = () => { + createRef.value.open() +} onMounted(() => { loadData() })
- {{ item.description || '暂无描述' }} + {{ item.des || '暂无描述' }}