mirror of
https://github.com/langgenius/dify.git
synced 2026-05-05 01:48:04 +08:00
fix(web): page crash in knowledge retrieval node caused by dataset selection and score threshold (#33553)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
@ -137,5 +137,11 @@ describe('ScoreThresholdItem', () => {
|
||||
const input = screen.getByRole('textbox')
|
||||
expect(input).toHaveValue('1')
|
||||
})
|
||||
|
||||
it('should fall back to default value when value is undefined', () => {
|
||||
render(<ScoreThresholdItem {...defaultProps} value={undefined} />)
|
||||
const input = screen.getByRole('textbox')
|
||||
expect(input).toHaveValue('0.7')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@ -6,7 +6,7 @@ import ParamItem from '.'
|
||||
|
||||
type Props = {
|
||||
className?: string
|
||||
value: number
|
||||
value?: number
|
||||
onChange: (key: string, value: number) => void
|
||||
enable: boolean
|
||||
hasSwitch?: boolean
|
||||
@ -20,6 +20,18 @@ const VALUE_LIMIT = {
|
||||
max: 1,
|
||||
}
|
||||
|
||||
const normalizeScoreThreshold = (value?: number): number => {
|
||||
const normalizedValue = typeof value === 'number' && Number.isFinite(value)
|
||||
? value
|
||||
: VALUE_LIMIT.default
|
||||
const roundedValue = Number.parseFloat(normalizedValue.toFixed(2))
|
||||
|
||||
return Math.min(
|
||||
VALUE_LIMIT.max,
|
||||
Math.max(VALUE_LIMIT.min, roundedValue),
|
||||
)
|
||||
}
|
||||
|
||||
const ScoreThresholdItem: FC<Props> = ({
|
||||
className,
|
||||
value,
|
||||
@ -29,16 +41,10 @@ const ScoreThresholdItem: FC<Props> = ({
|
||||
onSwitchChange,
|
||||
}) => {
|
||||
const { t } = useTranslation()
|
||||
const handleParamChange = (key: string, value: number) => {
|
||||
let notOutRangeValue = Number.parseFloat(value.toFixed(2))
|
||||
notOutRangeValue = Math.max(VALUE_LIMIT.min, notOutRangeValue)
|
||||
notOutRangeValue = Math.min(VALUE_LIMIT.max, notOutRangeValue)
|
||||
onChange(key, notOutRangeValue)
|
||||
const handleParamChange = (key: string, nextValue: number) => {
|
||||
onChange(key, normalizeScoreThreshold(nextValue))
|
||||
}
|
||||
const safeValue = Math.min(
|
||||
VALUE_LIMIT.max,
|
||||
Math.max(VALUE_LIMIT.min, Number.parseFloat(value.toFixed(2))),
|
||||
)
|
||||
const safeValue = normalizeScoreThreshold(value)
|
||||
|
||||
return (
|
||||
<ParamItem
|
||||
|
||||
Reference in New Issue
Block a user