From fdedcc1ee8eb784368b4a269fbd96348fc0cf97b Mon Sep 17 00:00:00 2001 From: dataeaseShu Date: Wed, 18 Jun 2025 17:22:13 +0800 Subject: [PATCH] feat(resource): manage --- .../api/resource-management/authorization.ts | 63 + ui/src/api/resource-management/document.ts | 499 ++++++++ ui/src/api/resource-management/knowledge.ts | 305 +++++ ui/src/api/resource-management/model.ts | 133 +++ ui/src/api/resource-management/paragraph.ts | 268 +++++ ui/src/api/resource-management/problem.ts | 121 ++ ui/src/api/resource-management/provider.ts | 86 ++ ui/src/api/resource-management/tool.ts | 137 +++ ui/src/api/resource-management/workspace.ts | 78 ++ ui/src/components/app-icon/icons/knowledge.ts | 48 + ui/src/components/folder-tree/index.vue | 8 +- .../index.vue | 204 ++++ ui/src/layout/layout-template/MainLayout.vue | 2 +- ui/src/locales/lang/zh-CN/views/system.ts | 1 + .../modules/2knowledge-resource-management.ts | 20 + .../modules/2knowledge-shared-system.ts | 2 +- .../modules/document-resource-management.ts | 62 + .../modules/paragraph-resource-management.ts | 17 + ui/src/router/modules/system.ts | 36 + .../modules-resource-management/common.ts | 52 + .../modules-resource-management/document.ts | 35 + .../modules-resource-management/folder.ts | 23 + .../modules-resource-management/index.ts | 23 + .../modules-resource-management/knowledge.ts | 76 ++ .../modules-resource-management/login.ts | 51 + .../modules-resource-management/model.ts | 35 + .../modules-resource-management/paragraph.ts | 91 ++ .../modules-resource-management/problem.ts | 41 + .../modules-resource-management/prompt.ts | 37 + .../document/UploadDocument.vue | 215 ++++ .../component/EmbeddingContentDialog.vue | 48 + .../component/ImportDocumentDialog.vue | 233 ++++ .../component/SelectKnowledgeDialog.vue | 119 ++ .../document/component/Status.vue | 87 ++ .../document/component/StatusTable.vue | 109 ++ .../resource-management/document/index.vue | 1011 +++++++++++++++++ .../document/upload/ResultSuccess.vue | 98 ++ .../document/upload/SetRules.vue | 283 +++++ .../document/upload/UploadComponent.vue | 327 ++++++ .../resource-management/hit-test/index.vue | 434 +++++++ .../knowledge/ImportDocumentKnowledge.vue | 290 +++++ .../knowledge/KnowledgeSetting.vue | 285 +++++ .../knowledge/component/BaseForm.vue | 147 +++ .../component/EditParagraphDialog.vue | 135 +++ .../knowledge/component/ParagraphList.vue | 109 ++ .../knowledge/component/ParagraphPreview.vue | 70 ++ .../knowledge/component/SyncWebDialog.vue | 87 ++ .../CreateKnowledgeDialog.vue | 70 ++ .../CreateLarkKnowledgeDialog.vue | 161 +++ .../CreateWebKnowledgeDialog.vue | 120 ++ .../resource-management/knowledge/index.vue | 473 ++++++++ .../paragraph/component/ParagraphCard.vue | 193 ++++ .../paragraph/component/ParagraphDialog.vue | 152 +++ .../paragraph/component/ParagraphForm.vue | 174 +++ .../paragraph/component/ProblemComponent.vue | 200 ++++ .../component/SelectDocumentDialog.vue | 158 +++ .../resource-management/paragraph/index.vue | 377 ++++++ .../problem/component/CreateProblemDialog.vue | 92 ++ .../problem/component/DetailProblemDrawer.vue | 206 ++++ .../problem/component/RelateProblemDialog.vue | 330 ++++++ .../resource-management/problem/index.vue | 388 +++++++ .../tool/ToolDebugDrawer.vue | 184 +++ .../tool/ToolFormDrawer.vue | 449 ++++++++ .../component/AddInternalFunctionDialog.vue | 88 ++ .../tool/component/EditAvatarDialog.vue | 120 ++ .../tool/component/FieldFormDialog.vue | 116 ++ .../tool/component/InitParamDrawer.vue | 87 ++ .../tool/component/InternalDescDrawer.vue | 99 ++ .../tool/component/UserFieldFormDialog.vue | 169 +++ .../views/resource-management/tool/index.vue | 533 +++++++++ .../knowledge-shared/SharedWorkspace.vue | 3 - .../CreateWebKnowledgeDialog.vue | 3 - .../views/shared/knowledge-shared/index.vue | 6 - .../shared/model-shared/SharedWorkspace.vue | 2 +- .../model-shared/component/ModelCard.vue | 81 +- .../component/ModelCardSharedWorkspace.vue | 227 ++++ 76 files changed, 11876 insertions(+), 26 deletions(-) create mode 100644 ui/src/api/resource-management/authorization.ts create mode 100644 ui/src/api/resource-management/document.ts create mode 100644 ui/src/api/resource-management/knowledge.ts create mode 100644 ui/src/api/resource-management/model.ts create mode 100644 ui/src/api/resource-management/paragraph.ts create mode 100644 ui/src/api/resource-management/problem.ts create mode 100644 ui/src/api/resource-management/provider.ts create mode 100644 ui/src/api/resource-management/tool.ts create mode 100644 ui/src/api/resource-management/workspace.ts create mode 100644 ui/src/components/generate-related-resource-dialog/index.vue create mode 100644 ui/src/router/modules/2knowledge-resource-management.ts create mode 100644 ui/src/router/modules/document-resource-management.ts create mode 100644 ui/src/router/modules/paragraph-resource-management.ts create mode 100644 ui/src/stores/modules-resource-management/common.ts create mode 100644 ui/src/stores/modules-resource-management/document.ts create mode 100644 ui/src/stores/modules-resource-management/folder.ts create mode 100644 ui/src/stores/modules-resource-management/index.ts create mode 100644 ui/src/stores/modules-resource-management/knowledge.ts create mode 100644 ui/src/stores/modules-resource-management/login.ts create mode 100644 ui/src/stores/modules-resource-management/model.ts create mode 100644 ui/src/stores/modules-resource-management/paragraph.ts create mode 100644 ui/src/stores/modules-resource-management/problem.ts create mode 100644 ui/src/stores/modules-resource-management/prompt.ts create mode 100644 ui/src/views/resource-management/document/UploadDocument.vue create mode 100644 ui/src/views/resource-management/document/component/EmbeddingContentDialog.vue create mode 100644 ui/src/views/resource-management/document/component/ImportDocumentDialog.vue create mode 100644 ui/src/views/resource-management/document/component/SelectKnowledgeDialog.vue create mode 100644 ui/src/views/resource-management/document/component/Status.vue create mode 100644 ui/src/views/resource-management/document/component/StatusTable.vue create mode 100644 ui/src/views/resource-management/document/index.vue create mode 100644 ui/src/views/resource-management/document/upload/ResultSuccess.vue create mode 100644 ui/src/views/resource-management/document/upload/SetRules.vue create mode 100644 ui/src/views/resource-management/document/upload/UploadComponent.vue create mode 100644 ui/src/views/resource-management/hit-test/index.vue create mode 100644 ui/src/views/resource-management/knowledge/ImportDocumentKnowledge.vue create mode 100644 ui/src/views/resource-management/knowledge/KnowledgeSetting.vue create mode 100644 ui/src/views/resource-management/knowledge/component/BaseForm.vue create mode 100644 ui/src/views/resource-management/knowledge/component/EditParagraphDialog.vue create mode 100644 ui/src/views/resource-management/knowledge/component/ParagraphList.vue create mode 100644 ui/src/views/resource-management/knowledge/component/ParagraphPreview.vue create mode 100644 ui/src/views/resource-management/knowledge/component/SyncWebDialog.vue create mode 100644 ui/src/views/resource-management/knowledge/create-component/CreateKnowledgeDialog.vue create mode 100644 ui/src/views/resource-management/knowledge/create-component/CreateLarkKnowledgeDialog.vue create mode 100644 ui/src/views/resource-management/knowledge/create-component/CreateWebKnowledgeDialog.vue create mode 100644 ui/src/views/resource-management/knowledge/index.vue create mode 100644 ui/src/views/resource-management/paragraph/component/ParagraphCard.vue create mode 100644 ui/src/views/resource-management/paragraph/component/ParagraphDialog.vue create mode 100644 ui/src/views/resource-management/paragraph/component/ParagraphForm.vue create mode 100644 ui/src/views/resource-management/paragraph/component/ProblemComponent.vue create mode 100644 ui/src/views/resource-management/paragraph/component/SelectDocumentDialog.vue create mode 100644 ui/src/views/resource-management/paragraph/index.vue create mode 100644 ui/src/views/resource-management/problem/component/CreateProblemDialog.vue create mode 100644 ui/src/views/resource-management/problem/component/DetailProblemDrawer.vue create mode 100644 ui/src/views/resource-management/problem/component/RelateProblemDialog.vue create mode 100644 ui/src/views/resource-management/problem/index.vue create mode 100644 ui/src/views/resource-management/tool/ToolDebugDrawer.vue create mode 100644 ui/src/views/resource-management/tool/ToolFormDrawer.vue create mode 100644 ui/src/views/resource-management/tool/component/AddInternalFunctionDialog.vue create mode 100644 ui/src/views/resource-management/tool/component/EditAvatarDialog.vue create mode 100644 ui/src/views/resource-management/tool/component/FieldFormDialog.vue create mode 100644 ui/src/views/resource-management/tool/component/InitParamDrawer.vue create mode 100644 ui/src/views/resource-management/tool/component/InternalDescDrawer.vue create mode 100644 ui/src/views/resource-management/tool/component/UserFieldFormDialog.vue create mode 100644 ui/src/views/resource-management/tool/index.vue create mode 100644 ui/src/views/shared/model-shared/component/ModelCardSharedWorkspace.vue diff --git a/ui/src/api/resource-management/authorization.ts b/ui/src/api/resource-management/authorization.ts new file mode 100644 index 000000000..e6b5ca297 --- /dev/null +++ b/ui/src/api/resource-management/authorization.ts @@ -0,0 +1,63 @@ +import { Result } from '@/request/Result' +import { get, post, del, put, exportFile, exportExcel } from '@/request/index' +import { type Ref } from 'vue' +import type { pageRequest } from '@/api/type/common' +import type { knowledgeData } from '@/api/type/knowledge' + +const prefix = '/system/resource' + +const getSharedAuthorizationKnowledge: ( + knowledge_id: string, + loading?: Ref, +) => Promise>> = (knowledge_id, loading) => { + return get(`${prefix}/knowledge/${knowledge_id}/authorization`, {}, loading) +} + +const postSharedAuthorizationKnowledge: ( + knowledge_id: string, + param?: any, + loading?: Ref, +) => Promise>> = (knowledge_id, param, loading) => { + return post(`${prefix}/knowledge/${knowledge_id}/authorization`, param, loading) +} + +const getSharedAuthorizationTool: ( + knowledge_id: string, + loading?: Ref, +) => Promise>> = (knowledge_id, loading) => { + return get(`${prefix}/tool/${knowledge_id}/authorization`, {}, loading) +} + +const postSharedAuthorizationTool: ( + knowledge_id: string, + param?: any, + loading?: Ref, +) => Promise>> = (knowledge_id, param, loading) => { + return post(`${prefix}/tool/${knowledge_id}/authorization`, param, loading) +} + +const getSharedAuthorizationModel: ( + knowledge_id: string, + loading?: Ref, +) => Promise>> = (knowledge_id, loading) => { + return get(`${prefix}/model/${knowledge_id}/authorization`, {}, loading) +} + +const postSharedAuthorizationModel: ( + knowledge_id: string, + param?: any, + loading?: Ref, +) => Promise>> = (knowledge_id, param, loading) => { + return post(`${prefix}/model/${knowledge_id}/authorization`, param, loading) +} + +export default { + getSharedAuthorizationKnowledge, + postSharedAuthorizationKnowledge, + getSharedAuthorizationTool, + postSharedAuthorizationTool, + getSharedAuthorizationModel, + postSharedAuthorizationModel, +} as { + [key: string]: any +} diff --git a/ui/src/api/resource-management/document.ts b/ui/src/api/resource-management/document.ts new file mode 100644 index 000000000..9465fae1b --- /dev/null +++ b/ui/src/api/resource-management/document.ts @@ -0,0 +1,499 @@ +import { Result } from '@/request/Result' +import { get, post, del, put, exportExcel, exportFile } from '@/request/index' +import type { Ref } from 'vue' +import type { KeyValue } from '@/api/type/common' +import type { pageRequest } from '@/api/type/common' + +const prefix = '/system/resource/knowledge' + +/** + * 文档分页列表 + * @param 参数 knowledge_id, + * param { + " name": "string", + } + */ + +const getDocument: ( + knowledge_id: string, + page: pageRequest, + param: any, + loading?: Ref, +) => Promise> = (knowledge_id, page, param, loading) => { + return get( + `${prefix}/${knowledge_id}/document/${page.current_page}/${page.page_size}`, + param, + loading, + ) +} + +/** + * 文档详情 + * @param 参数 knowledge_id + */ +const getDocumentDetail: (knowledge_id: string, document_id: string) => Promise> = ( + knowledge_id, + document_id, +) => { + return get(`${prefix}/${knowledge_id}/document/${document_id}`) +} + +/** + * 修改文档 + * @param 参数 + * knowledge_id, document_id, + * { + "name": "string", + "is_active": true, + "meta": {} + } + */ +const putDocument: ( + knowledge_id: string, + document_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, document_id, data: any, loading) => { + return put(`${prefix}/${knowledge_id}/document/${document_id}`, data, undefined, loading) +} + +/** + * 删除文档 + * @param 参数 knowledge_id, document_id, + */ +const delDocument: ( + knowledge_id: string, + document_id: string, + loading?: Ref, +) => Promise> = (knowledge_id, document_id, loading) => { + return del(`${prefix}/${knowledge_id}/document/${document_id}`, loading) +} + +/** + * 批量取消文档任务 + * @param 参数 knowledge_id, document_id, + *{ + "id_list": [ + "3fa85f64-5717-4562-b3fc-2c963f66afa6" + ], + "type": 0 +} + */ + +const putBatchCancelTask: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, data, loading) => { + return put(`${prefix}/${knowledge_id}/document/cancel_task/_batch`, data, undefined, loading) +} + +/** + * 取消文档任务 + * @param 参数 knowledge_id, document_id, + */ +const putCancelTask: ( + knowledge_id: string, + document_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, document_id, data, loading) => { + return put( + `${prefix}/${knowledge_id}/document/${document_id}/cancel_task`, + data, + undefined, + loading, + ) +} + +/** + * 下载原文档 + * @param 参数 knowledge_id + */ +const getDownloadSourceFile: (knowledge_id: string, document_id: string) => Promise> = ( + knowledge_id, + document_id, +) => { + return get(`${prefix}/${knowledge_id}/document/${document_id}/download_source_file`) +} + +/** + * 导出文档 + * @param document_name 文档名称 + * @param knowledge_id 数据集id + * @param document_id 文档id + * @param loading 加载器 + * @returns + */ +const exportDocument: ( + document_name: string, + knowledge_id: string, + document_id: string, + loading?: Ref, +) => Promise = (document_name, knowledge_id, document_id, loading) => { + return exportExcel( + document_name + '.xlsx', + `${prefix}/${knowledge_id}/document/${document_id}/export`, + {}, + loading, + ) +} +/** + * 导出文档 + * @param document_name 文档名称 + * @param knowledge_id 数据集id + * @param document_id 文档id + * @param loading 加载器 + * @returns + */ +const exportDocumentZip: ( + document_name: string, + knowledge_id: string, + document_id: string, + loading?: Ref, +) => Promise = (document_name, knowledge_id, document_id, loading) => { + return exportFile( + document_name + '.zip', + `${prefix}/${knowledge_id}/document/${document_id}/export_zip`, + {}, + loading, + ) +} + +/** + * 刷新文档向量库 + * @param 参数 + * knowledge_id, document_id, + * { + "state_list": [ + "string" + ] +} + */ +const putDocumentRefresh: ( + knowledge_id: string, + document_id: string, + state_list: Array, + loading?: Ref, +) => Promise> = (knowledge_id, document_id, state_list, loading) => { + return put( + `${prefix}/${knowledge_id}/document/${document_id}/refresh`, + { state_list }, + undefined, + loading, + ) +} + +/** + * 同步web站点类型 + * @param 参数 + * knowledge_id, document_id, + */ +const putDocumentSync: ( + knowledge_id: string, + document_id: string, + loading?: Ref, +) => Promise> = (knowledge_id, document_id, loading) => { + return put( + `${prefix}/${knowledge_id}/document/${document_id}/sync`, + undefined, + undefined, + loading, + ) +} + +/** + * 创建批量文档 + * @param 参数 +{ + "name": "string", + "paragraphs": [ + { + "content": "string", + "title": "string", + "problem_list": [ + { + "id": "string", + "content": "string" + } + ], + "is_active": true + } + ], + "source_file_id": string +} + */ +const putMulDocument: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, data, loading) => { + return put(`${prefix}/${knowledge_id}/document/batch_create`, data, {}, loading, 1000 * 60 * 5) +} + +/** + * 批量删除文档 + * @param 参数 knowledge_id, + * { + "id_list": [String] +} + */ +const delMulDocument: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, data, loading) => { + return del( + `${prefix}/${knowledge_id}/document/bach_delete`, + undefined, + { id_list: data }, + loading, + ) +} + +/** + * 批量关联 + * @param 参数 knowledge_id, +{ + "document_id_list": [ + "string" + ], + "model_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "prompt": "string", + "state_list": [ + "string" + ] +} + */ +const putBatchGenerateRelated: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, data, loading) => { + return put(`${prefix}/${knowledge_id}/document/batch_generate_related`, data, undefined, loading) +} + +/** + * 批量修改命中方式 + * @param knowledge_id 知识库id + * @param data + * {id_list:[],hit_handling_method:'directly_return|optimization',directly_return_similarity} + * @param loading + * @returns + */ +const putBatchEditHitHandling: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, data, loading) => { + return put(`${prefix}/${knowledge_id}/document/batch_hit_handling`, data, undefined, loading) +} + +/** + * 批量刷新文档向量库 + * @param knowledge_id 知识库id + * @param data +{ + "id_list": [ + "string" + ], + "state_list": [ + "string" + ] +} + * @param loading + * @returns + */ +const putBatchRefresh: ( + knowledge_id: string, + data: any, + stateList: Array, + loading?: Ref, +) => Promise> = (knowledge_id, data, stateList, loading) => { + return put( + `${prefix}/${knowledge_id}/document/batch_refresh`, + { id_list: data, state_list: stateList }, + undefined, + loading, + ) +} + +/** + * 批量同步文档 + * @param 参数 knowledge_id, + */ +const putMulSyncDocument: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, data, loading) => { + return put(`${prefix}/${knowledge_id}/document/batch_sync`, { id_list: data }, undefined, loading) +} + +/** + * 批量迁移文档 + * @param 参数 knowledge_id,target_knowledge_id, + + */ +const putMigrateMulDocument: ( + knowledge_id: string, + target_knowledge_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, target_knowledge_id, data, loading) => { + return put( + `${prefix}/${knowledge_id}/document/migrate/${target_knowledge_id}`, + data, + undefined, + loading, + ) +} + +/** + * 导入QA文档 + * @param 参数 + * file + } + */ +const postQADocument: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, data, loading) => { + return post(`${prefix}/${knowledge_id}/document/qa`, data, undefined, loading) +} + +/** + * 分段预览(上传文档) + * @param 参数 file:file,limit:number,patterns:array,with_filter:boolean + */ +const postSplitDocument: (data: any, id:string) => Promise> = (data, id) => { + return post(`${prefix}/${id}/document/split`, data, undefined, undefined, 1000 * 60 * 60) +} + +/** + * 分段标识列表 + * @param loading 加载器 + * @returns 分段标识列表 + */ +const listSplitPattern: ( + loading?: Ref, +) => Promise>>> = (loading) => { + return get(`${prefix}/document/split_pattern`, {}, loading) +} + +/** + * 导入表格 + * @param 参数 + * file + */ +const postTableDocument: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, data, loading) => { + return post(`${prefix}/${knowledge_id}/document/table`, data, undefined, loading) +} + +/** + * 获得QA模版 + * @param 参数 fileName,type, + */ +const exportQATemplate: (fileName: string, type: string, loading?: Ref) => void = ( + fileName, + type, + loading, +) => { + return exportExcel(fileName, `${prefix}/document/template/export`, { type }, loading) +} + +/** + * 获得table模版 + * @param 参数 fileName,type, + */ +const exportTableTemplate: (fileName: string, type: string, loading?: Ref) => void = ( + fileName, + type, + loading, +) => { + return exportExcel(fileName, `${prefix}/document/table_template/export`, { type }, loading) +} + +/** + * 创建Web站点文档 + * @param 参数 + * { + "source_url_list": [ + "string" + ], + "selector": "string" + } + } + */ +const postWebDocument: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, data, loading) => { + return post(`${prefix}/${knowledge_id}/document/web`, data, undefined, loading) +} + +const getAllDocument: (knowledge_id: string, loading?: Ref) => Promise> = ( + knowledge_id, + loading, +) => { + return get(`${prefix}/${knowledge_id}/document`, undefined, loading) +} + +const putLarkDocumentSync: ( + knowledge_id: string, + document_id: string, + loading?: Ref, +) => Promise> = (knowledge_id, document_id, loading) => { + return put( + `${prefix}/lark/${knowledge_id}/document/${document_id}/sync`, + undefined, + undefined, + loading, + ) +} + +const delMulLarkSyncDocument: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, data, loading) => { + return put(`${prefix}/lark/${knowledge_id}/_batch`, { id_list: data }, undefined, loading) +} + +export default { + getDocument, + getDocumentDetail, + putDocument, + delDocument, + putBatchCancelTask, + putCancelTask, + getDownloadSourceFile, + exportDocument, + exportDocumentZip, + putDocumentRefresh, + putDocumentSync, + putMulDocument, + delMulDocument, + putBatchGenerateRelated, + putBatchEditHitHandling, + putBatchRefresh, + putMulSyncDocument, + putMigrateMulDocument, + postQADocument, + postSplitDocument, + listSplitPattern, + postTableDocument, + exportQATemplate, + exportTableTemplate, + postWebDocument, + + getAllDocument, + putLarkDocumentSync, + delMulLarkSyncDocument, +} diff --git a/ui/src/api/resource-management/knowledge.ts b/ui/src/api/resource-management/knowledge.ts new file mode 100644 index 000000000..68d0fad98 --- /dev/null +++ b/ui/src/api/resource-management/knowledge.ts @@ -0,0 +1,305 @@ +import { Result } from '@/request/Result' +import { get, post, del, put, exportFile, exportExcel } from '@/request/index' +import { type Ref } from 'vue' +import type { pageRequest } from '@/api/type/common' +import type { knowledgeData } from '@/api/type/knowledge' + +import useStore from '@/stores' +const prefix = '/system/resource' + +/** + * 获得知识库文件夹列表 + * @params 参数 + * {folder_id: string, + * name: string, + * user_id: string, + * desc: string,} + */ +const getKnowledgeByFolder: (data?: any, loading?: Ref) => Promise>> = ( + data, + loading, +) => { + return get(`${prefix}/knowledge`, data, loading) +} + +/** + * 知识库列表(无分页) + * @param 参数 + * param { + "folder_id": "string", + "name": "string", + "tool_type": "string", + desc: string, + } + */ +const getKnowledgeList: (param?: any, loading?: Ref) => Promise> = ( + param, + loading, +) => { + return get(`${prefix}/knowledge`, param, loading) +} + +/** + * 知识库分页列表 + * @param 参数 + * param { + "folder_id": "string", + "name": "string", + "tool_type": "string", + desc: string, + } + */ +const getKnowledgeListPage: ( + page: pageRequest, + param?: any, + loading?: Ref, +) => Promise> = (page, param, loading) => { + return get(`${prefix}/knowledge/${page.current_page}/${page.page_size}`, param, loading) +} + +/** + * 知识库详情 + * @param 参数 knowledge_id + */ +const getKnowledgeDetail: (knowledge_id: string, loading?: Ref) => Promise> = ( + knowledge_id, + loading, +) => { + return get(`${prefix}/knowledge/${knowledge_id}`, undefined, loading) +} + +/** + * 修改知识库信息 + * @param 参数 + * knowledge_id + * { + "name": "string", + "desc": true + } + */ +const putKnowledge: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, data, loading) => { + return put(`${prefix}/knowledge/${knowledge_id}`, data, undefined, loading) +} + +/** + * 删除知识库 + * @param 参数 knowledge_id + */ +const delKnowledge: (knowledge_id: String, loading?: Ref) => Promise> = ( + knowledge_id, + loading, +) => { + return del(`${prefix}/${knowledge_id}`, undefined, {}, loading) +} + +/** + * 向量化知识库 + * @param 参数 knowledge_id + */ +const putReEmbeddingKnowledge: ( + knowledge_id: string, + loading?: Ref, +) => Promise> = (knowledge_id, loading) => { + return put(`${prefix}/knowledge/${knowledge_id}/embedding`, undefined, undefined, loading) +} + +/** + * 导出知识库 + * @param knowledge_name 知识库名称 + * @param knowledge_id 知识库id + * @returns + */ +const exportKnowledge: ( + knowledge_name: string, + knowledge_id: string, + loading?: Ref, +) => Promise = (knowledge_name, knowledge_id, loading) => { + return exportExcel( + knowledge_name + '.xlsx', + `${prefix}/${knowledge_id}/knowledge/${knowledge_id}/export`, + undefined, + loading, + ) +} +/** + *导出Zip知识库 + * @param knowledge_name 知识库名称 + * @param knowledge_id 知识库id + * @param loading 加载器 + * @returns + */ +const exportZipKnowledge: ( + knowledge_name: string, + knowledge_id: string, + loading?: Ref, +) => Promise = (knowledge_name, knowledge_id, loading) => { + return exportFile( + knowledge_name + '.zip', + `${prefix}/${knowledge_id}/knowledge/${knowledge_id}/export_zip`, + undefined, + loading, + ) +} + +/** + * 生成关联问题 + * @param knowledge_id 知识库id + * @param data + * @param loading + * @returns + */ +const putGenerateRelated: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise>> = (knowledge_id, data, loading) => { + return put(`${prefix}/${knowledge_id}/generate_related`, data, null, loading) +} + +/** + * 命中测试列表 + * @param knowledge_id + * @param loading + * @query { query_text: string, top_number: number, similarity: number } + * @returns + */ +const getKnowledgeHitTest: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise>> = (knowledge_id, data, loading) => { + return get(`${prefix}/${knowledge_id}/hit_test`, data, loading) +} + +/** + * 同步知识库 + * @param 参数 knowledge_id + * @query 参数 sync_type // 同步类型->replace:替换同步,complete:完整同步 + */ +const putSyncWebKnowledge: ( + knowledge_id: string, + sync_type: string, + loading?: Ref, +) => Promise> = (knowledge_id, sync_type, loading) => { + return put(`${prefix}/knowledge/${knowledge_id}/sync`, undefined, { sync_type }, loading) +} + +/** + * 创建知识库 + * @param 参数 + * { + "name": "string", + "folder_id": "string", + "desc": "string", + "embedding": "string" + } + */ +const postKnowledge: (data: knowledgeData, loading?: Ref) => Promise> = ( + data, + loading, +) => { + return post(`${prefix}/knowledge/base`, data, undefined, loading, 1000 * 60 * 5) +} + +/** + * 获取当前用户可使用的向量化模型列表 + * @param application_id + * @param loading + * @query { query_text: string, top_number: number, similarity: number } + * @returns + */ +const getKnowledgeEmdeddingModel: ( + knowledge_id: string, + loading?: Ref, +) => Promise>> = (knowledge_id, loading) => { + return get(`${prefix}/${knowledge_id}/emdedding_model`, loading) +} + +/** + * 获取当前用户可使用的模型列表 + * @param application_id + * @param loading + * @query { query_text: string, top_number: number, similarity: number } + * @returns + */ +const getKnowledgeModel: (loading?: Ref) => Promise>> = (loading) => { + return get(`${prefix}/knowledge/model`, loading) +} + +/** + * 创建Web知识库 + * @param 参数 + * { + "name": "string", + "folder_id": "string", + "desc": "string", + "embedding": "string", + "source_url": "string", + "selector": "string" + } + */ +const postWebKnowledge: (data: any, loading?: Ref) => Promise> = ( + data, + loading, +) => { + return post(`${prefix}/knowledge/web`, data, undefined, loading) +} + +/** + * 获取飞书文档列表 + * @param knowledge_id + * @param folder_token + * @param loading + * @returns + */ +const getLarkDocumentList: ( + knowledge_id: string, + folder_token: string, + data: any, + loading?: Ref, +) => Promise>> = (knowledge_id, folder_token, data, loading) => { + return post(`${prefix}/lark/${knowledge_id}/${folder_token}/doc_list`, data, null, loading) +} + +const importLarkDocument: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise>> = (knowledge_id, data, loading) => { + return post(`${prefix}/lark/${knowledge_id}/import`, data, null, loading) +} + +const postLarkKnowledge: (data: any, loading?: Ref) => Promise>> = ( + data, + loading, +) => { + return post(`${prefix}/knowledge/lark/save`, data, null, loading) +} + +export default { + getKnowledgeByFolder, + getKnowledgeList, + getKnowledgeListPage, + getKnowledgeDetail, + putKnowledge, + delKnowledge, + putReEmbeddingKnowledge, + exportKnowledge, + exportZipKnowledge, + putGenerateRelated, + getKnowledgeHitTest, + putSyncWebKnowledge, + postKnowledge, + getKnowledgeModel, + postWebKnowledge, + + getLarkDocumentList, + importLarkDocument, + postLarkKnowledge, +} as { + [key: string]: any +} diff --git a/ui/src/api/resource-management/model.ts b/ui/src/api/resource-management/model.ts new file mode 100644 index 000000000..6d20c92bb --- /dev/null +++ b/ui/src/api/resource-management/model.ts @@ -0,0 +1,133 @@ +import { Result } from '@/request/Result' +import { get, post, del, put } from '@/request/index' +import { type Ref } from 'vue' +import type { + ListModelRequest, + Model, + CreateModelRequest, + EditModelRequest, +} from '@/api/type/model' +import type { FormField } from '@/components/dynamics-form/type' + +const prefix = '/system/resource' +const workspace_id = localStorage.getItem('workspace_id') || 'default' + +/** + * 获得模型列表 + * @params 参数 name, model_type, model_name + */ +const getModel: ( + request?: ListModelRequest, + loading?: Ref, +) => Promise>> = (data, loading) => { + return get(`${prefix}/model`, data, loading) +} + +/** + * 获取模型参数表单 + * @param model_id 模型id + * @param loading + * @returns + */ +const getModelParamsForm: ( + model_id: string, + loading?: Ref, +) => Promise>> = (model_id, loading) => { + return get(`${prefix}/model/${model_id}/model_params_form`, {}, loading) +} + +/** + * 创建模型 + * @param request 请求对象 + * @param loading 加载器 + * @returns + */ +const createModel: ( + request: CreateModelRequest, + loading?: Ref, +) => Promise> = (request, loading) => { + return post(`${prefix}/model`, request, {}, loading) +} + +/** + * 修改模型 + * @param request 請求對象 + * @param loading 加載器 + * @returns + */ +const updateModel: ( + model_id: string, + request: EditModelRequest, + loading?: Ref, +) => Promise> = (model_id, request, loading) => { + return put(`${prefix}/model/${model_id}`, request, {}, loading) +} + +/** + * 修改模型参数配置 + * @param request 請求對象 + * @param loading 加載器 + * @returns + */ +const updateModelParamsForm: ( + model_id: string, + request: any[], + loading?: Ref, +) => Promise> = (model_id, request, loading) => { + return put(`${prefix}/model/${model_id}/model_params_form`, request, {}, loading) +} + +/** + * 获取模型详情根据模型id 包括认证信息 + * @param model_id 模型id + * @param loading 加载器 + * @returns + */ +const getModelById: (model_id: string, loading?: Ref) => Promise> = ( + model_id, + loading, +) => { + return get(`${prefix}/model/${model_id}`, {}, loading) +} +/** + * 获取模型信息不包括认证信息根据模型id + * @param model_id 模型id + * @param loading 加载器 + * @returns + */ +const getModelMetaById: (model_id: string, loading?: Ref) => Promise> = ( + model_id, + loading, +) => { + return get(`${prefix}/model/${model_id}/meta`, {}, loading) +} +/** + * 暂停下载 + * @param model_id 模型id + * @param loading 加载器 + * @returns + */ +const pauseDownload: (model_id: string, loading?: Ref) => Promise> = ( + model_id, + loading, +) => { + return put(`${prefix}/model/${model_id}/pause_download`, undefined, {}, loading) +} +const deleteModel: (model_id: string, loading?: Ref) => Promise> = ( + model_id, + loading, +) => { + return del(`${prefix}/model/${model_id}`, undefined, {}, loading) +} + +export default { + getModel, + createModel, + updateModel, + deleteModel, + getModelById, + getModelMetaById, + pauseDownload, + getModelParamsForm, + updateModelParamsForm, +} diff --git a/ui/src/api/resource-management/paragraph.ts b/ui/src/api/resource-management/paragraph.ts new file mode 100644 index 000000000..0a6da8d77 --- /dev/null +++ b/ui/src/api/resource-management/paragraph.ts @@ -0,0 +1,268 @@ +import { Result } from '@/request/Result' +import { get, post, del, put } from '@/request/index' +import type { pageRequest } from '@/api/type/common' +import type { Ref } from 'vue' +const prefix = '/system/resource/knowledge' + +/** + * 创建段落 + * @param 参数 + * knowledge_id, document_id + * { + "content": "string", + "title": "string", + "is_active": true, + "problem_list": [ + { + "content": "string" + } + ] + } + */ +const postParagraph: ( + knowledge_id: string, + document_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, document_id, data, loading) => { + return post( + `${prefix}/${knowledge_id}/document/${document_id}/paragraph`, + data, + undefined, + loading, + ) +} + +/** + * 段落列表 + * @param 参数 knowledge_id document_id + * param { + "title": "string", + "content": "string", + } + */ +const getParagraph: ( + knowledge_id: string, + document_id: string, + page: pageRequest, + param: any, + loading?: Ref, +) => Promise> = (knowledge_id, document_id, page, param, loading) => { + return get( + `${prefix}/${knowledge_id}/document/${document_id}/paragraph/${page.current_page}/${page.page_size}`, + param, + loading, + ) +} + +/** + * 修改段落 + * @param 参数 + * knowledge_id, document_id, paragraph_id + * { + "content": "string", + "title": "string", + "is_active": true, + "problem_list": [ + { + "content": "string" + } + ] + } + */ +const putParagraph: ( + knowledge_id: string, + document_id: string, + paragraph_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, document_id, paragraph_id, data, loading) => { + return put( + `${prefix}/${knowledge_id}/document/${document_id}/paragraph/${paragraph_id}`, + data, + undefined, + loading, + ) +} + +/** + * 删除段落 + * @param 参数 knowledge_id, document_id, paragraph_id + */ +const delParagraph: ( + knowledge_id: string, + document_id: string, + paragraph_id: string, + loading?: Ref, +) => Promise> = (knowledge_id, document_id, paragraph_id, loading) => { + return del( + `${prefix}/${knowledge_id}/document/${document_id}/paragraph/${paragraph_id}`, + undefined, + {}, + loading, + ) +} + +/** + * 某段落问题列表 + * @param 参数 knowledge_id,document_id,paragraph_id + */ +const getParagraphProblem: ( + knowledge_id: string, + document_id: string, + paragraph_id: string, +) => Promise> = (knowledge_id, document_id, paragraph_id: string) => { + return get(`${prefix}/${knowledge_id}/document/${document_id}/paragraph/${paragraph_id}/problem`) +} + +/** + * 给某段落创建问题 + * @param 参数 + * knowledge_id, document_id, paragraph_id + * { + content": "string" + } + */ +const postParagraphProblem: ( + knowledge_id: string, + document_id: string, + paragraph_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, document_id, paragraph_id, data: any, loading) => { + return post( + `${prefix}/${knowledge_id}/document/${document_id}/paragraph/${paragraph_id}/problem`, + data, + {}, + loading, + ) +} + +/** + * 添加某段落关联问题 + * @param knowledge_id 数据集id + * @param document_id 文档id + * @param loading 加载器 + * @query data { + * paragraph_id 段落id problem_id 问题id + * } + */ +const putAssociationProblem: ( + knowledge_id: string, + document_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, document_id, data, loading) => { + return put( + `${prefix}/${knowledge_id}/document/${document_id}/paragraph/association`, + {}, + data, + loading, + ) +} + +/** + * 批量删除段落 + * @param 参数 knowledge_id, document_id + */ +const putMulParagraph: ( + knowledge_id: string, + document_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, document_id, data, loading) => { + return put( + `${prefix}/${knowledge_id}/document/${document_id}/paragraph/batch_delete`, + { id_list: data }, + undefined, + loading, + ) +} + +/** + * 批量关联问题 + * @param 参数 knowledge_id, document_id + * { + "paragraph_id_list": [ + "3fa85f64-5717-4562-b3fc-2c963f66afa6" + ], + "model_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "prompt": "string", + "document_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + */ +const putBatchGenerateRelated: ( + knowledge_id: string, + document_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, document_id, data, loading) => { + return put( + `${prefix}/${knowledge_id}/document/${document_id}/paragraph/batch_generate_related`, + data, + undefined, + loading, + ) +} + +/** + * 批量迁移段落 + * @param 参数 knowledge_id,target_knowledge_id, + */ +const putMigrateMulParagraph: ( + knowledge_id: string, + document_id: string, + target_knowledge_id: string, + target_document_id: string, + data: any, + loading?: Ref, +) => Promise> = ( + knowledge_id, + document_id, + target_knowledge_id, + target_document_id, + data, + loading, +) => { + return put( + `${prefix}/${knowledge_id}/document/${document_id}/paragraph/migrate/knowledge/${target_knowledge_id}/document/${target_document_id}`, + data, + undefined, + loading, + ) +} + +/** + * 解除某段落关联问题 + * @param 参数 knowledge_id, document_id, + * @query data { + * paragraph_id 段落id problem_id 问题id + * } + */ +const putDisassociationProblem: ( + knowledge_id: string, + document_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, document_id, data, loading) => { + return put( + `${prefix}/${knowledge_id}/document/${document_id}/paragraph/unassociation`, + {}, + data, + loading, + ) +} + +export default { + postParagraph, + getParagraph, + putParagraph, + delParagraph, + getParagraphProblem, + postParagraphProblem, + putAssociationProblem, + putMulParagraph, + putBatchGenerateRelated, + putMigrateMulParagraph, + putDisassociationProblem, +} diff --git a/ui/src/api/resource-management/problem.ts b/ui/src/api/resource-management/problem.ts new file mode 100644 index 000000000..3381614f2 --- /dev/null +++ b/ui/src/api/resource-management/problem.ts @@ -0,0 +1,121 @@ +import { Result } from '@/request/Result' +import { get, post, del, put } from '@/request/index' +import type { Ref } from 'vue' +import type { pageRequest } from '@/api/type/common' + +const prefix = '/system/resource/knowledge' + +/** + * 创建问题 + * @param 参数 knowledge_id + * data: array[string] + */ +const postProblems: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, data, loading) => { + return post(`${prefix}/${knowledge_id}/problem`, data, undefined, loading) +} + +/** + * 问题分页列表 + * @param 参数 knowledge_id, + * query { + "content": "string", + } + */ + +const getProblems: ( + knowledge_id: string, + page: pageRequest, + param: any, + loading?: Ref, +) => Promise> = (knowledge_id, page, param, loading) => { + return get( + `${prefix}/${knowledge_id}/problem/${page.current_page}/${page.page_size}`, + param, + loading, + ) +} + +/** + * 修改问题 + * @param 参数 + * knowledge_id, problem_id, + * { + "content": "string", + } + */ +const putProblems: ( + knowledge_id: string, + problem_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, problem_id, data: any, loading) => { + return put(`${prefix}/${knowledge_id}/problem/${problem_id}`, data, undefined, loading) +} + +/** + * 删除问题 + * @param 参数 knowledge_id, problem_id, + */ +const delProblems: ( + knowledge_id: string, + problem_id: string, + loading?: Ref, +) => Promise> = (knowledge_id, problem_id, loading) => { + return del(`${prefix}/${knowledge_id}/problem/${problem_id}`, loading) +} + +/** + * 问题详情 + * @param 参数 + * knowledge_id, problem_id, + */ +const getDetailProblems: ( + knowledge_id: string, + problem_id: string, + loading?: Ref, +) => Promise> = (knowledge_id, problem_id, loading) => { + return get(`${prefix}/${knowledge_id}/problem/${problem_id}/paragraph`, undefined, loading) +} + +/** + * 批量关联段落 + * @param 参数 knowledge_id, + * { + "problem_id_list": "Array", + "paragraph_list": "Array", + } + */ +const putMulAssociationProblem: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, data, loading) => { + return put(`${prefix}/${knowledge_id}/problem/batch_association`, data, undefined, loading) +} + +/** + * 批量删除问题 + * @param 参数 knowledge_id, + * data: array[string] + */ +const putMulProblem: ( + knowledge_id: string, + data: any, + loading?: Ref, +) => Promise> = (knowledge_id, data, loading) => { + return put(`${prefix}/${knowledge_id}/problem/batch_delete`, data, undefined, loading) +} + +export default { + postProblems, + getProblems, + putProblems, + delProblems, + getDetailProblems, + putMulAssociationProblem, + putMulProblem, +} diff --git a/ui/src/api/resource-management/provider.ts b/ui/src/api/resource-management/provider.ts new file mode 100644 index 000000000..9376b7d63 --- /dev/null +++ b/ui/src/api/resource-management/provider.ts @@ -0,0 +1,86 @@ +import {Result} from '@/request/Result' +import {get, post} from '@/request/index' +import type {Ref} from 'vue' +import type {Provider, BaseModel} from '@/api/type/model' +import type {FormField} from '@/components/dynamics-form/type' +import type {KeyValue} from '../type/common' + +const prefix_provider = '/provider' +/** + * 获得供应商列表 + */ +const getProvider: (loading?: Ref) => Promise>> = (loading) => { + return get(`${prefix_provider}`, {}, loading) +} + +/** + * 获得供应商列表 + */ +const getProviderByModelType: ( + model_type: string, + loading?: Ref, +) => Promise>> = (model_type, loading) => { + return get(`${prefix_provider}`, {model_type}, loading) +} + +/** + * 获取模型创建表单 + * @param provider + * @param model_type + * @param model_name + * @param loading + * @returns + */ +const getModelCreateForm: ( + provider: string, + model_type: string, + model_name: string, + loading?: Ref, +) => Promise>> = (provider, model_type, model_name, loading) => { + return get(`${prefix_provider}/model_form`, {provider, model_type, model_name}, loading) +} + +/** + * 获取模型类型列表 + * @param provider 供应商 + * @param loading 加载器 + * @returns 模型类型列表 + */ +const listModelType: ( + provider: string, + loading?: Ref, +) => Promise>>> = (provider, loading?: Ref) => { + return get(`${prefix_provider}/model_type_list`, {provider}, loading) +} + +/** + * 获取基础模型列表 + * @param provider + * @param model_type + * @param loading + * @returns + */ +const listBaseModel: ( + provider: string, + model_type: string, + loading?: Ref, +) => Promise>> = (provider, model_type, loading) => { + return get(`${prefix_provider}/model_list`, {provider, model_type}, loading) +} + +const listBaseModelParamsForm: ( + provider: string, + model_type: string, + model_name: string, + loading?: Ref, +) => Promise>> = (provider, model_type, model_name, loading) => { + return get(`${prefix_provider}/model_params_form`, {provider, model_type, model_name}, loading) +} +export default { + getProvider, + getModelCreateForm, + getProviderByModelType, + listModelType, + listBaseModel, + listBaseModelParamsForm, +} diff --git a/ui/src/api/resource-management/tool.ts b/ui/src/api/resource-management/tool.ts new file mode 100644 index 000000000..32794c7dd --- /dev/null +++ b/ui/src/api/resource-management/tool.ts @@ -0,0 +1,137 @@ +import { Result } from '@/request/Result' +import { get, post, del, put, exportFile } from '@/request/index' +import { type Ref } from 'vue' +import type { pageRequest } from '@/api/type/common' +import type { toolData } from '@/api/type/tool' + +const prefix = '/system/resource' + +/** + * 获得工具文件夹列表 + * @params 参数 {folder_id: string} + */ +const getToolByFolder: (data?: any, loading?: Ref) => Promise>> = ( + data, + loading, +) => { + return get(`${prefix}/tool`, data, loading) +} + +/** + * 工具列表 + * @param 参数 + * param { + "folder_id": "string", + "name": "string", + "tool_type": "string", + } + */ +const getToolList: ( + page: pageRequest, + param?: any, + loading?: Ref, +) => Promise> = (page, param, loading) => { + return get(`${prefix}/tool/${page.current_page}/${page.page_size}`, param, loading) +} + +/** + * 创建工具 + * @param 参数 + */ +const postTool: (data: toolData, loading?: Ref) => Promise> = ( + data, + loading, +) => { + return post(`${prefix}/tool`, data, undefined, loading) +} + +/** + * 修改工具 + * @param 参数 + + */ +const putTool: (tool_id: string, data: toolData, loading?: Ref) => Promise> = ( + tool_id, + data, + loading, +) => { + return put(`${prefix}/tool/${tool_id}`, data, undefined, loading) +} + +/** + * 获取工具详情 + * @param tool_id 工具id + * @param loading 加载器 + * @returns 函数详情 + */ +const getToolById: (tool_id: string, loading?: Ref) => Promise> = ( + tool_id, + loading, +) => { + return get(`${prefix}/tool/${tool_id}`, undefined, loading) +} + +/** + * 删除工具 + * @param 参数 tool_id + */ +const delTool: (tool_id: String, loading?: Ref) => Promise> = ( + tool_id, + loading, +) => { + return del(`${prefix}/${tool_id}`, undefined, {}, loading) +} + +const putToolIcon: (id: string, data: any, loading?: Ref) => Promise> = ( + id, + data, + loading, +) => { + return put(`${prefix}/${id}/edit_icon`, data, undefined, loading) +} + +const exportTool = (id: string, name: string, loading?: Ref) => { + return exportFile(name + '.fx', `${prefix}/${id}/export`, undefined, loading) +} + +/** + * 调试工具 + * @param 参数 + + */ +const postToolDebug: (data: any, loading?: Ref) => Promise> = ( + data: any, + loading, +) => { + return post(`${prefix}/debug`, data, undefined, loading) +} + +const postImportTool: (data: any, loading?: Ref) => Promise> = ( + data, + loading, +) => { + return post(`${prefix}/import`, data, undefined, loading) +} + +const postPylint: (code: string, loading?: Ref) => Promise> = ( + code, + loading, +) => { + return post(`${prefix}/tool/pylint`, { code }, {}, loading) +} + + + +export default { + getToolByFolder, + getToolList, + putTool, + getToolById, + postTool, + postToolDebug, + postImportTool, + postPylint, + exportTool, + putToolIcon, + delTool, +} diff --git a/ui/src/api/resource-management/workspace.ts b/ui/src/api/resource-management/workspace.ts new file mode 100644 index 000000000..b93be8a50 --- /dev/null +++ b/ui/src/api/resource-management/workspace.ts @@ -0,0 +1,78 @@ +import {Result} from '@/request/Result' +import {get, post, del, put, exportFile, exportExcel} from '@/request/index' +import {type Ref} from 'vue' +import type {pageRequest} from '@/api/type/common' +import type {knowledgeData} from '@/api/type/knowledge' + +import useStore from '@/stores' + +const prefix = '/system/resource' +const prefix_workspace: any = {_value: 'workspace/'} +Object.defineProperty(prefix_workspace, 'value', { + get: function () { + const {user} = useStore() + return this._value + user.getWorkspaceId() + }, +}) + +const getSharedWorkspaceKnowledge: (loading?: Ref) => Promise>> = ( + loading, +) => { + return get(`${prefix}/${prefix_workspace.value}/knowledge`, {}, loading) +} + +const getSharedWorkspaceKnowledgePage: ( + page: pageRequest, + param: any, + loading?: Ref, +) => Promise>> = (page, param, loading) => { + return get( + `${prefix}/${prefix_workspace.value}/knowledge/${page.current_page}/${page.page_size}`, + param, + loading, + ) +} + +const getSharedWorkspaceModel: (loading?: Ref) => Promise>> = ( + loading, +) => { + return get(`${prefix}/${prefix_workspace.value}/model`, {}, loading) +} + +const getCESharedWorkspaceModel: (loading?: Ref) => Promise>> = ( + loading, +) => { + return get(`/${prefix_workspace.value}/model`, {}, loading) + +} + +const getSharedWorkspaceModelPage: ( + param: any, + loading?: Ref, +) => Promise>> = (param: any, loading) => { + console.log(`${prefix}/${prefix_workspace.value}/model`) + return get(`${prefix}/${prefix_workspace.value}/model`, param, loading) +} + +const getSharedWorkspaceTool: (loading?: Ref) => Promise>> = ( + loading, +) => { + return get(`${prefix}/${prefix_workspace.value}/tool`, {}, loading) +} + +const getSharedWorkspaceToolPage: ( + param: any, + loading?: Ref, +) => Promise>> = (param: any, loading) => { + return get(`${prefix}/${prefix_workspace.value}/tool`, param, loading) +} + +export default { + getSharedWorkspaceKnowledge, + getSharedWorkspaceKnowledgePage, + getSharedWorkspaceModel, + getSharedWorkspaceModelPage, + getSharedWorkspaceTool, + getSharedWorkspaceToolPage, + getCESharedWorkspaceModel +} diff --git a/ui/src/components/app-icon/icons/knowledge.ts b/ui/src/components/app-icon/icons/knowledge.ts index 81a45d15d..af1a6c3b4 100644 --- a/ui/src/components/app-icon/icons/knowledge.ts +++ b/ui/src/components/app-icon/icons/knowledge.ts @@ -22,6 +22,54 @@ export default { }, }, + 'app-filter_outlined': { + iconReader: () => { + return h('i', [ + h( + 'svg', + { + style: { height: '100%', width: '100%' }, + viewBox: '0 0 16 16', + version: '1.1', + xmlns: 'http://www.w3.org/2000/svg', + }, + [ + h('path', { + d: 'M10.6666 7.62086V14.3335C10.6666 14.5176 10.5174 14.6668 10.3333 14.6668H9.66665C9.48255 14.6668 9.33331 14.5176 9.33331 14.3335V7.3335C9.33331 7.23552 9.35445 7.14249 9.3924 7.0587C9.44305 6.93295 9.53373 6.8222 9.65896 6.74744L13.3333 4.55411V2.66683H2.66665V4.57737L6.23001 6.70758C6.48485 6.80127 6.66665 7.04615 6.66665 7.3335V12.0002C6.66665 12.1843 6.51741 12.3335 6.33331 12.3335H5.66665C5.48255 12.3335 5.33331 12.1843 5.33331 12.0002V7.64361L1.64919 5.44121C1.5665 5.39178 1.49892 5.32662 1.44803 5.2518C1.37775 5.19069 1.33331 5.10062 1.33331 5.00016V2.00016C1.33331 1.63197 1.63179 1.3335 1.99998 1.3335H14C14.1841 1.3335 14.3507 1.40812 14.4714 1.52876C14.592 1.6494 14.6666 1.81607 14.6666 2.00016V4.79556C14.6718 4.84238 14.6717 4.88936 14.6666 4.93565V5.00016C14.6666 5.11244 14.6111 5.21175 14.5261 5.27215C14.48 5.32873 14.4234 5.37834 14.3572 5.41788L10.6666 7.62086Z', + fill: 'currentColor', + }), + ], + ), + ]) + }, + }, + + 'app-icon-blue': { + iconReader: () => { + return h('i', [ + h( + 'svg', + { + style: { height: '100%', width: '100%' }, + viewBox: '0 0 16 16', + version: '1.1', + xmlns: 'http://www.w3.org/2000/svg', + }, + [ + h('path', { + d: 'M12.5827 4.66669C12.2867 5.81679 11.2426 6.66661 10 6.66661C8.75748 6.66661 7.71341 5.81679 7.41739 4.66669H1.76069C1.6121 4.66669 1.55822 4.65122 1.5039 4.62217C1.44958 4.59312 1.40695 4.55049 1.3779 4.49617C1.34884 4.44185 1.33337 4.38797 1.33337 4.23939V3.76071C1.33337 3.61213 1.34884 3.55825 1.3779 3.50393C1.40695 3.44961 1.44958 3.40698 1.5039 3.37793C1.55822 3.34888 1.6121 3.33341 1.76069 3.33341H7.41739C7.71341 2.18331 8.75748 1.3335 10 1.3335C11.2426 1.3335 12.2867 2.18331 12.5827 3.33341H14.2394C14.388 3.33341 14.4419 3.34888 14.4962 3.37793C14.5505 3.40698 14.5931 3.44961 14.6222 3.50393C14.6512 3.55825 14.6667 3.61213 14.6667 3.76071V4.23939C14.6667 4.38797 14.6512 4.44185 14.6222 4.49617C14.5931 4.55049 14.5505 4.59312 14.4962 4.62217C14.4419 4.65122 14.388 4.66669 14.2394 4.66669H12.5827ZM10 5.33333C10.7364 5.33333 11.3334 4.7364 11.3334 4.00005C11.3334 3.2637 10.7364 2.66677 10 2.66677C9.26366 2.66677 8.66671 3.2637 8.66671 4.00005C8.66671 4.7364 9.26366 5.33333 10 5.33333Z', + fill: 'currentColor', + }), + h('path', { + d: 'M8.5827 12.6664C8.28667 13.8165 7.2426 14.6663 6.00004 14.6663C4.75748 14.6663 3.71341 13.8165 3.41739 12.6664H1.76069C1.6121 12.6664 1.55822 12.6509 1.5039 12.6218C1.44958 12.5928 1.40695 12.5502 1.3779 12.4958C1.34884 12.4415 1.33337 12.3876 1.33337 12.2391V11.7604C1.33337 11.6118 1.34884 11.5579 1.3779 11.5036C1.40695 11.4493 1.44958 11.4067 1.5039 11.3776C1.55822 11.3485 1.6121 11.3331 1.76069 11.3331H3.41739C3.71341 10.183 4.75748 9.33316 6.00004 9.33316C7.2426 9.33316 8.28667 10.183 8.5827 11.3331H14.2394C14.388 11.3331 14.4419 11.3485 14.4962 11.3776C14.5505 11.4067 14.5931 11.4493 14.6222 11.5036C14.6512 11.5579 14.6667 11.6118 14.6667 11.7604V12.2391C14.6667 12.3876 14.6512 12.4415 14.6222 12.4958C14.5931 12.5502 14.5505 12.5928 14.4962 12.6218C14.4419 12.6509 14.388 12.6664 14.2394 12.6664H8.5827ZM6.00004 13.333C6.73642 13.333 7.33337 12.7361 7.33337 11.9997C7.33337 11.2634 6.73642 10.6664 6.00004 10.6664C5.26366 10.6664 4.66671 11.2634 4.66671 11.9997C4.66671 12.7361 5.26366 13.333 6.00004 13.333Z', + fill: 'currentColor', + }), + ], + ), + ]) + }, + }, + 'app-problems': { iconReader: () => { return h('i', [ diff --git a/ui/src/components/folder-tree/index.vue b/ui/src/components/folder-tree/index.vue index 7207f2b58..e528616c6 100644 --- a/ui/src/components/folder-tree/index.vue +++ b/ui/src/components/folder-tree/index.vue @@ -125,12 +125,18 @@ const title = ref('') watch(filterText, (val) => { treeRef.value!.filter(val) }) +let time function handleMouseEnter(data: Tree) { + clearTimeout(time) hoverNodeId.value = data.id } function handleMouseleave() { - hoverNodeId.value = '' + time = setTimeout(() => { + clearTimeout(time) + hoverNodeId.value = '' + document.body.click() + }, 300) } const filterNode = (value: string, data: Tree) => { if (!value) return true diff --git a/ui/src/components/generate-related-resource-dialog/index.vue b/ui/src/components/generate-related-resource-dialog/index.vue new file mode 100644 index 000000000..bab3e6bd8 --- /dev/null +++ b/ui/src/components/generate-related-resource-dialog/index.vue @@ -0,0 +1,204 @@ + + + diff --git a/ui/src/layout/layout-template/MainLayout.vue b/ui/src/layout/layout-template/MainLayout.vue index 1762eea43..d976dbd44 100644 --- a/ui/src/layout/layout-template/MainLayout.vue +++ b/ui/src/layout/layout-template/MainLayout.vue @@ -25,7 +25,7 @@ import { useRoute } from 'vue-router' const route = useRoute() const isShared = computed(() => { - return route.path.endsWith('hared') + return route.path.endsWith('hared') || route.name.includes('ResourceManagement') }) const { user } = useStore() diff --git a/ui/src/locales/lang/zh-CN/views/system.ts b/ui/src/locales/lang/zh-CN/views/system.ts index aa699987e..128c7eff7 100644 --- a/ui/src/locales/lang/zh-CN/views/system.ts +++ b/ui/src/locales/lang/zh-CN/views/system.ts @@ -3,6 +3,7 @@ export default { subTitle: '系统设置', shared: '共享', shared_resources: '共享资源', + resource_management: '资源管理', share_tool: '共享工具', share_model: '共享模型', share_knowledge: '共享知识库', diff --git a/ui/src/router/modules/2knowledge-resource-management.ts b/ui/src/router/modules/2knowledge-resource-management.ts new file mode 100644 index 000000000..26dda4a27 --- /dev/null +++ b/ui/src/router/modules/2knowledge-resource-management.ts @@ -0,0 +1,20 @@ +const ModelRouter = { + path: '/knowledge/resource', + name: 'knowledgeResourceManagement', + meta: { title: 'views.knowledge.title', permission: 'KNOWLEDGE:READ' }, + hidden: true, + redirect: '/knowledge', + component: () => import('@/layout/layout-template/SimpleLayout.vue'), + children: [ + + { + path: '/knowledge/resource/document/upload/management', + name: 'UploadDocumentResourceManagement', + meta: { activeMenu: '/knowledge/resource' }, + component: () => import('@/views/resource-management/document/UploadDocument.vue'), + hidden: true, + }, + ], +} + +export default ModelRouter diff --git a/ui/src/router/modules/2knowledge-shared-system.ts b/ui/src/router/modules/2knowledge-shared-system.ts index 71c8a5fa5..70f64e685 100644 --- a/ui/src/router/modules/2knowledge-shared-system.ts +++ b/ui/src/router/modules/2knowledge-shared-system.ts @@ -10,7 +10,7 @@ const ModelRouter = { { path: '/knowledge/system/document/upload/shared', name: 'UploadDocumentSharedSystem', - meta: { activeMenu: '/knowledge1/system' }, + meta: { activeMenu: '/knowledge/system' }, component: () => import('@/views/shared/document-shared/UploadDocument.vue'), hidden: true, }, diff --git a/ui/src/router/modules/document-resource-management.ts b/ui/src/router/modules/document-resource-management.ts new file mode 100644 index 000000000..d23e917d4 --- /dev/null +++ b/ui/src/router/modules/document-resource-management.ts @@ -0,0 +1,62 @@ +const DocumentRouter = { + path: '/knowledge/resource/:id/', + name: 'KnowledgeDetailResourceManagement', + meta: { title: 'common.fileUpload.document', activeMenu: '/knowledge', breadcrumb: true }, + component: () => import('@/layout/layout-template/MainLayout.vue'), + hidden: true, + children: [ + { + path: 'documentResource', + name: 'DocumentResourceManagement', + meta: { + icon: 'app-document', + iconActive: 'app-document-active', + title: 'common.fileUpload.document', + active: 'documentResource', + parentPath: '/knowledge/resource/:id/', + parentName: 'KnowledgeDetailResourceManagement', + }, + component: () => import('@/views/resource-management/document/index.vue'), + }, + { + path: 'problemResource', + name: 'ProblemResourceManagement', + meta: { + icon: 'app-problems', + iconActive: 'QuestionFilled', + title: 'views.problem.title', + active: 'problemResource', + parentPath: '/knowledge/resource/:id/', + parentName: 'KnowledgeDetailResourceManagement', + }, + component: () => import('@/views/resource-management/problem/index.vue'), + }, + { + path: 'hit-test-Resource', + name: 'KnowledgeHitTestResourceManagement', + meta: { + icon: 'app-hit-test', + title: 'views.application.hitTest.title', + active: 'hit-test-Resource', + parentPath: '/knowledge/resource/:id/', + parentName: 'KnowledgeDetailResourceManagement', + }, + component: () => import('@/views/resource-management/hit-test/index.vue'), + }, + { + path: 'settingResource', + name: 'settingResourceManagement', + meta: { + icon: 'app-setting', + iconActive: 'app-setting-active', + title: 'common.setting', + active: 'settingResource', + parentPath: '/knowledge/resource/:id/', + parentName: 'KnowledgeDetailResourceManagement', + }, + component: () => import('@/views/resource-management/knowledge/KnowledgeSetting.vue'), + } + ], +} + +export default DocumentRouter diff --git a/ui/src/router/modules/paragraph-resource-management.ts b/ui/src/router/modules/paragraph-resource-management.ts new file mode 100644 index 000000000..15e0dc1a3 --- /dev/null +++ b/ui/src/router/modules/paragraph-resource-management.ts @@ -0,0 +1,17 @@ +const ParagraphRouter = { + path: '/paragraph/resource/:id/:documentId/management', + name: 'ParagraphResourceManagement', + meta: { title: 'common.fileUpload.document', activeMenu: '/knowledge', breadcrumb: true }, + component: () => import('@/layout/layout-template/SimpleLayout.vue'), + hidden: true, + children: [ + { + path: '/paragraph/resource/:id/:documentId/management', + name: 'ParagraphIndexResourceManagement', + meta: { activeMenu: '/knowledge' }, + component: () => import('@/views/resource-management/paragraph/index.vue'), + }, + ], +} + +export default ParagraphRouter diff --git a/ui/src/router/modules/system.ts b/ui/src/router/modules/system.ts index 26cc54798..96cd1fe57 100644 --- a/ui/src/router/modules/system.ts +++ b/ui/src/router/modules/system.ts @@ -19,6 +19,42 @@ const systemRouter = { }, component: () => import('@/views/user-manage/index.vue'), }, + { + path: '/system/resource-management', + name: 'resourceManagement', + meta: { + icon: 'app-folder-share', + iconActive: 'app-folder-share-active', + title: 'views.system.resource_management', + activeMenu: '/system', + parentPath: '/system', + parentName: 'system', + }, + children: [ + { + path: '/system/resource-management/knowledge', + name: 'knowledgeResourceManagement', + meta: { + title: 'views.knowledge.title', + activeMenu: '/system', + parentPath: '/system', + parentName: 'system', + }, + component: () => import('@/views/resource-management/knowledge/index.vue'), + }, + { + path: '/system/resource-management/tool', + name: 'toolResourceManagement', + meta: { + title: 'views.tool.title', + activeMenu: '/system', + parentPath: '/system', + parentName: 'system', + }, + component: () => import('@/views/resource-management/tool/index.vue'), + }, + ], + }, { path: '/system/authorization', name: 'authorization', diff --git a/ui/src/stores/modules-resource-management/common.ts b/ui/src/stores/modules-resource-management/common.ts new file mode 100644 index 000000000..6920bdd2d --- /dev/null +++ b/ui/src/stores/modules-resource-management/common.ts @@ -0,0 +1,52 @@ +import { defineStore } from 'pinia' +import { DeviceType, ValidType } from '@/enums/common' +// import type { Ref } from 'vue' +// import userApi from '@/api/user/user' + +export interface commonTypes { + breadcrumb: any + paginationConfig: any | null + search: any + device: string +} + +const useCommonStore = defineStore('comm',{ + state: (): commonTypes => ({ + breadcrumb: null, + // 搜索和分页缓存 + paginationConfig: {}, + search: {}, + device: DeviceType.Desktop + }), + actions: { + saveBreadcrumb(data: any) { + this.breadcrumb = data + }, + savePage(val: string, data: any) { + this.paginationConfig[val] = data + }, + saveCondition(val: string, data: any) { + this.search[val] = data + }, + toggleDevice(value: DeviceType) { + this.device = value + }, + isMobile() { + return this.device === DeviceType.Mobile + }, + // async asyncGetValid(valid_type: ValidType, valid_count: number, loading?: Ref) { + // return new Promise((resolve, reject) => { + // userApi + // .getValid(valid_type, valid_count, loading) + // .then((data) => { + // resolve(data) + // }) + // .catch((error) => { + // reject(error) + // }) + // }) + // } + } +}) + +export default useCommonStore diff --git a/ui/src/stores/modules-resource-management/document.ts b/ui/src/stores/modules-resource-management/document.ts new file mode 100644 index 000000000..47fc4cac7 --- /dev/null +++ b/ui/src/stores/modules-resource-management/document.ts @@ -0,0 +1,35 @@ +import { defineStore } from 'pinia' +import documentApi from '@/api/resource-management/document' +import { type Ref } from 'vue' + +const useDocumentStore = defineStore('docume', { + state: () => ({}), + actions: { + async asyncGetAllDocument(id: string, loading?: Ref) { + return new Promise((resolve, reject) => { + documentApi + .getAllDocument(id, loading) + .then((res) => { + resolve(res) + }) + .catch((error) => { + reject(error) + }) + }) + }, + async asyncPutDocument(knowledgeId: string, data: any, loading?: Ref) { + return new Promise((resolve, reject) => { + documentApi + .putMulDocument(knowledgeId, data, loading) + .then((data) => { + resolve(data) + }) + .catch((error) => { + reject(error) + }) + }) + }, + }, +}) + +export default useDocumentStore diff --git a/ui/src/stores/modules-resource-management/folder.ts b/ui/src/stores/modules-resource-management/folder.ts new file mode 100644 index 000000000..b34891b4b --- /dev/null +++ b/ui/src/stores/modules-resource-management/folder.ts @@ -0,0 +1,23 @@ +import {defineStore} from 'pinia' +import {type Ref} from 'vue' +import folderApi from '@/api/folder' + +const useFolderStore = defineStore('fold', { + state: () => ({}), + actions: { + async asyncGetFolder(source: string, data: any, loading?: Ref) { + return new Promise((resolve, reject) => { + folderApi + .getFolder(source, data, loading) + .then((res) => { + resolve(res) + }) + .catch((error) => { + reject(error) + }) + }) + }, + }, +}) + +export default useFolderStore diff --git a/ui/src/stores/modules-resource-management/index.ts b/ui/src/stores/modules-resource-management/index.ts new file mode 100644 index 000000000..58acd47a1 --- /dev/null +++ b/ui/src/stores/modules-resource-management/index.ts @@ -0,0 +1,23 @@ +import useCommonStore from './common' +import useLoginStore from './login' +import useFolderStore from './folder' +import useKnowledgeStore from './knowledge' +import useModelStore from './model' +import usePromptStore from './prompt' +import useProblemStore from './problem' +import useParagraphStore from './paragraph' +import useDocumentStore from './document' + +const useStore = () => ({ + common: useCommonStore(), + login: useLoginStore(), + folder: useFolderStore(), + knowledge: useKnowledgeStore(), + model: useModelStore(), + prompt: usePromptStore(), + problem: useProblemStore(), + paragraph: useParagraphStore(), + document: useDocumentStore(), +}) + +export default useStore diff --git a/ui/src/stores/modules-resource-management/knowledge.ts b/ui/src/stores/modules-resource-management/knowledge.ts new file mode 100644 index 000000000..17825f919 --- /dev/null +++ b/ui/src/stores/modules-resource-management/knowledge.ts @@ -0,0 +1,76 @@ +import { defineStore } from 'pinia' +import type { knowledgeData } from '@/api/type/knowledge' +import type { UploadUserFile } from 'element-plus' +import knowledgeApi from '@/api/resource-management/knowledge' +import { type Ref } from 'vue' + +export interface knowledgeStateTypes { + baseInfo: knowledgeData | null + webInfo: any + documentsType: string + documentsFiles: UploadUserFile[] +} + +const useKnowledgeStore = defineStore('knowled', { + state: (): knowledgeStateTypes => ({ + baseInfo: null, + webInfo: null, + documentsType: '', + documentsFiles: [], + }), + actions: { + saveBaseInfo(info: knowledgeData | null) { + this.baseInfo = info + }, + saveWebInfo(info: any) { + this.webInfo = info + }, + saveDocumentsType(val: string) { + this.documentsType = val + }, + saveDocumentsFile(file: UploadUserFile[]) { + this.documentsFiles = file + }, + async asyncGetRootKnowledge(loading?: Ref) { + return new Promise((resolve, reject) => { + const params = { + folder_id: localStorage.getItem('workspace_id'), + } + knowledgeApi + .getKnowledgeList(params, loading) + .then((data) => { + resolve(data) + }) + .catch((error) => { + reject(error) + }) + }) + }, + async asyncGetKnowledgeDetail(knowledge_id: string, loading?: Ref) { + return new Promise((resolve, reject) => { + knowledgeApi + .getKnowledgeDetail(knowledge_id, loading) + .then((data) => { + resolve(data) + }) + .catch((error) => { + reject(error) + }) + }) + }, + async asyncSyncKnowledge(id: string, sync_type: string, loading?: Ref) { + return new Promise((resolve, reject) => { + knowledgeApi + .putSyncWebKnowledge(id, sync_type, loading) + .then((data) => { + resolve(data) + }) + .catch((error) => { + reject(error) + }) + }) + }, + }, +}) + +export default useKnowledgeStore diff --git a/ui/src/stores/modules-resource-management/login.ts b/ui/src/stores/modules-resource-management/login.ts new file mode 100644 index 000000000..3aea0863a --- /dev/null +++ b/ui/src/stores/modules-resource-management/login.ts @@ -0,0 +1,51 @@ +import {defineStore} from 'pinia' +import {type Ref} from 'vue' +import loginApi from '@/api/user/login' +import type {LoginRequest} from '@/api/type/login' +import useUserStore from '@/stores/modules/user' + +const useLoginStore = defineStore('log', { + state: () => ({ + token: '', + userAccessToken: '', + }), + actions: { + getToken(): string | null { + if (this.token) { + return this.token + } + const user = useUserStore() + return user.userType === 1 ? localStorage.getItem('token') : this.getAccessToken() + }, + getAccessToken() { + const token = sessionStorage.getItem(`${this.userAccessToken}-accessToken`) + if (token) { + return token + } + const local_token = localStorage.getItem(`${token}-accessToken`) + if (local_token) { + return local_token + } + return localStorage.getItem(`accessToken`) + }, + + async asyncLogin(data: LoginRequest, loading?: Ref) { + return loginApi.login(data).then((ok) => { + this.token = ok?.data?.token + localStorage.setItem('token', ok?.data?.token) + const user = useUserStore() + return user.profile(loading) + }) + }, + async asyncLdapLogin(data: LoginRequest, loading?: Ref) { + return loginApi.ldapLogin(data).then((ok) => { + this.token = ok?.data?.token + localStorage.setItem('token', ok?.data?.token) + const user = useUserStore() + return user.profile(loading) + }) + }, + }, +}) + +export default useLoginStore diff --git a/ui/src/stores/modules-resource-management/model.ts b/ui/src/stores/modules-resource-management/model.ts new file mode 100644 index 000000000..678d34462 --- /dev/null +++ b/ui/src/stores/modules-resource-management/model.ts @@ -0,0 +1,35 @@ +import {defineStore} from 'pinia' +import {type Ref} from 'vue' +import ModelApi from '@/api/resource-management/model' +import ProviderApi from '@/api/resource-management/provider' +import type {ListModelRequest} from '@/api/type/model' + +const useModelStore = defineStore('mod', { + state: () => ({}), + actions: { + async asyncGetModel(data?: ListModelRequest, loading?: Ref) { + return new Promise((resolve, reject) => { + ModelApi.getModel(data, loading) + .then((res) => { + resolve(res) + }) + .catch((error) => { + reject(error) + }) + }) + }, + async asyncGetProvider(loading?: Ref) { + return new Promise((resolve, reject) => { + ProviderApi.getProvider(loading) + .then((res) => { + resolve(res) + }) + .catch((error) => { + reject(error) + }) + }) + }, + }, +}) + +export default useModelStore diff --git a/ui/src/stores/modules-resource-management/paragraph.ts b/ui/src/stores/modules-resource-management/paragraph.ts new file mode 100644 index 000000000..5cc792818 --- /dev/null +++ b/ui/src/stores/modules-resource-management/paragraph.ts @@ -0,0 +1,91 @@ +import { defineStore } from 'pinia' +import paragraphApi from '@/api/resource-management/paragraph' +import type { Ref } from 'vue' + +const useParagraphStore = defineStore('paragra', { + state: () => ({}), + actions: { + async asyncPutParagraph( + knowledgeId: string, + documentId: string, + paragraphId: string, + data: any, + loading?: Ref, + ) { + return new Promise((resolve, reject) => { + paragraphApi + .putParagraph(knowledgeId, documentId, paragraphId, data, loading) + .then((data) => { + resolve(data) + }) + .catch((error) => { + reject(error) + }) + }) + }, + + async asyncDelParagraph( + knowledgeId: string, + documentId: string, + paragraphId: string, + loading?: Ref, + ) { + return new Promise((resolve, reject) => { + paragraphApi + .delParagraph(knowledgeId, documentId, paragraphId, loading) + .then((data) => { + resolve(data) + }) + .catch((error) => { + reject(error) + }) + }) + }, + async asyncDisassociationProblem( + knowledgeId: string, + documentId: string, + paragraphId: string, + problemId: string, + loading?: Ref, + ) { + return new Promise((resolve, reject) => { + const obj = { + paragraphId, + problemId, + } + paragraphApi + .putDisassociationProblem(knowledgeId, documentId, obj, loading) + .then((data) => { + resolve(data) + }) + .catch((error) => { + reject(error) + }) + }) + }, + async asyncAssociationProblem( + knowledgeId: string, + documentId: string, + paragraphId: string, + problemId: string, + loading?: Ref, + ) { + return new Promise((resolve, reject) => { + const obj = { + paragraphId, + problemId, + } + paragraphApi + .putAssociationProblem(knowledgeId, documentId, obj, loading) + .then((data) => { + resolve(data) + }) + .catch((error) => { + reject(error) + }) + }) + }, + }, +}) + +export default useParagraphStore diff --git a/ui/src/stores/modules-resource-management/problem.ts b/ui/src/stores/modules-resource-management/problem.ts new file mode 100644 index 000000000..451cb8e54 --- /dev/null +++ b/ui/src/stores/modules-resource-management/problem.ts @@ -0,0 +1,41 @@ +import { defineStore } from 'pinia' +import { type Ref } from 'vue' +import problemApi from '@/api/resource-management/problem' +import type { pageRequest } from '@/api/type/common' + +const useProblemStore = defineStore('probl', { + state: () => ({}), + actions: { + async asyncPostProblem(knowledgeId: string, data: any, loading?: Ref) { + return new Promise((resolve, reject) => { + problemApi + .postProblems(knowledgeId, data, loading) + .then((data) => { + resolve(data) + }) + .catch((error) => { + reject(error) + }) + }) + }, + async asyncGetProblem( + knowledgeId: string, + page: pageRequest, + param: any, + loading?: Ref, + ) { + return new Promise((resolve, reject) => { + problemApi + .getProblems(knowledgeId, page, param, loading) + .then((data) => { + resolve(data) + }) + .catch((error) => { + reject(error) + }) + }) + }, + }, +}) + +export default useProblemStore diff --git a/ui/src/stores/modules-resource-management/prompt.ts b/ui/src/stores/modules-resource-management/prompt.ts new file mode 100644 index 000000000..769783124 --- /dev/null +++ b/ui/src/stores/modules-resource-management/prompt.ts @@ -0,0 +1,37 @@ +import { defineStore } from 'pinia' +import { t } from '@/locales' +export interface promptTypes { + user: string + formValue: { model_id: string; prompt: string } +} + +const usePromptStore = defineStore('prom', { + state: (): promptTypes[] => JSON.parse(localStorage.getItem('PROMPT_CACHE') || '[]'), + actions: { + save(user: string, formValue: any) { + this.$state.forEach((item: any, index: number) => { + if (item.user === user) { + this.$state.splice(index, 1) + } + }) + this.$state.push({ user, formValue }) + localStorage.setItem('PROMPT_CACHE', JSON.stringify(this.$state)) + }, + get(user: string) { + for (let i = 0; i < this.$state.length; i++) { + if (this.$state[i].user === user) { + return this.$state[i].formValue + } + } + return { + model_id: '', + prompt: + t('views.document.generateQuestion.prompt1', { data: '{data}' }) + + '' + + t('views.document.generateQuestion.prompt2'), + } + }, + }, +}) + +export default usePromptStore diff --git a/ui/src/views/resource-management/document/UploadDocument.vue b/ui/src/views/resource-management/document/UploadDocument.vue new file mode 100644 index 000000000..de0060f63 --- /dev/null +++ b/ui/src/views/resource-management/document/UploadDocument.vue @@ -0,0 +1,215 @@ + + + diff --git a/ui/src/views/resource-management/document/component/EmbeddingContentDialog.vue b/ui/src/views/resource-management/document/component/EmbeddingContentDialog.vue new file mode 100644 index 000000000..1aa740d6f --- /dev/null +++ b/ui/src/views/resource-management/document/component/EmbeddingContentDialog.vue @@ -0,0 +1,48 @@ + + + diff --git a/ui/src/views/resource-management/document/component/ImportDocumentDialog.vue b/ui/src/views/resource-management/document/component/ImportDocumentDialog.vue new file mode 100644 index 000000000..0b79da414 --- /dev/null +++ b/ui/src/views/resource-management/document/component/ImportDocumentDialog.vue @@ -0,0 +1,233 @@ + + + diff --git a/ui/src/views/resource-management/document/component/SelectKnowledgeDialog.vue b/ui/src/views/resource-management/document/component/SelectKnowledgeDialog.vue new file mode 100644 index 000000000..05eb55bfa --- /dev/null +++ b/ui/src/views/resource-management/document/component/SelectKnowledgeDialog.vue @@ -0,0 +1,119 @@ + + + diff --git a/ui/src/views/resource-management/document/component/Status.vue b/ui/src/views/resource-management/document/component/Status.vue new file mode 100644 index 000000000..a600730bc --- /dev/null +++ b/ui/src/views/resource-management/document/component/Status.vue @@ -0,0 +1,87 @@ + + + diff --git a/ui/src/views/resource-management/document/component/StatusTable.vue b/ui/src/views/resource-management/document/component/StatusTable.vue new file mode 100644 index 000000000..3f9a9b4ad --- /dev/null +++ b/ui/src/views/resource-management/document/component/StatusTable.vue @@ -0,0 +1,109 @@ + + + diff --git a/ui/src/views/resource-management/document/index.vue b/ui/src/views/resource-management/document/index.vue new file mode 100644 index 000000000..0fa18692e --- /dev/null +++ b/ui/src/views/resource-management/document/index.vue @@ -0,0 +1,1011 @@ + + + diff --git a/ui/src/views/resource-management/document/upload/ResultSuccess.vue b/ui/src/views/resource-management/document/upload/ResultSuccess.vue new file mode 100644 index 000000000..5227b2c13 --- /dev/null +++ b/ui/src/views/resource-management/document/upload/ResultSuccess.vue @@ -0,0 +1,98 @@ + + + diff --git a/ui/src/views/resource-management/document/upload/SetRules.vue b/ui/src/views/resource-management/document/upload/SetRules.vue new file mode 100644 index 000000000..aff761040 --- /dev/null +++ b/ui/src/views/resource-management/document/upload/SetRules.vue @@ -0,0 +1,283 @@ + + + diff --git a/ui/src/views/resource-management/document/upload/UploadComponent.vue b/ui/src/views/resource-management/document/upload/UploadComponent.vue new file mode 100644 index 000000000..12534c14c --- /dev/null +++ b/ui/src/views/resource-management/document/upload/UploadComponent.vue @@ -0,0 +1,327 @@ + + + diff --git a/ui/src/views/resource-management/hit-test/index.vue b/ui/src/views/resource-management/hit-test/index.vue new file mode 100644 index 000000000..ae49d575e --- /dev/null +++ b/ui/src/views/resource-management/hit-test/index.vue @@ -0,0 +1,434 @@ + + + diff --git a/ui/src/views/resource-management/knowledge/ImportDocumentKnowledge.vue b/ui/src/views/resource-management/knowledge/ImportDocumentKnowledge.vue new file mode 100644 index 000000000..a2d0abc42 --- /dev/null +++ b/ui/src/views/resource-management/knowledge/ImportDocumentKnowledge.vue @@ -0,0 +1,290 @@ + + + diff --git a/ui/src/views/resource-management/knowledge/KnowledgeSetting.vue b/ui/src/views/resource-management/knowledge/KnowledgeSetting.vue new file mode 100644 index 000000000..dbe67b418 --- /dev/null +++ b/ui/src/views/resource-management/knowledge/KnowledgeSetting.vue @@ -0,0 +1,285 @@ + + + diff --git a/ui/src/views/resource-management/knowledge/component/BaseForm.vue b/ui/src/views/resource-management/knowledge/component/BaseForm.vue new file mode 100644 index 000000000..db0c53aa1 --- /dev/null +++ b/ui/src/views/resource-management/knowledge/component/BaseForm.vue @@ -0,0 +1,147 @@ + + + diff --git a/ui/src/views/resource-management/knowledge/component/EditParagraphDialog.vue b/ui/src/views/resource-management/knowledge/component/EditParagraphDialog.vue new file mode 100644 index 000000000..785af4422 --- /dev/null +++ b/ui/src/views/resource-management/knowledge/component/EditParagraphDialog.vue @@ -0,0 +1,135 @@ + + + diff --git a/ui/src/views/resource-management/knowledge/component/ParagraphList.vue b/ui/src/views/resource-management/knowledge/component/ParagraphList.vue new file mode 100644 index 000000000..ad92f553b --- /dev/null +++ b/ui/src/views/resource-management/knowledge/component/ParagraphList.vue @@ -0,0 +1,109 @@ + + + diff --git a/ui/src/views/resource-management/knowledge/component/ParagraphPreview.vue b/ui/src/views/resource-management/knowledge/component/ParagraphPreview.vue new file mode 100644 index 000000000..ae780c017 --- /dev/null +++ b/ui/src/views/resource-management/knowledge/component/ParagraphPreview.vue @@ -0,0 +1,70 @@ + + + diff --git a/ui/src/views/resource-management/knowledge/component/SyncWebDialog.vue b/ui/src/views/resource-management/knowledge/component/SyncWebDialog.vue new file mode 100644 index 000000000..ba17f4b4e --- /dev/null +++ b/ui/src/views/resource-management/knowledge/component/SyncWebDialog.vue @@ -0,0 +1,87 @@ + + + diff --git a/ui/src/views/resource-management/knowledge/create-component/CreateKnowledgeDialog.vue b/ui/src/views/resource-management/knowledge/create-component/CreateKnowledgeDialog.vue new file mode 100644 index 000000000..740224758 --- /dev/null +++ b/ui/src/views/resource-management/knowledge/create-component/CreateKnowledgeDialog.vue @@ -0,0 +1,70 @@ + + + diff --git a/ui/src/views/resource-management/knowledge/create-component/CreateLarkKnowledgeDialog.vue b/ui/src/views/resource-management/knowledge/create-component/CreateLarkKnowledgeDialog.vue new file mode 100644 index 000000000..0e231d2f3 --- /dev/null +++ b/ui/src/views/resource-management/knowledge/create-component/CreateLarkKnowledgeDialog.vue @@ -0,0 +1,161 @@ + + + diff --git a/ui/src/views/resource-management/knowledge/create-component/CreateWebKnowledgeDialog.vue b/ui/src/views/resource-management/knowledge/create-component/CreateWebKnowledgeDialog.vue new file mode 100644 index 000000000..010971bc5 --- /dev/null +++ b/ui/src/views/resource-management/knowledge/create-component/CreateWebKnowledgeDialog.vue @@ -0,0 +1,120 @@ + + + diff --git a/ui/src/views/resource-management/knowledge/index.vue b/ui/src/views/resource-management/knowledge/index.vue new file mode 100644 index 000000000..f3fce075d --- /dev/null +++ b/ui/src/views/resource-management/knowledge/index.vue @@ -0,0 +1,473 @@ + + + + + diff --git a/ui/src/views/resource-management/paragraph/component/ParagraphCard.vue b/ui/src/views/resource-management/paragraph/component/ParagraphCard.vue new file mode 100644 index 000000000..633854b3f --- /dev/null +++ b/ui/src/views/resource-management/paragraph/component/ParagraphCard.vue @@ -0,0 +1,193 @@ + + + diff --git a/ui/src/views/resource-management/paragraph/component/ParagraphDialog.vue b/ui/src/views/resource-management/paragraph/component/ParagraphDialog.vue new file mode 100644 index 000000000..1fa27e517 --- /dev/null +++ b/ui/src/views/resource-management/paragraph/component/ParagraphDialog.vue @@ -0,0 +1,152 @@ + + + diff --git a/ui/src/views/resource-management/paragraph/component/ParagraphForm.vue b/ui/src/views/resource-management/paragraph/component/ParagraphForm.vue new file mode 100644 index 000000000..70d500e50 --- /dev/null +++ b/ui/src/views/resource-management/paragraph/component/ParagraphForm.vue @@ -0,0 +1,174 @@ + + + diff --git a/ui/src/views/resource-management/paragraph/component/ProblemComponent.vue b/ui/src/views/resource-management/paragraph/component/ProblemComponent.vue new file mode 100644 index 000000000..a3d765671 --- /dev/null +++ b/ui/src/views/resource-management/paragraph/component/ProblemComponent.vue @@ -0,0 +1,200 @@ + + + diff --git a/ui/src/views/resource-management/paragraph/component/SelectDocumentDialog.vue b/ui/src/views/resource-management/paragraph/component/SelectDocumentDialog.vue new file mode 100644 index 000000000..a1b8ba227 --- /dev/null +++ b/ui/src/views/resource-management/paragraph/component/SelectDocumentDialog.vue @@ -0,0 +1,158 @@ + + + diff --git a/ui/src/views/resource-management/paragraph/index.vue b/ui/src/views/resource-management/paragraph/index.vue new file mode 100644 index 000000000..aaa8f535c --- /dev/null +++ b/ui/src/views/resource-management/paragraph/index.vue @@ -0,0 +1,377 @@ + + + diff --git a/ui/src/views/resource-management/problem/component/CreateProblemDialog.vue b/ui/src/views/resource-management/problem/component/CreateProblemDialog.vue new file mode 100644 index 000000000..0d9cd72d0 --- /dev/null +++ b/ui/src/views/resource-management/problem/component/CreateProblemDialog.vue @@ -0,0 +1,92 @@ + + + diff --git a/ui/src/views/resource-management/problem/component/DetailProblemDrawer.vue b/ui/src/views/resource-management/problem/component/DetailProblemDrawer.vue new file mode 100644 index 000000000..8a17441d7 --- /dev/null +++ b/ui/src/views/resource-management/problem/component/DetailProblemDrawer.vue @@ -0,0 +1,206 @@ + + + + diff --git a/ui/src/views/resource-management/problem/component/RelateProblemDialog.vue b/ui/src/views/resource-management/problem/component/RelateProblemDialog.vue new file mode 100644 index 000000000..02e20fc38 --- /dev/null +++ b/ui/src/views/resource-management/problem/component/RelateProblemDialog.vue @@ -0,0 +1,330 @@ + + + diff --git a/ui/src/views/resource-management/problem/index.vue b/ui/src/views/resource-management/problem/index.vue new file mode 100644 index 000000000..b7d71910a --- /dev/null +++ b/ui/src/views/resource-management/problem/index.vue @@ -0,0 +1,388 @@ + + + diff --git a/ui/src/views/resource-management/tool/ToolDebugDrawer.vue b/ui/src/views/resource-management/tool/ToolDebugDrawer.vue new file mode 100644 index 000000000..371df2b8f --- /dev/null +++ b/ui/src/views/resource-management/tool/ToolDebugDrawer.vue @@ -0,0 +1,184 @@ + + + + diff --git a/ui/src/views/resource-management/tool/ToolFormDrawer.vue b/ui/src/views/resource-management/tool/ToolFormDrawer.vue new file mode 100644 index 000000000..7a31b08b2 --- /dev/null +++ b/ui/src/views/resource-management/tool/ToolFormDrawer.vue @@ -0,0 +1,449 @@ + + + + diff --git a/ui/src/views/resource-management/tool/component/AddInternalFunctionDialog.vue b/ui/src/views/resource-management/tool/component/AddInternalFunctionDialog.vue new file mode 100644 index 000000000..312fc6e98 --- /dev/null +++ b/ui/src/views/resource-management/tool/component/AddInternalFunctionDialog.vue @@ -0,0 +1,88 @@ + + + diff --git a/ui/src/views/resource-management/tool/component/EditAvatarDialog.vue b/ui/src/views/resource-management/tool/component/EditAvatarDialog.vue new file mode 100644 index 000000000..b8fadc982 --- /dev/null +++ b/ui/src/views/resource-management/tool/component/EditAvatarDialog.vue @@ -0,0 +1,120 @@ + + + diff --git a/ui/src/views/resource-management/tool/component/FieldFormDialog.vue b/ui/src/views/resource-management/tool/component/FieldFormDialog.vue new file mode 100644 index 000000000..900182d8b --- /dev/null +++ b/ui/src/views/resource-management/tool/component/FieldFormDialog.vue @@ -0,0 +1,116 @@ + + + diff --git a/ui/src/views/resource-management/tool/component/InitParamDrawer.vue b/ui/src/views/resource-management/tool/component/InitParamDrawer.vue new file mode 100644 index 000000000..1cd880dd9 --- /dev/null +++ b/ui/src/views/resource-management/tool/component/InitParamDrawer.vue @@ -0,0 +1,87 @@ + + + + diff --git a/ui/src/views/resource-management/tool/component/InternalDescDrawer.vue b/ui/src/views/resource-management/tool/component/InternalDescDrawer.vue new file mode 100644 index 000000000..ae7a74af7 --- /dev/null +++ b/ui/src/views/resource-management/tool/component/InternalDescDrawer.vue @@ -0,0 +1,99 @@ + + + + diff --git a/ui/src/views/resource-management/tool/component/UserFieldFormDialog.vue b/ui/src/views/resource-management/tool/component/UserFieldFormDialog.vue new file mode 100644 index 000000000..1131fc625 --- /dev/null +++ b/ui/src/views/resource-management/tool/component/UserFieldFormDialog.vue @@ -0,0 +1,169 @@ + + + diff --git a/ui/src/views/resource-management/tool/index.vue b/ui/src/views/resource-management/tool/index.vue new file mode 100644 index 000000000..479ebce0f --- /dev/null +++ b/ui/src/views/resource-management/tool/index.vue @@ -0,0 +1,533 @@ + + + + + diff --git a/ui/src/views/shared/knowledge-shared/SharedWorkspace.vue b/ui/src/views/shared/knowledge-shared/SharedWorkspace.vue index 051a644f8..407b9d208 100644 --- a/ui/src/views/shared/knowledge-shared/SharedWorkspace.vue +++ b/ui/src/views/shared/knowledge-shared/SharedWorkspace.vue @@ -80,9 +80,6 @@ @click=" router.push({ path: `/knowledge/system/${item.id}/documentShared`, - query: { - from: 'shared', - }, }) " > diff --git a/ui/src/views/shared/knowledge-shared/create-component/CreateWebKnowledgeDialog.vue b/ui/src/views/shared/knowledge-shared/create-component/CreateWebKnowledgeDialog.vue index 772b80172..cc9fc8a61 100644 --- a/ui/src/views/shared/knowledge-shared/create-component/CreateWebKnowledgeDialog.vue +++ b/ui/src/views/shared/knowledge-shared/create-component/CreateWebKnowledgeDialog.vue @@ -105,9 +105,6 @@ const submitHandle = async () => { MsgSuccess(t('common.createSuccess')) router.push({ path: `/knowledge/system/${res.data.id}/documentShared`, - query: { - from: 'shared', - }, }) emit('refresh') }) diff --git a/ui/src/views/shared/knowledge-shared/index.vue b/ui/src/views/shared/knowledge-shared/index.vue index 0183dfc2a..394fafc91 100644 --- a/ui/src/views/shared/knowledge-shared/index.vue +++ b/ui/src/views/shared/knowledge-shared/index.vue @@ -171,9 +171,6 @@ @click=" router.push({ path: `/knowledge/system/${item.id}/documentShared`, - query: { - from: 'shared', - }, }) " > @@ -240,9 +237,6 @@ @click.stop=" router.push({ path: `/knowledge/system/${item.id}/settingShared`, - query: { - from: 'shared', - }, }) " > diff --git a/ui/src/views/shared/model-shared/SharedWorkspace.vue b/ui/src/views/shared/model-shared/SharedWorkspace.vue index 79535805d..e6af4ffae 100644 --- a/ui/src/views/shared/model-shared/SharedWorkspace.vue +++ b/ui/src/views/shared/model-shared/SharedWorkspace.vue @@ -107,7 +107,7 @@ import ProviderApi from '@/api/shared/provider' import ModelApi from '@/api/shared/model' import ModelWorkspaceApi from '@/api/shared/workspace' import type { Provider, Model } from '@/api/type/model' -import ModelCard from '@/views/shared/model-shared/component/ModelCard.vue' +import ModelCard from '@/views/shared/model-shared/component/ModelCardSharedWorkspace.vue' import ProviderComponent from '@/views/shared/model-shared/component/Provider.vue' import { splitArray } from '@/utils/common' import { modelTypeList, allObj } from '@/views/shared/model-shared/component/data' diff --git a/ui/src/views/shared/model-shared/component/ModelCard.vue b/ui/src/views/shared/model-shared/component/ModelCard.vue index 25c4de780..a42f9ae48 100644 --- a/ui/src/views/shared/model-shared/component/ModelCard.vue +++ b/ui/src/views/shared/model-shared/component/ModelCard.vue @@ -61,9 +61,69 @@ + + - + +