diff --git a/ui/src/api/API_README.md b/ui/src/api/API_README.md index 2b3fa70517d..f62732e46a6 100644 --- a/ui/src/api/API_README.md +++ b/ui/src/api/API_README.md @@ -164,6 +164,16 @@ v3 编辑表单提交 `{ name, description }`,标题上限 64、更新说明 `/system/shared/model` 查询共享模型,为每项标记 `source: 'shared'`;不查询工作空间模型。 共享工作流、代码生成和默认模型设置统一调用此方法,模型管理继续使用 `getModelList`。 +### 资源选择弹窗查询 + +三个资源选择弹窗按 Workspace、System 资源管理和 System 共享资源选择接口,不配置 +Workspace 共享页面来源分支,不调用 Workspace Shared API。仅普通工作空间显示文件夹,不显示共享目录;其他范围不显示或查询文件夹。 +System 资源管理智能体提供 `getAllApplication`(`/system/resource/application`),System 共享 +不提供智能体选择。System 共享知识库提供 `getAllKnowledge`(`/system/shared/knowledge`), +与 System 资源管理知识库的同名方法均直接返回全量列表。工具选择统一调用对应范围的 +`getAllTool`:System 资源管理请求 `/system/resource/tool`,System 共享请求 `/system/shared/tool`, +返回 `ToolItem[]`,不附带工作空间文件夹筛选。`getToolListWithShared` 保留用于其他包含共享工具的选项查询。 + ### 工具列表查询 `workspace/tool/tool.ts` 的 `getAllTool(query)` 查询支持 `folder_id` 筛选的工作空间工具 @@ -629,7 +639,7 @@ Workspace、System 资源管理及 System 共享资源的 `knowledge.ts` 提供 `DocumentItem`。名称上限 128 字符;共享文档仍只提供查询。 `workspace/knowledge/document.ts` 同时维护文档启停、删除、召回设置、向量化、分词索引、 -任务取消、生成问题、迁移、同步、导出、原文件下载/替换及标签关联。 +任务取消、生成问题、迁移、同步、导出、原文件下载/替换。 批量任务沿用 v2 的 `id_list` / `state_list`;生成问题使用 `document_id_list`, 添加标签使用 `document_ids` / `tag_ids`,迁移和批量导出直接提交文档 ID 数组。 文档导出分别提供四个接口,不以单元素批量请求代替单项接口: @@ -654,6 +664,15 @@ Workspace、System 资源管理及 System 共享资源的 `knowledge.ts` 提供 全部使用 PUT;单项不传请求体,批量提交 `{ id_list }`。飞书接口需部署环境支持。 共享文档 API 继续仅提供查询,不增加写入方法。 +`system/resource-management/knowledge/document.ts` 与 `system/shared-resources/knowledge/document.ts` +提供与 `workspace/knowledge/document.ts` 相同的完整文档接口集合,方法名、参数、请求体和返回类型保持一致。 +普通文档前缀分别为 `/system/resource/knowledge//document` 和 +`/system/shared/knowledge//document`,不读取工作空间 ID。 +飞书接口在各自的知识库资源前缀后追加 `/lark/`;模板下载使用各自前缀下的 +`/document/table_template/export` 和 `/document/template/export`,不包含知识库 ID。 +系统路径组织沿用 v2,新增的 v3 文件 ID 导入和策略协议需对应部署环境支持,尚未联调。 +文档标签关联接口统一维护在各范围的 `tags.ts`。四套现有 Document API 由知识库详情 context 按范围装配。 + `workspace/knowledge/document.ts` 维护文档分页查询,路径为 `/workspace//knowledge//document//`。 `putBatchCreateDocuments(knowledgeId, documents)` 统一通过 PUT `document/batch_create` 批量创建文档, @@ -698,13 +717,16 @@ Workspace、System 资源管理及 System 共享资源的 `knowledge.ts` 提供 不声明多行编辑接口,也不组合旧接口模拟多行保存。 `system/resource-management/knowledge/tags.ts` 与 `system/shared-resources/knowledge/tags.ts` -提供与普通 Workspace 相同的七个标签接口,参数、请求体和返回类型保持一致,仅资源前缀分别为 -`/system/resource/knowledge//tags` 和 `/system/shared/knowledge//tags`,不读取工作空间 ID。 -两套系统标签 API 暂未接入知识库详情 context;Workspace 共享标签 API 保持现有只读查询,不补写入方法。 - -文档与标签的关联由 `workspace/knowledge/document.ts` 维护,不使用标签删除接口代替取消关联。 +提供与普通 Workspace 相同的七个标签接口及四个文档标签关联接口,参数、请求体和返回类型保持一致。 +公共前缀分别为 `/system/resource/knowledge/` 和 `/system/shared/knowledge/`, +不读取工作空间 ID;各接口追加对应的 `tags`、`document` 或 `tag` 路径。 +具体接口需部署环境支持。四套现有标签 API 由知识库详情 context 按范围装配; +Workspace 共享标签 API 保持现有只读查询,不补写入方法。 + +文档与标签的关联由 `workspace/knowledge/tags.ts` 维护,不使用标签删除接口代替取消关联。 +该模块公共前缀为知识库路径,各接口按后端协议追加 `tags`、`document` 或 `tag`,不因文件归属改变请求地址。 `getDocumentTags(knowledgeId, documentId, query?)` 查询 `document//tags`,返回分组标签,支持 `query.name` 搜索; -`postAddDocumentTags` POST 到 `document/batch_add_tag`,提交 `{ document_ids, tag_ids }`; +`postBatchAddDocumentTags` POST 到 `document/batch_add_tag`,提交 `{ document_ids, tag_ids }`; `putDeleteDocumentTags` PUT 到 `document//tags/batch_delete`,直接提交标签 ID 数组。 `putUnlinkTagDocuments` PUT 到知识库下的 `tag//docs_delete`,提交 `{ id_list: documentIds }`, 用于取消同一标签与单个或多个文档的关联。 diff --git a/ui/src/api/admin/system/resource-management/application/application.ts b/ui/src/api/admin/system/resource-management/application/application.ts index 5c1a6630a5a..e2cd5044b96 100644 --- a/ui/src/api/admin/system/resource-management/application/application.ts +++ b/ui/src/api/admin/system/resource-management/application/application.ts @@ -4,12 +4,14 @@ import type { ApplicationDetail, Dict } from '@/api/types' const prefix = '/system/resource/application' +/** 获取 System 资源管理不分页的智能体列表。 */ +const getAllApplication = (query?: Dict) => get(prefix, query) + /** 获取 System 资源管理智能体分页列表。 */ const getApplicationPage = (page: ParamsPage, query?: Dict) => { return get>(`${prefix}/${page.currentPage}/${page.pageSize}`, query) } - /** 删除系统资源管理智能体。 */ const deleteApplication = (applicationId: string) => { return del(`${prefix}/${applicationId}`) @@ -21,6 +23,7 @@ const exportApplication = (applicationId: string, applicationName: string) => { } export default { + getAllApplication, getApplicationPage, deleteApplication, exportApplication, diff --git a/ui/src/api/admin/system/resource-management/knowledge/document.ts b/ui/src/api/admin/system/resource-management/knowledge/document.ts new file mode 100644 index 00000000000..b31739794c8 --- /dev/null +++ b/ui/src/api/admin/system/resource-management/knowledge/document.ts @@ -0,0 +1,204 @@ +import { del, downloadRequest, get, getExportFile, post, postExportExcel, put } from '@/api/admin/core/request' +import type { ParamsPage, ResponsePage } from '@/api/admin/core/types' +import type { + Dict, + DocumentGeneratePayload, + DocumentFileImportPayload, + DocumentImportPayload, + DocumentSplitResult, + DocumentStrategy, + DocumentItem, + DocumentQuickCreatePayload, + DocumentSettingPayload, + DocumentTaskState, + DocumentTaskType, + DocumentUpdatePayload, + WebDocumentImportPayload, + LarkDocumentList, + LarkDocumentImportPayload, +} from '@/api/types' + +const getPrefix = (knowledgeId: string) => `/system/resource/knowledge/${knowledgeId}/document` + +/** 获取知识库不分页的文档选项。 */ +const getAllDocuments = (knowledgeId: string) => get(getPrefix(knowledgeId)) + +/** 获取文档分页列表,支持名称和创建者筛选。 */ +const getDocumentPage = (knowledgeId: string, page: ParamsPage, query?: Dict) => + get>(`${getPrefix(knowledgeId)}/${page.currentPage}/${page.pageSize}`, query) + +/** 获取单个文档详情,支持直接访问分段页。 */ +const getDocumentDetail = (knowledgeId: string, documentId: string) => get(`${getPrefix(knowledgeId)}/${documentId}`) + +/** 批量创建空白文档或导入text文档。 */ +const putBatchCreateDocuments = (knowledgeId: string, documents: DocumentQuickCreatePayload[] | DocumentImportPayload[]) => + put(`${getPrefix(knowledgeId)}/batch_create`, documents) + +/** 分段预览 */ +const postSplitDocuments = (knowledgeId: string, files: File[], strategy: DocumentStrategy) => { + const data = new FormData() + files.forEach((file) => data.append('file', file)) + data.append('doc_strategy', JSON.stringify(strategy)) + return post(`${getPrefix(knowledgeId)}/split`, data) +} + +/** 复用已上传文件,按处理策略直接解析并写入知识库。 */ +const postImportTextDocuments = (knowledgeId: string, fileIds: string[], strategy: DocumentStrategy) => + post(`${getPrefix(knowledgeId)}/import`, { file_id_list: fileIds, doc_strategy: strategy }) + +/** 从已上传表格创建文档,每个 sheet 由服务端创建独立文档。 */ +const postImportTableDocumentsByFileIds = (knowledgeId: string, fileIds: string[]) => + post(`${getPrefix(knowledgeId)}/table_by_file_ids`, { file_id_list: fileIds }) + +/** 从已上传文件创建 QA 问答对文档。 */ +const postImportQADocumentsByFileIds = (knowledgeId: string, fileIds: string[]) => + post(`${getPrefix(knowledgeId)}/qa_by_file_ids`, { file_id_list: fileIds }) + +/** 按地址导入 Web 文档并应用文档处理策略。 */ +const postWebDocument = (knowledgeId: string, payload: WebDocumentImportPayload) => + post(`${getPrefix(knowledgeId)}/web`, payload) + +/** 查询飞书文件夹中的文件,支持分页加载。 */ +const getLarkDocumentList = (knowledgeId: string, folderToken: string, query: { page_token?: string } = {}) => + post<{ page_token?: string }, LarkDocumentList>(`/system/resource/knowledge/lark/${knowledgeId}/${folderToken}/doc_list`, query) + +/** 导入所选飞书文档,沿用飞书扩展接口。 */ +const postImportLarkDocuments = (knowledgeId: string, documents: LarkDocumentImportPayload[]) => + post(`/system/resource/knowledge/lark/${knowledgeId}/import`, documents) + +/** 下载表格模板。 */ +const exportTableDocumentTemplate = (format: 'excel' | 'csv') => + getExportFile(`${format}-template.${format === 'excel' ? 'xlsx' : 'csv'}`, '/system/resource/knowledge/document/table_template/export', { + type: format, + }) + +/** 下载 QA 模板。 */ +const exportQADocumentTemplate = (format: 'excel' | 'csv') => + getExportFile(`${format}-template.${format === 'excel' ? 'xlsx' : 'csv'}`, '/system/resource/knowledge/document/template/export', { type: format }) + +/** 更新文档名称、启用状态或设置,返回保存后的文档。 */ +const putDocument = (knowledgeId: string, documentId: string, data: DocumentUpdatePayload) => + put(`${getPrefix(knowledgeId)}/${documentId}`, data) + +/** 删除单个文档。 */ +const deleteDocument = (knowledgeId: string, documentId: string) => del(`${getPrefix(knowledgeId)}/${documentId}`) + +/** 批量删除文档。 */ +const putBatchDeleteDocuments = (knowledgeId: string, documentIds: string[]) => + put(`${getPrefix(knowledgeId)}/batch_delete`, { id_list: documentIds }) + +/** 单个文档向量化。 */ +const putDocumentRefresh = (knowledgeId: string, documentId: string, stateList: DocumentTaskState[]) => + put(`${getPrefix(knowledgeId)}/${documentId}/refresh`, { state_list: stateList }) + +/** 批量文档向量化。 */ +const putBatchRefreshDocuments = (knowledgeId: string, documentIds: string[], stateList: DocumentTaskState[]) => + put(`${getPrefix(knowledgeId)}/batch_refresh`, { id_list: documentIds, state_list: stateList }) + +/** 单个文档分词索引。 */ +const putDocumentTokenize = (knowledgeId: string, documentId: string, stateList: DocumentTaskState[]) => + put(`${getPrefix(knowledgeId)}/${documentId}/tokenize`, { state_list: stateList }) + +/** 批量文档分词索引。 */ +const putBatchTokenizeDocuments = (knowledgeId: string, documentIds: string[], stateList: DocumentTaskState[]) => + put(`${getPrefix(knowledgeId)}/batch_tokenize`, { id_list: documentIds, state_list: stateList }) + +/** 单个/批量生成关联问题。 */ +const putGenerateDocumentQuestions = (knowledgeId: string, data: DocumentGeneratePayload) => + put(`${getPrefix(knowledgeId)}/batch_generate_related`, data) + +/** 单个取消文档任务。 */ +const putCancelTask = (knowledgeId: string, documentId: string, taskType: DocumentTaskType) => + put(`${getPrefix(knowledgeId)}/${documentId}/cancel_task`, { type: taskType }) + +/** 批量取消指定文档任务。 */ +const putBatchCancelDocumentTask = (knowledgeId: string, documentIds: string[], taskType: DocumentTaskType) => + put(`${getPrefix(knowledgeId)}/batch_cancel_task`, { id_list: documentIds, type: taskType }) + +/** 同步单个 Web 文档。 */ +const putDocumentSync = (knowledgeId: string, documentId: string) => put(`${getPrefix(knowledgeId)}/${documentId}/sync`) + +/** 批量同步 Web 文档。 */ +const putMulSyncDocument = (knowledgeId: string, documentIds: string[]) => + put<{ id_list: string[] }, boolean>(`${getPrefix(knowledgeId)}/batch_sync`, { id_list: documentIds }) + +/** 同步单个飞书文档。 */ +const putLarkDocumentSync = (knowledgeId: string, documentId: string) => + put(`/system/resource/knowledge/lark/${knowledgeId}/document/${documentId}/sync`) + +/** 批量同步飞书文档。 */ +const putMulLarkSyncDocument = (knowledgeId: string, documentIds: string[]) => + put<{ id_list: string[] }, boolean>(`/system/resource/knowledge/lark/${knowledgeId}/_batch`, { id_list: documentIds }) + +/** 批量文档设置。 */ +const putBatchDocumentSetting = (knowledgeId: string, documentIds: string[], data: DocumentSettingPayload) => + put(`${getPrefix(knowledgeId)}/batch_hit_handling`, { ...data, id_list: documentIds }) + +/** 批量/单个迁移至目标知识库。 */ +const putMigrateDocuments = (knowledgeId: string, targetKnowledgeId: string, documentIds: string[]) => + put(`${getPrefix(knowledgeId)}/migrate/${targetKnowledgeId}`, documentIds) + +/** 将单个文档导出为 Excel。 */ +const exportDocument = (knowledgeId: string, documentId: string, documentName: string) => + getExportFile(`${documentName.trim()}.xlsx`, `${getPrefix(knowledgeId)}/${documentId}/export`) + +/** 将选中文档批量导出为 Excel。 */ +const exportMulDocument = (knowledgeId: string, documentIds: string[], knowledgeName: string) => + postExportExcel(`${knowledgeName.trim()}.xlsx`, `${getPrefix(knowledgeId)}/batch_export`, undefined, documentIds) + +/** 将单个文档及图片导出为 ZIP。 */ +const exportDocumentZip = (knowledgeId: string, documentId: string, documentName: string) => + getExportFile(`${documentName.trim()}.zip`, `${getPrefix(knowledgeId)}/${documentId}/export_zip`) + +/** 将选中文档及图片批量导出为 ZIP。 */ +const exportMulDocumentZip = (knowledgeId: string, documentIds: string[], knowledgeName: string) => + downloadRequest(`${getPrefix(knowledgeId)}/batch_export_zip`, 'POST', documentIds, undefined, `${knowledgeName.trim()}.zip`) + +/** 下载文档原文件。 */ +const downloadDocumentSource = (knowledgeId: string, document: DocumentItem) => + getExportFile(document.name, `${getPrefix(knowledgeId)}/${document.id}/download_source_file`) + +/** 替换文档原文件。 */ +const postReplaceDocumentSource = (knowledgeId: string, documentId: string, file: File) => { + const data = new FormData() + data.append('file', file) + return post(`${getPrefix(knowledgeId)}/${documentId}/replace_source_file`, data) +} + +export default { + getAllDocuments, + getDocumentDetail, + getDocumentPage, + putBatchCreateDocuments, + postSplitDocuments, + postImportTextDocuments, + postImportTableDocumentsByFileIds, + postImportQADocumentsByFileIds, + postWebDocument, + getLarkDocumentList, + postImportLarkDocuments, + exportTableDocumentTemplate, + exportQADocumentTemplate, + putDocument, + deleteDocument, + putBatchDeleteDocuments, + putDocumentRefresh, + putBatchRefreshDocuments, + putDocumentTokenize, + putBatchTokenizeDocuments, + putCancelTask, + putBatchCancelDocumentTask, + putBatchDocumentSetting, + putGenerateDocumentQuestions, + putMigrateDocuments, + putDocumentSync, + putMulSyncDocument, + putLarkDocumentSync, + putMulLarkSyncDocument, + exportDocument, + exportMulDocument, + exportDocumentZip, + exportMulDocumentZip, + downloadDocumentSource, + postReplaceDocumentSource, +} diff --git a/ui/src/api/admin/system/resource-management/knowledge/knowledge.ts b/ui/src/api/admin/system/resource-management/knowledge/knowledge.ts index bb771bfc33e..d3a1b9fb0f8 100644 --- a/ui/src/api/admin/system/resource-management/knowledge/knowledge.ts +++ b/ui/src/api/admin/system/resource-management/knowledge/knowledge.ts @@ -29,6 +29,11 @@ const putKnowledge = (knowledgeId: string, payload: Partial) => { return put, KnowledgeItem>(`${prefix}/${knowledgeId}`, payload) } +/** 更新飞书知识库信息。 */ +const putLarkKnowledge = (knowledgeId: string, payload: Partial) => { + return put, KnowledgeItem>(`${prefix}/lark/${knowledgeId}`, payload) +} + /** 根据知识库中的分段生成关联问题。 */ const putGenerateKnowledgeQuestions = (knowledgeId: string, payload: KnowledgeGeneratePayload) => { return put(`${prefix}/${knowledgeId}/generate_related`, payload) @@ -83,6 +88,7 @@ export default { getKnowledgeDetail, getKnowledgePage, putKnowledge, + putLarkKnowledge, putReEmbeddingKnowledge, putGenerateKnowledgeQuestions, getKnowledgeMcpConfig, diff --git a/ui/src/api/admin/system/resource-management/knowledge/tags.ts b/ui/src/api/admin/system/resource-management/knowledge/tags.ts index e715356878c..adcb5bab693 100644 --- a/ui/src/api/admin/system/resource-management/knowledge/tags.ts +++ b/ui/src/api/admin/system/resource-management/knowledge/tags.ts @@ -1,34 +1,52 @@ import { del, get, getExportFile, post, put } from '@/api/admin/core/request' import type { Dict, KnowledgeTagGroup, KnowledgeTagPayload, KnowledgeTagUpdatePayload } from '@/api/types' -const getPrefix = (knowledgeId: string) => `/system/resource/knowledge/${knowledgeId}/tags` +const getPrefix = (knowledgeId: string) => `/system/resource/knowledge/${knowledgeId}` /** 获取知识库按标签名称分组的标签选项。 */ -const getKnowledgeTags = (knowledgeId: string, query?: Dict) => get(getPrefix(knowledgeId), query) +const getKnowledgeTags = (knowledgeId: string, query?: Dict) => get(`${getPrefix(knowledgeId)}/tags`, query) /** 创建知识库标签或为已有标签新增值。 */ -const postKnowledgeTags = (knowledgeId: string, tags: KnowledgeTagPayload[]) => post(getPrefix(knowledgeId), tags) +const postKnowledgeTags = (knowledgeId: string, tags: KnowledgeTagPayload[]) => + post(`${getPrefix(knowledgeId)}/tags`, tags) /** 重命名知识库标签或编辑单个标签值。 */ const putKnowledgeTag = (knowledgeId: string, tagId: string, tag: KnowledgeTagUpdatePayload) => - put(`${getPrefix(knowledgeId)}/${tagId}`, tag) + put(`${getPrefix(knowledgeId)}/tags/${tagId}`, tag) /** 删除整个标签分组或单个标签值。 */ const deleteKnowledgeTag = (knowledgeId: string, tagId: string, type: 'key' | 'one') => - del(`${getPrefix(knowledgeId)}/${tagId}/${type}`) + del(`${getPrefix(knowledgeId)}/tags/${tagId}/${type}`) /** 批量删除所选标签,直接提交标签 ID 数组。 */ -const putBatchDeleteKnowledgeTags = (knowledgeId: string, tagIds: string[]) => put(`${getPrefix(knowledgeId)}/batch_delete`, tagIds) +const putBatchDeleteKnowledgeTags = (knowledgeId: string, tagIds: string[]) => + put(`${getPrefix(knowledgeId)}/tags/batch_delete`, tagIds) /** 导入 Excel 中的知识库标签,重复标签组合由服务端跳过。 */ const postImportKnowledgeTags = (knowledgeId: string, file: File) => { const data = new FormData() data.append('file', file) - return post(`${getPrefix(knowledgeId)}/import`, data) + return post(`${getPrefix(knowledgeId)}/tags/import`, data) } /** 下载知识库标签导入模板。 */ -const exportKnowledgeTagTemplate = (knowledgeId: string) => getExportFile('标签模板.xlsx', `${getPrefix(knowledgeId)}/template/export`) +const exportKnowledgeTagTemplate = (knowledgeId: string) => getExportFile('标签模板.xlsx', `${getPrefix(knowledgeId)}/tags/template/export`) + +/** 查询文档当前标签。 */ +const getDocumentTags = (knowledgeId: string, documentId: string, query?: Dict) => + get(`${getPrefix(knowledgeId)}/document/${documentId}/tags`, query) + +/** 给指定文档批量添加已有标签。 */ +const postBatchAddDocumentTags = (knowledgeId: string, documentIds: string[], tagIds: string[]) => + post(`${getPrefix(knowledgeId)}/document/batch_add_tag`, { document_ids: documentIds, tag_ids: tagIds }) + +/** 从单个文档移除指定标签,不删除标签本身。 */ +const putDeleteDocumentTags = (knowledgeId: string, documentId: string, tagIds: string[]) => + put(`${getPrefix(knowledgeId)}/document/${documentId}/tags/batch_delete`, tagIds) + +/** 取消指定标签与单个或多个文档的关联。 */ +const putUnlinkTagDocuments = (knowledgeId: string, tagId: string, documentIds: string[]) => + put(`${getPrefix(knowledgeId)}/tag/${tagId}/docs_delete`, { id_list: documentIds }) export default { getKnowledgeTags, @@ -38,4 +56,8 @@ export default { putBatchDeleteKnowledgeTags, postImportKnowledgeTags, exportKnowledgeTagTemplate, + getDocumentTags, + postBatchAddDocumentTags, + putDeleteDocumentTags, + putUnlinkTagDocuments, } diff --git a/ui/src/api/admin/system/resource-management/tool/tool.ts b/ui/src/api/admin/system/resource-management/tool/tool.ts index 8076a54f872..0b2b57ebb58 100644 --- a/ui/src/api/admin/system/resource-management/tool/tool.ts +++ b/ui/src/api/admin/system/resource-management/tool/tool.ts @@ -5,6 +5,9 @@ import { ADMIN_API_BASE_PATH } from '@/api/constants' const prefix = '/system/resource/tool' +/** 获取 System 资源管理不分页的工具列表。 */ +const getAllTool = (query?: Dict) => get(prefix, query) + /** 获取当前系统范围可用的工具选项。 */ const getToolListWithShared = (query?: Dict) => get<{ tools: ToolItem[]; shared_tools: ToolItem[] }>(`${prefix}/tool_list`, query).then(({ tools, shared_tools }) => [...tools, ...shared_tools]) @@ -67,6 +70,7 @@ const postToolTestConnection = (payload: ToolPayload) => { } export default { + getAllTool, getToolListWithShared, getToolPage, exportTool, diff --git a/ui/src/api/admin/system/shared-resources/knowledge/document.ts b/ui/src/api/admin/system/shared-resources/knowledge/document.ts new file mode 100644 index 00000000000..f31ff05299e --- /dev/null +++ b/ui/src/api/admin/system/shared-resources/knowledge/document.ts @@ -0,0 +1,204 @@ +import { del, downloadRequest, get, getExportFile, post, postExportExcel, put } from '@/api/admin/core/request' +import type { ParamsPage, ResponsePage } from '@/api/admin/core/types' +import type { + Dict, + DocumentGeneratePayload, + DocumentFileImportPayload, + DocumentImportPayload, + DocumentSplitResult, + DocumentStrategy, + DocumentItem, + DocumentQuickCreatePayload, + DocumentSettingPayload, + DocumentTaskState, + DocumentTaskType, + DocumentUpdatePayload, + WebDocumentImportPayload, + LarkDocumentList, + LarkDocumentImportPayload, +} from '@/api/types' + +const getPrefix = (knowledgeId: string) => `/system/shared/knowledge/${knowledgeId}/document` + +/** 获取知识库不分页的文档选项。 */ +const getAllDocuments = (knowledgeId: string) => get(getPrefix(knowledgeId)) + +/** 获取文档分页列表,支持名称和创建者筛选。 */ +const getDocumentPage = (knowledgeId: string, page: ParamsPage, query?: Dict) => + get>(`${getPrefix(knowledgeId)}/${page.currentPage}/${page.pageSize}`, query) + +/** 获取单个文档详情,支持直接访问分段页。 */ +const getDocumentDetail = (knowledgeId: string, documentId: string) => get(`${getPrefix(knowledgeId)}/${documentId}`) + +/** 批量创建空白文档或导入text文档。 */ +const putBatchCreateDocuments = (knowledgeId: string, documents: DocumentQuickCreatePayload[] | DocumentImportPayload[]) => + put(`${getPrefix(knowledgeId)}/batch_create`, documents) + +/** 分段预览 */ +const postSplitDocuments = (knowledgeId: string, files: File[], strategy: DocumentStrategy) => { + const data = new FormData() + files.forEach((file) => data.append('file', file)) + data.append('doc_strategy', JSON.stringify(strategy)) + return post(`${getPrefix(knowledgeId)}/split`, data) +} + +/** 复用已上传文件,按处理策略直接解析并写入知识库。 */ +const postImportTextDocuments = (knowledgeId: string, fileIds: string[], strategy: DocumentStrategy) => + post(`${getPrefix(knowledgeId)}/import`, { file_id_list: fileIds, doc_strategy: strategy }) + +/** 从已上传表格创建文档,每个 sheet 由服务端创建独立文档。 */ +const postImportTableDocumentsByFileIds = (knowledgeId: string, fileIds: string[]) => + post(`${getPrefix(knowledgeId)}/table_by_file_ids`, { file_id_list: fileIds }) + +/** 从已上传文件创建 QA 问答对文档。 */ +const postImportQADocumentsByFileIds = (knowledgeId: string, fileIds: string[]) => + post(`${getPrefix(knowledgeId)}/qa_by_file_ids`, { file_id_list: fileIds }) + +/** 按地址导入 Web 文档并应用文档处理策略。 */ +const postWebDocument = (knowledgeId: string, payload: WebDocumentImportPayload) => + post(`${getPrefix(knowledgeId)}/web`, payload) + +/** 查询飞书文件夹中的文件,支持分页加载。 */ +const getLarkDocumentList = (knowledgeId: string, folderToken: string, query: { page_token?: string } = {}) => + post<{ page_token?: string }, LarkDocumentList>(`/system/shared/knowledge/lark/${knowledgeId}/${folderToken}/doc_list`, query) + +/** 导入所选飞书文档,沿用飞书扩展接口。 */ +const postImportLarkDocuments = (knowledgeId: string, documents: LarkDocumentImportPayload[]) => + post(`/system/shared/knowledge/lark/${knowledgeId}/import`, documents) + +/** 下载表格模板。 */ +const exportTableDocumentTemplate = (format: 'excel' | 'csv') => + getExportFile(`${format}-template.${format === 'excel' ? 'xlsx' : 'csv'}`, '/system/shared/knowledge/document/table_template/export', { + type: format, + }) + +/** 下载 QA 模板。 */ +const exportQADocumentTemplate = (format: 'excel' | 'csv') => + getExportFile(`${format}-template.${format === 'excel' ? 'xlsx' : 'csv'}`, '/system/shared/knowledge/document/template/export', { type: format }) + +/** 更新文档名称、启用状态或设置,返回保存后的文档。 */ +const putDocument = (knowledgeId: string, documentId: string, data: DocumentUpdatePayload) => + put(`${getPrefix(knowledgeId)}/${documentId}`, data) + +/** 删除单个文档。 */ +const deleteDocument = (knowledgeId: string, documentId: string) => del(`${getPrefix(knowledgeId)}/${documentId}`) + +/** 批量删除文档。 */ +const putBatchDeleteDocuments = (knowledgeId: string, documentIds: string[]) => + put(`${getPrefix(knowledgeId)}/batch_delete`, { id_list: documentIds }) + +/** 单个文档向量化。 */ +const putDocumentRefresh = (knowledgeId: string, documentId: string, stateList: DocumentTaskState[]) => + put(`${getPrefix(knowledgeId)}/${documentId}/refresh`, { state_list: stateList }) + +/** 批量文档向量化。 */ +const putBatchRefreshDocuments = (knowledgeId: string, documentIds: string[], stateList: DocumentTaskState[]) => + put(`${getPrefix(knowledgeId)}/batch_refresh`, { id_list: documentIds, state_list: stateList }) + +/** 单个文档分词索引。 */ +const putDocumentTokenize = (knowledgeId: string, documentId: string, stateList: DocumentTaskState[]) => + put(`${getPrefix(knowledgeId)}/${documentId}/tokenize`, { state_list: stateList }) + +/** 批量文档分词索引。 */ +const putBatchTokenizeDocuments = (knowledgeId: string, documentIds: string[], stateList: DocumentTaskState[]) => + put(`${getPrefix(knowledgeId)}/batch_tokenize`, { id_list: documentIds, state_list: stateList }) + +/** 单个/批量生成关联问题。 */ +const putGenerateDocumentQuestions = (knowledgeId: string, data: DocumentGeneratePayload) => + put(`${getPrefix(knowledgeId)}/batch_generate_related`, data) + +/** 单个取消文档任务。 */ +const putCancelTask = (knowledgeId: string, documentId: string, taskType: DocumentTaskType) => + put(`${getPrefix(knowledgeId)}/${documentId}/cancel_task`, { type: taskType }) + +/** 批量取消指定文档任务。 */ +const putBatchCancelDocumentTask = (knowledgeId: string, documentIds: string[], taskType: DocumentTaskType) => + put(`${getPrefix(knowledgeId)}/batch_cancel_task`, { id_list: documentIds, type: taskType }) + +/** 同步单个 Web 文档。 */ +const putDocumentSync = (knowledgeId: string, documentId: string) => put(`${getPrefix(knowledgeId)}/${documentId}/sync`) + +/** 批量同步 Web 文档。 */ +const putMulSyncDocument = (knowledgeId: string, documentIds: string[]) => + put<{ id_list: string[] }, boolean>(`${getPrefix(knowledgeId)}/batch_sync`, { id_list: documentIds }) + +/** 同步单个飞书文档。 */ +const putLarkDocumentSync = (knowledgeId: string, documentId: string) => + put(`/system/shared/knowledge/lark/${knowledgeId}/document/${documentId}/sync`) + +/** 批量同步飞书文档。 */ +const putMulLarkSyncDocument = (knowledgeId: string, documentIds: string[]) => + put<{ id_list: string[] }, boolean>(`/system/shared/knowledge/lark/${knowledgeId}/_batch`, { id_list: documentIds }) + +/** 批量文档设置。 */ +const putBatchDocumentSetting = (knowledgeId: string, documentIds: string[], data: DocumentSettingPayload) => + put(`${getPrefix(knowledgeId)}/batch_hit_handling`, { ...data, id_list: documentIds }) + +/** 批量/单个迁移至目标知识库。 */ +const putMigrateDocuments = (knowledgeId: string, targetKnowledgeId: string, documentIds: string[]) => + put(`${getPrefix(knowledgeId)}/migrate/${targetKnowledgeId}`, documentIds) + +/** 将单个文档导出为 Excel。 */ +const exportDocument = (knowledgeId: string, documentId: string, documentName: string) => + getExportFile(`${documentName.trim()}.xlsx`, `${getPrefix(knowledgeId)}/${documentId}/export`) + +/** 将选中文档批量导出为 Excel。 */ +const exportMulDocument = (knowledgeId: string, documentIds: string[], knowledgeName: string) => + postExportExcel(`${knowledgeName.trim()}.xlsx`, `${getPrefix(knowledgeId)}/batch_export`, undefined, documentIds) + +/** 将单个文档及图片导出为 ZIP。 */ +const exportDocumentZip = (knowledgeId: string, documentId: string, documentName: string) => + getExportFile(`${documentName.trim()}.zip`, `${getPrefix(knowledgeId)}/${documentId}/export_zip`) + +/** 将选中文档及图片批量导出为 ZIP。 */ +const exportMulDocumentZip = (knowledgeId: string, documentIds: string[], knowledgeName: string) => + downloadRequest(`${getPrefix(knowledgeId)}/batch_export_zip`, 'POST', documentIds, undefined, `${knowledgeName.trim()}.zip`) + +/** 下载文档原文件。 */ +const downloadDocumentSource = (knowledgeId: string, document: DocumentItem) => + getExportFile(document.name, `${getPrefix(knowledgeId)}/${document.id}/download_source_file`) + +/** 替换文档原文件。 */ +const postReplaceDocumentSource = (knowledgeId: string, documentId: string, file: File) => { + const data = new FormData() + data.append('file', file) + return post(`${getPrefix(knowledgeId)}/${documentId}/replace_source_file`, data) +} + +export default { + getAllDocuments, + getDocumentDetail, + getDocumentPage, + putBatchCreateDocuments, + postSplitDocuments, + postImportTextDocuments, + postImportTableDocumentsByFileIds, + postImportQADocumentsByFileIds, + postWebDocument, + getLarkDocumentList, + postImportLarkDocuments, + exportTableDocumentTemplate, + exportQADocumentTemplate, + putDocument, + deleteDocument, + putBatchDeleteDocuments, + putDocumentRefresh, + putBatchRefreshDocuments, + putDocumentTokenize, + putBatchTokenizeDocuments, + putCancelTask, + putBatchCancelDocumentTask, + putBatchDocumentSetting, + putGenerateDocumentQuestions, + putMigrateDocuments, + putDocumentSync, + putMulSyncDocument, + putLarkDocumentSync, + putMulLarkSyncDocument, + exportDocument, + exportMulDocument, + exportDocumentZip, + exportMulDocumentZip, + downloadDocumentSource, + postReplaceDocumentSource, +} diff --git a/ui/src/api/admin/system/shared-resources/knowledge/knowledge.ts b/ui/src/api/admin/system/shared-resources/knowledge/knowledge.ts index 1b85869418c..31937bccf85 100644 --- a/ui/src/api/admin/system/shared-resources/knowledge/knowledge.ts +++ b/ui/src/api/admin/system/shared-resources/knowledge/knowledge.ts @@ -15,6 +15,9 @@ import type { const prefix = '/system/shared/knowledge' +/** 获取 System 共享不分页的知识库列表。 */ +const getAllKnowledge = (query?: Dict) => get(prefix, query) + /** 获取 System 共享知识库分页列表。 */ const getKnowledgePage = (page: ParamsPage, query?: Dict) => { return get>(`${prefix}/${page.currentPage}/${page.pageSize}`, query) @@ -48,6 +51,11 @@ const postKnowledgeImport = (file: File, folderId: string) => { const putKnowledge = (knowledgeId: string, payload: Partial) => put, KnowledgeItem>(`${prefix}/${knowledgeId}`, payload) +/** 更新飞书知识库信息。 */ +const putLarkKnowledge = (knowledgeId: string, payload: Partial) => { + return put, KnowledgeItem>(`${prefix}/lark/${knowledgeId}`, payload) +} + /** 删除 System 共享知识库。 */ const deleteKnowledge = (knowledgeId: string) => del(`${prefix}/${knowledgeId}`) @@ -97,6 +105,7 @@ export default { getKnowledgeDetail, getKnowledgeMcpConfig, getKnowledgePage, + getAllKnowledge, postKnowledge, postKnowledgeImport, postKnowledgeWorkflow, @@ -104,6 +113,7 @@ export default { postWebKnowledge, putGenerateKnowledgeQuestions, putKnowledge, + putLarkKnowledge, putKnowledgeKeywordIndex, putReEmbeddingKnowledge, putSyncWebKnowledge, diff --git a/ui/src/api/admin/system/shared-resources/knowledge/tags.ts b/ui/src/api/admin/system/shared-resources/knowledge/tags.ts index fd242938e18..73c972145cd 100644 --- a/ui/src/api/admin/system/shared-resources/knowledge/tags.ts +++ b/ui/src/api/admin/system/shared-resources/knowledge/tags.ts @@ -1,34 +1,52 @@ import { del, get, getExportFile, post, put } from '@/api/admin/core/request' import type { Dict, KnowledgeTagGroup, KnowledgeTagPayload, KnowledgeTagUpdatePayload } from '@/api/types' -const getPrefix = (knowledgeId: string) => `/system/shared/knowledge/${knowledgeId}/tags` +const getPrefix = (knowledgeId: string) => `/system/shared/knowledge/${knowledgeId}` /** 获取知识库按标签名称分组的标签选项。 */ -const getKnowledgeTags = (knowledgeId: string, query?: Dict) => get(getPrefix(knowledgeId), query) +const getKnowledgeTags = (knowledgeId: string, query?: Dict) => get(`${getPrefix(knowledgeId)}/tags`, query) /** 创建知识库标签或为已有标签新增值。 */ -const postKnowledgeTags = (knowledgeId: string, tags: KnowledgeTagPayload[]) => post(getPrefix(knowledgeId), tags) +const postKnowledgeTags = (knowledgeId: string, tags: KnowledgeTagPayload[]) => + post(`${getPrefix(knowledgeId)}/tags`, tags) /** 重命名知识库标签或编辑单个标签值。 */ const putKnowledgeTag = (knowledgeId: string, tagId: string, tag: KnowledgeTagUpdatePayload) => - put(`${getPrefix(knowledgeId)}/${tagId}`, tag) + put(`${getPrefix(knowledgeId)}/tags/${tagId}`, tag) /** 删除整个标签分组或单个标签值。 */ const deleteKnowledgeTag = (knowledgeId: string, tagId: string, type: 'key' | 'one') => - del(`${getPrefix(knowledgeId)}/${tagId}/${type}`) + del(`${getPrefix(knowledgeId)}/tags/${tagId}/${type}`) /** 批量删除所选标签,直接提交标签 ID 数组。 */ -const putBatchDeleteKnowledgeTags = (knowledgeId: string, tagIds: string[]) => put(`${getPrefix(knowledgeId)}/batch_delete`, tagIds) +const putBatchDeleteKnowledgeTags = (knowledgeId: string, tagIds: string[]) => + put(`${getPrefix(knowledgeId)}/tags/batch_delete`, tagIds) /** 导入 Excel 中的知识库标签,重复标签组合由服务端跳过。 */ const postImportKnowledgeTags = (knowledgeId: string, file: File) => { const data = new FormData() data.append('file', file) - return post(`${getPrefix(knowledgeId)}/import`, data) + return post(`${getPrefix(knowledgeId)}/tags/import`, data) } /** 下载知识库标签导入模板。 */ -const exportKnowledgeTagTemplate = (knowledgeId: string) => getExportFile('标签模板.xlsx', `${getPrefix(knowledgeId)}/template/export`) +const exportKnowledgeTagTemplate = (knowledgeId: string) => getExportFile('标签模板.xlsx', `${getPrefix(knowledgeId)}/tags/template/export`) + +/** 查询文档当前标签。 */ +const getDocumentTags = (knowledgeId: string, documentId: string, query?: Dict) => + get(`${getPrefix(knowledgeId)}/document/${documentId}/tags`, query) + +/** 给指定文档批量添加已有标签。 */ +const postBatchAddDocumentTags = (knowledgeId: string, documentIds: string[], tagIds: string[]) => + post(`${getPrefix(knowledgeId)}/document/batch_add_tag`, { document_ids: documentIds, tag_ids: tagIds }) + +/** 从单个文档移除指定标签,不删除标签本身。 */ +const putDeleteDocumentTags = (knowledgeId: string, documentId: string, tagIds: string[]) => + put(`${getPrefix(knowledgeId)}/document/${documentId}/tags/batch_delete`, tagIds) + +/** 取消指定标签与单个或多个文档的关联。 */ +const putUnlinkTagDocuments = (knowledgeId: string, tagId: string, documentIds: string[]) => + put(`${getPrefix(knowledgeId)}/tag/${tagId}/docs_delete`, { id_list: documentIds }) export default { getKnowledgeTags, @@ -38,4 +56,8 @@ export default { putBatchDeleteKnowledgeTags, postImportKnowledgeTags, exportKnowledgeTagTemplate, + getDocumentTags, + postBatchAddDocumentTags, + putDeleteDocumentTags, + putUnlinkTagDocuments, } diff --git a/ui/src/api/admin/system/shared-resources/tool/tool.ts b/ui/src/api/admin/system/shared-resources/tool/tool.ts index df2209b2711..f9fc063d6ee 100644 --- a/ui/src/api/admin/system/shared-resources/tool/tool.ts +++ b/ui/src/api/admin/system/shared-resources/tool/tool.ts @@ -5,6 +5,9 @@ import { ADMIN_API_BASE_PATH } from '@/api/constants' const prefix = '/system/shared/tool' +/** 获取 System 共享不分页的工具列表。 */ +const getAllTool = (query?: Dict) => get(prefix, query) + /** 获取当前系统范围可用的工具选项。 */ const getToolListWithShared = (query?: Dict) => get<{ tools: ToolItem[]; shared_tools: ToolItem[] }>(`${prefix}/tool_list`, query).then(({ tools, shared_tools }) => [...tools, ...shared_tools]) @@ -80,6 +83,7 @@ const postToolTestConnection = (payload: ToolPayload) => { } export default { + getAllTool, getToolListWithShared, getToolPage, exportTool, diff --git a/ui/src/api/admin/workspace/knowledge/document.ts b/ui/src/api/admin/workspace/knowledge/document.ts index 92b26d53ff9..3feaee46d62 100644 --- a/ui/src/api/admin/workspace/knowledge/document.ts +++ b/ui/src/api/admin/workspace/knowledge/document.ts @@ -16,7 +16,6 @@ import type { WebDocumentImportPayload, LarkDocumentList, LarkDocumentImportPayload, - KnowledgeTagGroup, } from '@/api/types' import { getWorkspaceId } from '@/utils/resource-context' @@ -165,29 +164,9 @@ const postReplaceDocumentSource = (knowledgeId: string, documentId: string, file return post(`${getPrefix(knowledgeId)}/${documentId}/replace_source_file`, data) } -/** 查询文档当前标签。 */ -const getDocumentTags = (knowledgeId: string, documentId: string, query?: Dict) => - get(`${getPrefix(knowledgeId)}/${documentId}/tags`, query) - -/** 给指定文档批量添加已有标签。 */ -const postAddDocumentTags = (knowledgeId: string, documentIds: string[], tagIds: string[]) => - post(`${getPrefix(knowledgeId)}/batch_add_tag`, { document_ids: documentIds, tag_ids: tagIds }) - -/** 从单个文档移除指定标签,不删除标签本身。 */ -const putDeleteDocumentTags = (knowledgeId: string, documentId: string, tagIds: string[]) => - put(`${getPrefix(knowledgeId)}/${documentId}/tags/batch_delete`, tagIds) - -/** 取消指定标签与单个或多个文档的关联。 */ -const putUnlinkTagDocuments = (knowledgeId: string, tagId: string, documentIds: string[]) => - put(`/workspace/${getWorkspaceId()}/knowledge/${knowledgeId}/tag/${tagId}/docs_delete`, { id_list: documentIds }) - export default { getAllDocuments, getDocumentDetail, - getDocumentTags, - postAddDocumentTags, - putDeleteDocumentTags, - putUnlinkTagDocuments, getDocumentPage, putBatchCreateDocuments, postSplitDocuments, diff --git a/ui/src/api/admin/workspace/knowledge/tags.ts b/ui/src/api/admin/workspace/knowledge/tags.ts index f9a9774bdd6..e76e2a24594 100644 --- a/ui/src/api/admin/workspace/knowledge/tags.ts +++ b/ui/src/api/admin/workspace/knowledge/tags.ts @@ -2,35 +2,53 @@ import { del, get, getExportFile, post, put } from '../../core/request' import type { Dict, KnowledgeTagGroup, KnowledgeTagPayload, KnowledgeTagUpdatePayload } from '@/api/types' import { getWorkspaceId } from '@/utils/resource-context' -const getPrefix = (knowledgeId: string) => `/workspace/${getWorkspaceId()}/knowledge/${knowledgeId}/tags` +const getPrefix = (knowledgeId: string) => `/workspace/${getWorkspaceId()}/knowledge/${knowledgeId}` /** 获取知识库按标签名称分组的标签选项。 */ -const getKnowledgeTags = (knowledgeId: string, query?: Dict) => get(getPrefix(knowledgeId), query) +const getKnowledgeTags = (knowledgeId: string, query?: Dict) => get(`${getPrefix(knowledgeId)}/tags`, query) /** 创建知识库标签或为已有标签新增值。 */ -const postKnowledgeTags = (knowledgeId: string, tags: KnowledgeTagPayload[]) => post(getPrefix(knowledgeId), tags) +const postKnowledgeTags = (knowledgeId: string, tags: KnowledgeTagPayload[]) => + post(`${getPrefix(knowledgeId)}/tags`, tags) /** 重命名知识库标签或编辑单个标签值。 */ const putKnowledgeTag = (knowledgeId: string, tagId: string, tag: KnowledgeTagUpdatePayload) => - put(`${getPrefix(knowledgeId)}/${tagId}`, tag) + put(`${getPrefix(knowledgeId)}/tags/${tagId}`, tag) /** 删除整个标签分组或单个标签值。 */ // type:key 删除整个标签及其所有值;one 仅删除当前标签值。 const deleteKnowledgeTag = (knowledgeId: string, tagId: string, type: 'key' | 'one') => - del(`${getPrefix(knowledgeId)}/${tagId}/${type}`) + del(`${getPrefix(knowledgeId)}/tags/${tagId}/${type}`) /** 批量删除所选标签,直接提交标签 ID 数组。 */ -const putBatchDeleteKnowledgeTags = (knowledgeId: string, tagIds: string[]) => put(`${getPrefix(knowledgeId)}/batch_delete`, tagIds) +const putBatchDeleteKnowledgeTags = (knowledgeId: string, tagIds: string[]) => + put(`${getPrefix(knowledgeId)}/tags/batch_delete`, tagIds) /** 导入 Excel 中的知识库标签,重复标签组合由服务端跳过。 */ const postImportKnowledgeTags = (knowledgeId: string, file: File) => { const data = new FormData() data.append('file', file) - return post(`${getPrefix(knowledgeId)}/import`, data) + return post(`${getPrefix(knowledgeId)}/tags/import`, data) } /** 下载知识库标签导入模板。 */ -const exportKnowledgeTagTemplate = (knowledgeId: string) => getExportFile('标签模板.xlsx', `${getPrefix(knowledgeId)}/template/export`) +const exportKnowledgeTagTemplate = (knowledgeId: string) => getExportFile('标签模板.xlsx', `${getPrefix(knowledgeId)}/tags/template/export`) + +/** 查询文档当前标签。 */ +const getDocumentTags = (knowledgeId: string, documentId: string, query?: Dict) => + get(`${getPrefix(knowledgeId)}/document/${documentId}/tags`, query) + +/** 给指定文档批量添加已有标签。 */ +const postBatchAddDocumentTags = (knowledgeId: string, documentIds: string[], tagIds: string[]) => + post(`${getPrefix(knowledgeId)}/document/batch_add_tag`, { document_ids: documentIds, tag_ids: tagIds }) + +/** 从单个文档移除指定标签,不删除标签本身。 */ +const putDeleteDocumentTags = (knowledgeId: string, documentId: string, tagIds: string[]) => + put(`${getPrefix(knowledgeId)}/document/${documentId}/tags/batch_delete`, tagIds) + +/** 取消指定标签与单个或多个文档的关联。 */ +const putUnlinkTagDocuments = (knowledgeId: string, tagId: string, documentIds: string[]) => + put(`${getPrefix(knowledgeId)}/tag/${tagId}/docs_delete`, { id_list: documentIds }) export default { getKnowledgeTags, @@ -40,4 +58,8 @@ export default { putBatchDeleteKnowledgeTags, postImportKnowledgeTags, exportKnowledgeTagTemplate, + getDocumentTags, + postBatchAddDocumentTags, + putDeleteDocumentTags, + putUnlinkTagDocuments, } diff --git a/ui/src/components/COMPONENT_README.md b/ui/src/components/COMPONENT_README.md index dd23118dd1d..cab604bb0eb 100644 --- a/ui/src/components/COMPONENT_README.md +++ b/ui/src/components/COMPONENT_README.md @@ -440,13 +440,7 @@ Dialog、Drawer、Popover、嵌套区域等其他大、小表格均禁止开启 ```vue - + -