fix: 修改评查点设置中的多模态抽取设置的逻辑。

This commit is contained in:
2025-11-10 20:40:08 +08:00
parent b375c35825
commit ddad57529d
3 changed files with 395 additions and 182 deletions
+170 -12
View File
@@ -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>