From 1e3197a1ea31997863ea0aadf6ff20baba8fba44 Mon Sep 17 00:00:00 2001 From: yuhaowin <34699768+yuhaowin@users.noreply.github.com> Date: Thu, 27 Feb 2025 14:56:46 +0800 Subject: [PATCH 1/2] Fixes 14217: database retrieve api and chat-messages api response doc_metadata (#14219) --- api/core/rag/retrieval/dataset_retrieval.py | 1 + .../utils/dataset_retriever/dataset_multi_retriever_tool.py | 1 + api/core/tools/utils/dataset_retriever/dataset_retriever_tool.py | 1 + .../nodes/knowledge_retrieval/knowledge_retrieval_node.py | 1 + api/core/workflow/nodes/llm/node.py | 1 + api/fields/hit_testing_fields.py | 1 + 6 files changed, 6 insertions(+) diff --git a/api/core/rag/retrieval/dataset_retrieval.py b/api/core/rag/retrieval/dataset_retrieval.py index 2193d8d3fd..ac868a2250 100644 --- a/api/core/rag/retrieval/dataset_retrieval.py +++ b/api/core/rag/retrieval/dataset_retrieval.py @@ -203,6 +203,7 @@ class DatasetRetrieval: "segment_id": segment.id, "retriever_from": invoke_from.to_source(), "score": record.score or 0.0, + "doc_metadata": document.doc_metadata, } if invoke_from.to_source() == "dev": diff --git a/api/core/tools/utils/dataset_retriever/dataset_multi_retriever_tool.py b/api/core/tools/utils/dataset_retriever/dataset_multi_retriever_tool.py index 802bee4217..032274b87e 100644 --- a/api/core/tools/utils/dataset_retriever/dataset_multi_retriever_tool.py +++ b/api/core/tools/utils/dataset_retriever/dataset_multi_retriever_tool.py @@ -123,6 +123,7 @@ class DatasetMultiRetrieverTool(DatasetRetrieverBaseTool): "segment_id": segment.id, "retriever_from": self.retriever_from, "score": document_score_list.get(segment.index_node_id, None), + "doc_metadata": document.doc_metadata, } if self.retriever_from == "dev": diff --git a/api/core/tools/utils/dataset_retriever/dataset_retriever_tool.py b/api/core/tools/utils/dataset_retriever/dataset_retriever_tool.py index 946d99ef6f..e0a5ee9aab 100644 --- a/api/core/tools/utils/dataset_retriever/dataset_retriever_tool.py +++ b/api/core/tools/utils/dataset_retriever/dataset_retriever_tool.py @@ -172,6 +172,7 @@ class DatasetRetrieverTool(DatasetRetrieverBaseTool): "segment_id": segment.id, "retriever_from": self.retriever_from, "score": record.score or 0.0, + "doc_metadata": document.doc_metadat, # type: ignore } if self.retriever_from == "dev": diff --git a/api/core/workflow/nodes/knowledge_retrieval/knowledge_retrieval_node.py b/api/core/workflow/nodes/knowledge_retrieval/knowledge_retrieval_node.py index 0f239af51a..d77def2c40 100644 --- a/api/core/workflow/nodes/knowledge_retrieval/knowledge_retrieval_node.py +++ b/api/core/workflow/nodes/knowledge_retrieval/knowledge_retrieval_node.py @@ -240,6 +240,7 @@ class KnowledgeRetrievalNode(BaseNode[KnowledgeRetrievalNodeData]): "segment_word_count": segment.word_count, "segment_position": segment.position, "segment_index_node_hash": segment.index_node_hash, + "doc_metadata": document.doc_metadata, }, "title": document.name, } diff --git a/api/core/workflow/nodes/llm/node.py b/api/core/workflow/nodes/llm/node.py index aff3d2b7c6..f717a2a877 100644 --- a/api/core/workflow/nodes/llm/node.py +++ b/api/core/workflow/nodes/llm/node.py @@ -459,6 +459,7 @@ class LLMNode(BaseNode[LLMNodeData]): "index_node_hash": metadata.get("segment_index_node_hash"), "content": context_dict.get("content"), "page": metadata.get("page"), + "doc_metadata": metadata.get("doc_metadata"), } return source diff --git a/api/fields/hit_testing_fields.py b/api/fields/hit_testing_fields.py index d9758474f7..4514c1b8ca 100644 --- a/api/fields/hit_testing_fields.py +++ b/api/fields/hit_testing_fields.py @@ -7,6 +7,7 @@ document_fields = { "data_source_type": fields.String, "name": fields.String, "doc_type": fields.String, + "doc_metadata": fields.Raw, } segment_fields = { From 4fbe52da401cbb558c584761de0fbe390ad07834 Mon Sep 17 00:00:00 2001 From: Wu Tianwei <30284043+WTW0313@users.noreply.github.com> Date: Thu, 27 Feb 2025 15:11:42 +0800 Subject: [PATCH 2/2] fix: update dependencies and improve app detail handling (#14444) --- .../(commonLayout)/app/(appDetailLayout)/[appId]/layout.tsx | 6 +++--- web/app/components/app-sidebar/navLink.tsx | 4 ++-- web/app/components/app/configuration/index.tsx | 2 +- web/app/components/app/create-app-dialog/app-list/index.tsx | 4 ++-- web/app/components/explore/app-list/index.tsx | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/layout.tsx b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/layout.tsx index 69a423ab21..3b43186196 100644 --- a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/layout.tsx +++ b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/layout.tsx @@ -94,7 +94,7 @@ const AppDetailLayout: FC = (props) => { }, ] return navs - }, [t]) + }, []) useEffect(() => { if (appDetail) { @@ -120,7 +120,7 @@ const AppDetailLayout: FC = (props) => { }).finally(() => { setIsLoadingAppDetail(false) }) - }, [appId, router, setAppDetail]) + }, [appId, pathname]) useEffect(() => { if (!appDetailRes || isLoadingCurrentWorkspace || isLoadingAppDetail) @@ -148,7 +148,7 @@ const AppDetailLayout: FC = (props) => { } } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [appDetailRes, appId, getNavigations, isCurrentWorkspaceEditor, isLoadingAppDetail, isLoadingCurrentWorkspace, router, setAppDetail, systemFeatures.enable_web_sso_switch_component]) + }, [appDetailRes, isCurrentWorkspaceEditor, isLoadingAppDetail, isLoadingCurrentWorkspace, systemFeatures.enable_web_sso_switch_component]) useUnmount(() => { setAppDetail() diff --git a/web/app/components/app-sidebar/navLink.tsx b/web/app/components/app-sidebar/navLink.tsx index bec6bf105f..4e04fcc3e1 100644 --- a/web/app/components/app-sidebar/navLink.tsx +++ b/web/app/components/app-sidebar/navLink.tsx @@ -3,13 +3,13 @@ import { useSelectedLayoutSegment } from 'next/navigation' import Link from 'next/link' import classNames from '@/utils/classnames' +import type { RemixiconComponentType } from '@remixicon/react' export type NavIcon = React.ComponentType< React.PropsWithoutRef> & { title?: string | undefined titleId?: string | undefined -} -> +}> | RemixiconComponentType export type NavLinkProps = { name: string diff --git a/web/app/components/app/configuration/index.tsx b/web/app/components/app/configuration/index.tsx index 5f2c8909a5..87f71f54a0 100644 --- a/web/app/components/app/configuration/index.tsx +++ b/web/app/components/app/configuration/index.tsx @@ -94,7 +94,7 @@ const Configuration: FC = () => { }))) const { data: fileUploadConfigResponse } = useSWR({ url: '/files/upload' }, fetchFileUploadConfig) - const latestPublishedAt = useMemo(() => appDetail?.model_config.updated_at, [appDetail]) + const latestPublishedAt = useMemo(() => appDetail?.model_config?.updated_at, [appDetail]) const [formattingChanged, setFormattingChanged] = useState(false) const { setShowAccountSettingModal } = useModalContext() const [hasFetchedDetail, setHasFetchedDetail] = useState(false) diff --git a/web/app/components/app/create-app-dialog/app-list/index.tsx b/web/app/components/app/create-app-dialog/app-list/index.tsx index a545774f2c..69990f9311 100644 --- a/web/app/components/app/create-app-dialog/app-list/index.tsx +++ b/web/app/components/app/create-app-dialog/app-list/index.tsx @@ -128,7 +128,7 @@ const Apps = ({ icon_background, description, }) => { - const { export_data } = await fetchAppDetail( + const { export_data, mode } = await fetchAppDetail( currApp?.app.id as string, ) try { @@ -151,7 +151,7 @@ const Apps = ({ if (app.app_id) await handleCheckPluginDependencies(app.app_id) localStorage.setItem(NEED_REFRESH_APP_LIST_KEY, '1') - getRedirection(isCurrentWorkspaceEditor, { id: app.app_id }, push) + getRedirection(isCurrentWorkspaceEditor, { id: app.app_id, mode }, push) } catch (e) { Toast.notify({ type: 'error', message: t('app.newApp.appCreateFailed') }) diff --git a/web/app/components/explore/app-list/index.tsx b/web/app/components/explore/app-list/index.tsx index 458aadcb61..4fef183d52 100644 --- a/web/app/components/explore/app-list/index.tsx +++ b/web/app/components/explore/app-list/index.tsx @@ -126,7 +126,7 @@ const Apps = ({ icon_background, description, }) => { - const { export_data } = await fetchAppDetail( + const { export_data, mode } = await fetchAppDetail( currApp?.app.id as string, ) try { @@ -149,7 +149,7 @@ const Apps = ({ if (app.app_id) await handleCheckPluginDependencies(app.app_id) localStorage.setItem(NEED_REFRESH_APP_LIST_KEY, '1') - getRedirection(isCurrentWorkspaceEditor, { id: app.app_id }, push) + getRedirection(isCurrentWorkspaceEditor, { id: app.app_id, mode }, push) } catch (e) { Toast.notify({ type: 'error', message: t('app.newApp.appCreateFailed') })