This commit is contained in:
2025-04-10 02:23:55 +08:00
parent f99a1f05d4
commit e235532469
2 changed files with 454 additions and 127 deletions
+159 -70
View File
@@ -1532,76 +1532,165 @@ export function ReviewSettings({
const generateEvaluationConfig = useCallback(() => {
// 创建符合数据库模式的evaluation_config对象
const evaluationConfig = {
logicType: combinationLogic,
customLogic: combinationLogic === 'custom' ? customLogic : '',
rules: rules.map(rule => {
// 创建一个深拷贝以避免修改原始对象
const processedConfig = JSON.parse(JSON.stringify(rule.config || {}));
// 根据规则类型处理特定的字段映射
switch(rule.type) {
case 'exists':
// 将UI字段名映射为API字段名
if (processedConfig.selectedFields) {
processedConfig.fields = processedConfig.selectedFields;
delete processedConfig.selectedFields;
}
if (processedConfig.existsLogic) {
processedConfig.logic = processedConfig.existsLogic;
delete processedConfig.existsLogic;
}
break;
case 'consistency':
case 'logic':
// 将UI字段名映射为API字段名
if (processedConfig.logicRelation) {
processedConfig.logic = processedConfig.logicRelation;
delete processedConfig.logicRelation;
}
// 删除用于UI的临时字段
delete processedConfig.initialSourceField;
delete processedConfig.initialTargetField;
delete processedConfig.initialCompareMethod;
delete processedConfig.initialField;
delete processedConfig.initialOperator;
delete processedConfig.initialValue;
break;
case 'format':
// 确保field字段正确设置
if (processedConfig.checkField) {
processedConfig.field = processedConfig.checkField;
delete processedConfig.checkField;
}
if (processedConfig.formatParams) {
processedConfig.parameters = processedConfig.formatParams;
delete processedConfig.formatParams;
}
break;
case 'regex':
// 确保field和pattern字段正确设置
if (processedConfig.checkField) {
processedConfig.field = processedConfig.checkField;
delete processedConfig.checkField;
}
if (processedConfig.regexPattern) {
processedConfig.pattern = processedConfig.regexPattern;
delete processedConfig.regexPattern;
}
break;
}
// 移除辅助用的UI字段
delete processedConfig.availableFields;
return {
id: rule.id,
type: rule.type,
config: processedConfig
};
}).filter(rule => rule.type && rule.type.trim() !== '')
logicType: combinationLogic || 'and',
customLogic: combinationLogic === 'custom' ? (customLogic || '') : '',
rules: rules
.filter(rule => rule.type && rule.type.trim() !== '')
.map(rule => {
// 创建一个深拷贝以避免修改原始对象
const processedConfig = JSON.parse(JSON.stringify(rule.config || {}));
// 根据规则类型处理特定的字段映射
switch(rule.type) {
case 'exists':
// 将UI字段名映射为API字段名
if (Array.isArray(processedConfig.selectedFields)) {
processedConfig.fields = processedConfig.selectedFields;
delete processedConfig.selectedFields;
}
// 确保fields字段存在且是数组
if (!Array.isArray(processedConfig.fields)) {
processedConfig.fields = [];
}
if (processedConfig.existsLogic) {
processedConfig.logic = processedConfig.existsLogic;
delete processedConfig.existsLogic;
}
// 确保logic字段有默认值
if (!processedConfig.logic) {
processedConfig.logic = 'and';
}
break;
case 'consistency':
case 'logic':
// 将UI字段名映射为API字段名
if (processedConfig.logicRelation) {
processedConfig.logic = processedConfig.logicRelation;
delete processedConfig.logicRelation;
}
// 确保logic字段有默认值
if (!processedConfig.logic) {
processedConfig.logic = 'and';
}
// 确保pairs/conditions字段是数组
if (rule.type === 'consistency' && !Array.isArray(processedConfig.pairs)) {
processedConfig.pairs = [];
}
if (rule.type === 'logic' && !Array.isArray(processedConfig.conditions)) {
processedConfig.conditions = [];
}
// 删除用于UI的临时字段
delete processedConfig.initialSourceField;
delete processedConfig.initialTargetField;
delete processedConfig.initialCompareMethod;
delete processedConfig.initialField;
delete processedConfig.initialOperator;
delete processedConfig.initialValue;
break;
case 'format':
// 确保field字段正确设置
if (processedConfig.checkField) {
processedConfig.field = processedConfig.checkField;
delete processedConfig.checkField;
}
// 确保field字段有值
if (!processedConfig.field) {
processedConfig.field = '';
}
if (processedConfig.formatParams) {
processedConfig.parameters = processedConfig.formatParams;
delete processedConfig.formatParams;
}
// 确保formatType字段有值
if (!processedConfig.formatType) {
processedConfig.formatType = '';
}
// 确保parameters字段有值
if (!processedConfig.parameters) {
processedConfig.parameters = '';
}
break;
case 'regex':
// 确保field和pattern字段正确设置
if (processedConfig.checkField) {
processedConfig.field = processedConfig.checkField;
delete processedConfig.checkField;
}
// 确保field字段有值
if (!processedConfig.field) {
processedConfig.field = '';
}
if (processedConfig.regexPattern) {
processedConfig.pattern = processedConfig.regexPattern;
delete processedConfig.regexPattern;
}
// 确保pattern字段有值
if (!processedConfig.pattern) {
processedConfig.pattern = '';
}
// 确保matchType字段有值
if (!processedConfig.matchType) {
processedConfig.matchType = 'match';
}
break;
case 'ai':
// 确保model字段有值
if (!processedConfig.model) {
processedConfig.model = 'qwen14b';
}
// 确保temperature字段是数字
if (typeof processedConfig.temperature !== 'number') {
processedConfig.temperature = 0.1;
}
// 确保prompt字段有值
if (!processedConfig.prompt) {
processedConfig.prompt = '';
}
break;
case 'code':
// 确保language字段有值
if (!processedConfig.language) {
processedConfig.language = 'javascript';
}
// 确保code字段有值
if (!processedConfig.code) {
processedConfig.code = '';
}
break;
}
// 移除辅助用的UI字段
delete processedConfig.availableFields;
return {
id: rule.id,
type: rule.type,
config: processedConfig
};
})
};
// 使用setTimeout避免连锁更新