void
hybridSearchMode: HybridSearchModeEnum
@@ -24,6 +25,7 @@ type RetrievalSettingProps = {
} & RerankingModelSelectorProps & TopKAndScoreThresholdProps
const RetrievalSetting = ({
+ readonly,
searchMethod,
onRetrievalSearchMethodChange,
hybridSearchMode,
@@ -84,6 +86,7 @@ const RetrievalSetting = ({
onScoreThresholdEnabledChange={onScoreThresholdEnabledChange}
rerankingModel={rerankingModel}
onRerankingModelChange={onRerankingModelChange}
+ readonly={readonly}
/>
))
}
diff --git a/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/reranking-model-selector.tsx b/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/reranking-model-selector.tsx
index 84788637c4..81e131b2a2 100644
--- a/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/reranking-model-selector.tsx
+++ b/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/reranking-model-selector.tsx
@@ -11,10 +11,12 @@ import type { RerankingModel } from '../../types'
export type RerankingModelSelectorProps = {
rerankingModel?: RerankingModel
onRerankingModelChange?: (model: RerankingModel) => void
+ readonly?: boolean
}
const RerankingModelSelector = ({
rerankingModel,
onRerankingModelChange,
+ readonly = false,
}: RerankingModelSelectorProps) => {
const {
modelList: rerankModelList,
@@ -41,6 +43,7 @@ const RerankingModelSelector = ({
defaultModel={rerankModel && { provider: rerankModel.providerName, model: rerankModel.modelName }}
modelList={rerankModelList}
onSelect={handleRerankingModelChange}
+ readonly={readonly}
/>
)
}
diff --git a/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/search-method-option.tsx b/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/search-method-option.tsx
index 339fa1c821..42c0d8713e 100644
--- a/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/search-method-option.tsx
+++ b/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/search-method-option.tsx
@@ -23,6 +23,7 @@ import type { RerankingModelSelectorProps } from './reranking-model-selector'
import RerankingModelSelector from './reranking-model-selector'
type SearchMethodOptionProps = {
+ readonly?: boolean
option: Option
hybridSearchModeOptions: HybridSearchModeOption[]
searchMethod: RetrievalSearchMethodEnum
@@ -33,6 +34,7 @@ type SearchMethodOptionProps = {
onWeightedScoreChange: (value: { value: number[] }) => void
} & RerankingModelSelectorProps & TopKAndScoreThresholdProps
const SearchMethodOption = ({
+ readonly,
option,
hybridSearchModeOptions,
searchMethod,
@@ -89,6 +91,7 @@ const SearchMethodOption = ({
showChildren={isActive}
showHighlightBorder={isActive}
showEffectColor={isActive}
+ readonly={readonly}
>
{
@@ -105,6 +108,7 @@ const SearchMethodOption = ({
showRadio
radioIsActive={hybridOption.id === hybridSearchMode}
onClick={onHybridSearchModeChange}
+ readonly={readonly}
/>
))
}
@@ -116,6 +120,7 @@ const SearchMethodOption = ({
)
}
@@ -124,6 +129,7 @@ const SearchMethodOption = ({
)
}
@@ -134,6 +140,7 @@ const SearchMethodOption = ({
onScoreThresholdChange={onScoreThresholdChange}
isScoreThresholdEnabled={isScoreThresholdEnabled}
onScoreThresholdEnabledChange={onScoreThresholdEnabledChange}
+ readonly={readonly}
/>
diff --git a/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/top-k-and-score-threshold.tsx b/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/top-k-and-score-threshold.tsx
index 3ce4ca21cb..aac2439689 100644
--- a/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/top-k-and-score-threshold.tsx
+++ b/web/app/components/workflow/nodes/knowledge-base/components/retrieval-setting/top-k-and-score-threshold.tsx
@@ -10,6 +10,7 @@ export type TopKAndScoreThresholdProps = {
onScoreThresholdChange?: (value: number) => void
isScoreThresholdEnabled?: boolean
onScoreThresholdEnabledChange?: (value: boolean) => void
+ readonly?: boolean
}
const TopKAndScoreThreshold = ({
topK,
@@ -18,6 +19,7 @@ const TopKAndScoreThreshold = ({
onScoreThresholdChange,
isScoreThresholdEnabled,
onScoreThresholdEnabledChange,
+ readonly,
}: TopKAndScoreThresholdProps) => {
const handleTopKChange = (e: React.ChangeEvent
) => {
const value = Number(e.target.value)
@@ -47,6 +49,7 @@ const TopKAndScoreThreshold = ({
type='number'
value={topK}
onChange={handleTopKChange}
+ disabled={readonly}
/>
@@ -55,6 +58,7 @@ const TopKAndScoreThreshold = ({
className='mr-2'
defaultValue={isScoreThresholdEnabled}
onChange={onScoreThresholdEnabledChange}
+ disabled={readonly}
/>
Score Threshold
@@ -68,6 +72,7 @@ const TopKAndScoreThreshold = ({
type='number'
value={scoreThreshold}
onChange={handleScoreThresholdChange}
+ disabled={readonly}
/>
diff --git a/web/app/components/workflow/nodes/knowledge-base/panel.tsx b/web/app/components/workflow/nodes/knowledge-base/panel.tsx
index 5884a870c6..a0d24d713a 100644
--- a/web/app/components/workflow/nodes/knowledge-base/panel.tsx
+++ b/web/app/components/workflow/nodes/knowledge-base/panel.tsx
@@ -18,11 +18,13 @@ import {
GroupWithBox,
} from '@/app/components/workflow/nodes/_base/components/layout'
import Split from '../_base/components/split'
+import { useNodesReadOnly } from '@/app/components/workflow/hooks'
const Panel: FC