fix: 修改评查点设置中的多模态抽取设置的逻辑。
This commit is contained in:
+170
-12
@@ -217,14 +217,14 @@ export default function RuleNew() {
|
||||
llm: {
|
||||
fields: [],
|
||||
prompt_setting: {
|
||||
type: 'system',
|
||||
type: 'llm_default_prompt',
|
||||
template: ''
|
||||
}
|
||||
},
|
||||
vlm: {
|
||||
fields: [],
|
||||
prompt_setting: {
|
||||
type: 'system',
|
||||
type: 'vlm_default_prompt',
|
||||
template: ''
|
||||
}
|
||||
},
|
||||
@@ -357,18 +357,173 @@ export default function RuleNew() {
|
||||
|
||||
const handleSave = async () => {
|
||||
// console.log("保存评查点", formData);
|
||||
|
||||
// 验证必填字段
|
||||
|
||||
// ========== 验证必填字段 ==========
|
||||
|
||||
// 1. 验证评查点名称
|
||||
if (!formData.name?.trim()) {
|
||||
toastService.warning("评查点名称不能为空");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (formData.name.trim().length > 30) {
|
||||
toastService.warning("评查点名称不能超过30个字符");
|
||||
return;
|
||||
}
|
||||
|
||||
// 2. 验证评查点编码
|
||||
if (!formData.code?.trim()) {
|
||||
toastService.warning("评查点编码不能为空");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// 3. 验证风险等级
|
||||
if (!formData.risk) {
|
||||
toastService.warning("请选择风险等级");
|
||||
return;
|
||||
}
|
||||
|
||||
// 4. 验证评查点类型(父级类型组)
|
||||
if (!formData.evaluation_point_groups_pid) {
|
||||
toastService.warning("请选择评查点类型");
|
||||
return;
|
||||
}
|
||||
|
||||
// 5. 验证所属规则组
|
||||
if (!formData.evaluation_point_groups_id) {
|
||||
toastService.warning("请选择所属规则组");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// 6. 验证评查设置中的规则
|
||||
if (formData.evaluation_config?.rules && Array.isArray(formData.evaluation_config.rules)) {
|
||||
const rules = formData.evaluation_config.rules;
|
||||
|
||||
if (rules.length <=0){
|
||||
toastService.warning('评查设置中尚未添加或完善规则')
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查每个规则是否选择了评查类型
|
||||
for (let i = 0; i < rules.length; i++) {
|
||||
const rule = rules[i];
|
||||
|
||||
console.log("log",rule)
|
||||
|
||||
if (!rule.type) {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1} 未选择评查类型`);
|
||||
return;
|
||||
}
|
||||
|
||||
// 根据不同规则类型验证配置
|
||||
if (!rule.config) {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1} 配置不完整`);
|
||||
return;
|
||||
}
|
||||
|
||||
// 验证各类型规则的必填字段
|
||||
switch (rule.type) {
|
||||
case 'exists':
|
||||
if (!rule.config.fields || rule.config.fields.length === 0) {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1}(有无判断):请至少选择一个字段`);
|
||||
return;
|
||||
}
|
||||
if (!rule.config.logic) {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1}(有无判断):请选择逻辑关系`);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'consistency':
|
||||
if (!rule.config.pairs || rule.config.pairs.length === 0) {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1}(一致性判断):请至少添加一对比较字段`);
|
||||
return;
|
||||
}
|
||||
// 检查每对字段是否完整
|
||||
for (let j = 0; j < rule.config.pairs.length; j++) {
|
||||
const pair = rule.config.pairs[j];
|
||||
if (!pair.sourceField || !pair.targetField || !pair.compareMethod) {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1}(一致性判断):第 ${j + 1} 对比较字段配置不完整`);
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'format':
|
||||
if (!rule.config.field) {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1}(格式判断):请选择检查字段`);
|
||||
return;
|
||||
}
|
||||
if (!rule.config.formatType) {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1}(格式判断):请选择格式类型`);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'logic':
|
||||
if (!rule.config.conditions || rule.config.conditions.length === 0) {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1}(逻辑判断):请至少添加一个条件`);
|
||||
return;
|
||||
}
|
||||
// 检查每个条件是否完整
|
||||
for (let j = 0; j < rule.config.conditions.length; j++) {
|
||||
const condition = rule.config.conditions[j];
|
||||
if (!condition.field || !condition.operator || condition.value === undefined || condition.value === '') {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1}(逻辑判断):第 ${j + 1} 个条件配置不完整`);
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'regex':
|
||||
if (!rule.config.field) {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1}(正则表达式):请选择检查字段`);
|
||||
return;
|
||||
}
|
||||
if (!rule.config.pattern) {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1}(正则表达式):请输入正则表达式`);
|
||||
return;
|
||||
}
|
||||
if (!rule.config.matchType) {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1}(正则表达式):请选择匹配类型`);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'ai':
|
||||
if (!rule.config.model) {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1}(大模型判断):请选择模型`);
|
||||
return;
|
||||
}
|
||||
if (!rule.config.prompt) {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1}(大模型判断):请输入提示词`);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'code':
|
||||
if (!rule.config.language) {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1}(自定义代码):请选择编程语言`);
|
||||
return;
|
||||
}
|
||||
if (!rule.config.code) {
|
||||
toastService.warning(`评查设置中的规则 ${i + 1}(自定义代码):请输入代码`);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 7. 验证组合逻辑
|
||||
if (formData.evaluation_config?.logicType === 'custom') {
|
||||
if (!formData.evaluation_config.customLogic?.trim()) {
|
||||
toastService.warning("请输入自定义组合逻辑");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 显示保存中状态
|
||||
setIsLoading(true);
|
||||
|
||||
@@ -386,18 +541,18 @@ export default function RuleNew() {
|
||||
evaluation_point_groups_id: formData.evaluation_point_groups_id || null,
|
||||
extraction_config: {
|
||||
llm: {
|
||||
fields: Array.isArray(formData.extraction_config?.llm?.fields) ?
|
||||
fields: Array.isArray(formData.extraction_config?.llm?.fields) ?
|
||||
[...formData.extraction_config.llm.fields] : [],
|
||||
prompt_setting: {
|
||||
type: formData.extraction_config?.llm?.prompt_setting?.type || 'system',
|
||||
type: formData.extraction_config?.llm?.prompt_setting?.type || 'llm_default_prompt',
|
||||
template: formData.extraction_config?.llm?.prompt_setting?.template || ''
|
||||
}
|
||||
},
|
||||
vlm: {
|
||||
fields: Array.isArray(formData.extraction_config?.vlm?.fields) ?
|
||||
fields: Array.isArray(formData.extraction_config?.vlm?.fields) ?
|
||||
[...formData.extraction_config.vlm.fields] : [],
|
||||
prompt_setting: {
|
||||
type: formData.extraction_config?.vlm?.prompt_setting?.type || 'system',
|
||||
type: formData.extraction_config?.vlm?.prompt_setting?.type || 'vlm_default_prompt',
|
||||
template: formData.extraction_config?.vlm?.prompt_setting?.template || ''
|
||||
}
|
||||
},
|
||||
@@ -546,7 +701,10 @@ export default function RuleNew() {
|
||||
});
|
||||
}
|
||||
|
||||
// console.log("当前评查配置-----------------:", formData.evaluation_config);
|
||||
|
||||
// console.log("当前表单数据-----------------:", formData);
|
||||
// console.log("当前评查配置-----------------:", formData.evaluation_config);
|
||||
// return;
|
||||
|
||||
// 如果是新建模式,则删除id字段
|
||||
if (!isEditMode) {
|
||||
@@ -799,7 +957,7 @@ export default function RuleNew() {
|
||||
<ExtractionSettings
|
||||
onChange={handleExtractionSettingsChange}
|
||||
initialData={formData}
|
||||
promptTypeOptions={EVALUATION_OPTIONS.promptTypeOptions}
|
||||
promptTypeOptions={EVALUATION_OPTIONS.llmPromptTypeOptions}
|
||||
vlmFieldTypeOptions={EVALUATION_OPTIONS.vlmFieldTypeOptions}
|
||||
/>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user