暂存2
This commit is contained in:
@@ -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避免连锁更新
|
||||
|
||||
Reference in New Issue
Block a user