feat: support select-type variables in Metadata Filtering (#17440 (#17445)

This commit is contained in:
Marcelo Díaz 2025-04-07 23:15:07 -04:00 committed by GitHub
parent 7b7ac7a495
commit d796fcc0e7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 10 additions and 4 deletions

View File

@ -270,7 +270,7 @@ const DatasetConfig: FC = () => {
handleMetadataModelChange={handleMetadataModelChange}
handleMetadataCompletionParamsChange={handleMetadataCompletionParamsChange}
isCommonVariable
availableCommonStringVars={promptVariablesToSelect.filter(item => item.type === MetadataFilteringVariableType.string)}
availableCommonStringVars={promptVariablesToSelect.filter(item => item.type === MetadataFilteringVariableType.string || item.type === MetadataFilteringVariableType.select)}
availableCommonNumberVars={promptVariablesToSelect.filter(item => item.type === MetadataFilteringVariableType.number)}
/>
</div>

View File

@ -77,7 +77,9 @@ const ConditionItem = ({
const valueAndValueMethod = useMemo(() => {
if (
(currentMetadata?.type === MetadataFilteringVariableType.string || currentMetadata?.type === MetadataFilteringVariableType.number)
(currentMetadata?.type === MetadataFilteringVariableType.string
|| currentMetadata?.type === MetadataFilteringVariableType.number
|| currentMetadata?.type === MetadataFilteringVariableType.select)
&& typeof condition.value === 'string'
) {
const regex = isCommonVariable ? COMMON_VARIABLE_REGEX : VARIABLE_REGEX
@ -140,7 +142,9 @@ const ConditionItem = ({
</div>
<div className='border-t border-t-divider-subtle'>
{
!comparisonOperatorNotRequireValue(condition.comparison_operator) && currentMetadata?.type === MetadataFilteringVariableType.string && (
!comparisonOperatorNotRequireValue(condition.comparison_operator)
&& (currentMetadata?.type === MetadataFilteringVariableType.string
|| currentMetadata?.type === MetadataFilteringVariableType.select) && (
<ConditionString
valueMethod={localValueMethod}
onValueMethodChange={handleValueMethodChange}

View File

@ -22,6 +22,7 @@ export const isComparisonOperatorNeedTranslate = (operator?: ComparisonOperator)
export const getOperators = (type?: MetadataFilteringVariableType) => {
switch (type) {
case MetadataFilteringVariableType.string:
case MetadataFilteringVariableType.select:
return [
ComparisonOperator.is,
ComparisonOperator.isNot,

View File

@ -18,7 +18,7 @@ const MetadataIcon = ({
return (
<>
{
type === MetadataFilteringVariableType.string && (
(type === MetadataFilteringVariableType.string || type === MetadataFilteringVariableType.select) && (
<RiTextSnippet className={cn('h-3.5 w-3.5', className)} />
)
}

View File

@ -80,6 +80,7 @@ export enum MetadataFilteringVariableType {
string = 'string',
number = 'number',
time = 'time',
select = 'select',
}
export type MetadataFilteringCondition = {