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],