diff --git a/web/app/(commonLayout)/datasets/template/template.en.mdx b/web/app/(commonLayout)/datasets/template/template.en.mdx index 6b294cbdd8..5469999d53 100644 --- a/web/app/(commonLayout)/datasets/template/template.en.mdx +++ b/web/app/(commonLayout)/datasets/template/template.en.mdx @@ -1546,12 +1546,12 @@ import { Row, Col, Properties, Property, Heading, SubProperty, PropertyInstructi - ### POST + ### Params Knowledge ID @@ -1561,8 +1561,8 @@ import { Row, Col, Properties, Property, Heading, SubProperty, PropertyInstructi ### Request Body - - type (string) metadata type, required - - name (string) metadata name, required + - type (string) Metadata type, required + - name (string) Metadata name, required @@ -1571,23 +1571,219 @@ import { Row, Col, Properties, Property, Heading, SubProperty, PropertyInstructi title="Request" tag="POST" label="/datasets/{dataset_id}/metadata" - targetCode={`curl --location --request POST '${props.apiBaseUrl}/datasets/{dataset_id}/documents/{document_id}/segments/{segment_id}' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json'\\\n--data-raw '{\"segment\": {\"content\": \"1\",\"answer\": \"1\", \"keywords\": [\"a\"], \"enabled\": false}}'`} + targetCode={`curl --location --request POST '${props.apiBaseUrl}/datasets/{dataset_id}/metadata' \\\n--header 'Authorization: Bearer {api_key}' \\\n--header 'Content-Type: application/json'\\\n--data-raw '{"type": "string", "name": "test"}'`} > ```bash {{ title: 'cURL' }} - curl --location --request POST '${props.apiBaseUrl}/datasets/{dataset_id}/documents/{document_id}/segments/{segment_id}' \ - --header 'Content-Type: application/json' \ - --data-raw '{ - "segment": { - "content": "1", - "answer": "1", - } - }' ``` ```json {{ title: 'Response' }} { - "doc_form": "text_model" + "id": "abc", + "type": "string", + "name": "test", + } + ``` + + + + +
+ + + + + ### Params + + + Knowledge ID + + + Metadata ID + + + + ### Request Body + + + - name (string) Metadata name, required + + + + + + ```bash {{ title: 'cURL' }} + ``` + + + ```json {{ title: 'Response' }} + { + "id": "abc", + "type": "string", + "name": "test", + } + ``` + + + + +
+ + + + + ### Params + + + Knowledge ID + + + Metadata ID + + + + + + ```bash {{ title: 'cURL' }} + ``` + + + + +
+ + + + + ### Params + + + Knowledge ID + + + disable/enable + + + + + + ```bash {{ title: 'cURL' }} + ``` + + + + +
+ + + + + ### Params + + + Knowledge ID + + + + ### Request Body + + + - document_id (string) Document ID + - metadata_list (list) Metadata list + - id (string) Metadata ID + - value (string) Metadata value + - name (string) Metadata name + + + + + + ```bash {{ title: 'cURL' }} + ``` + + + + +
+ + + + + ### Params + + + Knowledge ID + + + + + + ```bash {{ title: 'cURL' }} + ``` + + + ```json {{ title: 'Response' }} + { + "doc_metadata": [ + { + "id": "", + "name": "name", + "type": "string", + "use_count": 0, + }, + ... + ], + "built_in_field_enabled": true } ``` diff --git a/web/app/(commonLayout)/datasets/template/template.zh.mdx b/web/app/(commonLayout)/datasets/template/template.zh.mdx index 0e5857c446..ece1a132d7 100644 --- a/web/app/(commonLayout)/datasets/template/template.zh.mdx +++ b/web/app/(commonLayout)/datasets/template/template.zh.mdx @@ -1547,6 +1547,254 @@ import { Row, Col, Properties, Property, Heading, SubProperty, PropertyInstructi +
+ + + + + ### Params + + + 知识库 ID + + + + ### Request Body + + + - type (string) 元数据类型,必填 + - name (string) 元数据名称,必填 + + + + + + ```bash {{ title: 'cURL' }} + ``` + + + ```json {{ title: 'Response' }} + { + "id": "abc", + "type": "string", + "name": "test", + } + ``` + + + + +
+ + + + + ### Params + + + 知识库 ID + + + 元数据 ID + + + + ### Request Body + + + - name (string) 元数据名称,必填 + + + + + + ```bash {{ title: 'cURL' }} + ``` + + + ```json {{ title: 'Response' }} + { + "id": "abc", + "type": "string", + "name": "test", + } + ``` + + + + +
+ + + + + ### Params + + + 知识库 ID + + + 元数据 ID + + + + + + ```bash {{ title: 'cURL' }} + ``` + + + + +
+ + + + + ### Params + + + 知识库 ID + + + disable/enable + + + + + + ```bash {{ title: 'cURL' }} + ``` + + + + +
+ + + + + ### Params + + + 知识库 ID + + + + ### Request Body + + + - document_id (string) 文档 ID + - metadata_list (list) 元数据列表 + - id (string) 元数据 ID + - type (string) 元数据类型 + - name (string) 元数据名称 + + + + + + ```bash {{ title: 'cURL' }} + ``` + + + + +
+ + + + + ### Query + + + 知识库 ID + + + + + + ```bash {{ title: 'cURL' }} + ``` + + + ```json {{ title: 'Response' }} + { + "doc_metadata": [ + { + "id": "", + "name": "name", + "type": "string", + "use_count": 0, + }, + ... + ], + "built_in_field_enabled": true + } + ``` + + +
diff --git a/web/app/components/datasets/metadata/hooks/use-edit-dataset-metadata.ts b/web/app/components/datasets/metadata/hooks/use-edit-dataset-metadata.ts index ab650aa9d0..ee2cfcf22d 100644 --- a/web/app/components/datasets/metadata/hooks/use-edit-dataset-metadata.ts +++ b/web/app/components/datasets/metadata/hooks/use-edit-dataset-metadata.ts @@ -12,7 +12,7 @@ const useEditDatasetMetadata = ({ // dataset, }: { datasetId: string, - dataset?: DataSet + dataset?: DataSet, }) => { const { t } = useTranslation() const [isShowEditModal, { @@ -57,7 +57,7 @@ const useEditDatasetMetadata = ({ await doRenameMetaData(payload) }, [checkName, doRenameMetaData]) - const { mutate: doDeleteMetaData } = useDeleteMetaData(datasetId) + const { mutateAsync: doDeleteMetaData } = useDeleteMetaData(datasetId) const handleDeleteMetaData = useCallback((metaDataId: string) => { doDeleteMetaData(metaDataId) }, [doDeleteMetaData]) diff --git a/web/service/knowledge/use-metadata.ts b/web/service/knowledge/use-metadata.ts index bca1aa260c..6d9566fe06 100644 --- a/web/service/knowledge/use-metadata.ts +++ b/web/service/knowledge/use-metadata.ts @@ -1,6 +1,6 @@ import type { BuiltInMetadataItem, MetadataBatchEditToServer, MetadataItemWithValueLength } from '@/app/components/datasets/metadata/types' import { del, get, patch, post } from '../base' - +import { mutate } from 'swr' import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import { useInvalid } from '../use-base' import type { DocumentDetailResponse } from '@/models/datasets' @@ -32,9 +32,33 @@ export const useCreateMetaData = (datasetId: string) => { }, }) } +export const useInvalidAllDocumentMetaData = (datasetId: string) => { + const queryClient = useQueryClient() + return () => { + queryClient.invalidateQueries({ + queryKey: [NAME_SPACE, 'document', datasetId], + exact: false, // invalidate all document metadata: [NAME_SPACE, 'document', datasetId, documentId] + }) + } +} + +const useInvalidAllMetaData = (datasetId: string) => { + const invalidDatasetMetaData = useInvalidDatasetMetaData(datasetId) + const invalidateAllDocumentMetaData = useInvalidAllDocumentMetaData(datasetId) + return async () => { + // meta data in dataset + await invalidDatasetMetaData() + // meta data in document list + mutate( + (key: any) => typeof key === 'object' && key.action === 'fetchDocuments' && key.datasetId === datasetId, + ) + // meta data in single document + await invalidateAllDocumentMetaData() // meta data in document + } +} export const useRenameMeta = (datasetId: string) => { - const invalidDatasetMetaData = useInvalidDatasetMetaData(datasetId) + const invalidateAllMetaData = useInvalidAllMetaData(datasetId) return useMutation({ mutationFn: async (payload: MetadataItemWithValueLength) => { await patch(`/datasets/${datasetId}/metadata/${payload.id}`, { @@ -42,20 +66,18 @@ export const useRenameMeta = (datasetId: string) => { name: payload.name, }, }) - await invalidDatasetMetaData() - return Promise.resolve(true) + await invalidateAllMetaData() }, }) } export const useDeleteMetaData = (datasetId: string) => { - const invalidDatasetMetaData = useInvalidDatasetMetaData(datasetId) + const invalidateAllMetaData = useInvalidAllMetaData(datasetId) return useMutation({ mutationFn: async (metaDataId: string) => { // datasetMetaData = datasetMetaData.filter(item => item.id !== metaDataId) await del(`/datasets/${datasetId}/metadata/${metaDataId}`) - await invalidDatasetMetaData() - return Promise.resolve(true) + await invalidateAllMetaData() }, }) } @@ -80,7 +102,6 @@ export const useDocumentMetaData = ({ datasetId, documentId }: { datasetId: stri export const useBatchUpdateDocMetadata = () => { const queryClient = useQueryClient() - return useMutation({ mutationFn: async (payload: { dataset_id: string @@ -92,10 +113,15 @@ export const useBatchUpdateDocMetadata = () => { operation_data: payload.metadata_list, }, }) + // meta data in dataset await queryClient.invalidateQueries({ queryKey: [NAME_SPACE, 'dataset', payload.dataset_id], }) - // invalidate document metadata + // meta data in document list + mutate( + (key: any) => typeof key === 'object' && key.action === 'fetchDocuments' && key.datasetId === payload.dataset_id, + ) + // meta data in single document await Promise.all(documentIds.map(documentId => queryClient.invalidateQueries( { queryKey: [NAME_SPACE, 'document', payload.dataset_id, documentId],