|
|
@@ -479,7 +479,8 @@ class TableComparator:
|
|
|
'value1': value1,
|
|
|
'value2': value2,
|
|
|
'diff_amount': abs(num1 - num2),
|
|
|
- 'description': f'金额不一致: {value1} vs {value2}'
|
|
|
+ 'description': f'金额不一致: {value1} vs {value2}',
|
|
|
+ 'severity': 'high' # ✅ 修改:金额差异 = high
|
|
|
}
|
|
|
else:
|
|
|
result['match'] = False
|
|
|
@@ -487,7 +488,8 @@ class TableComparator:
|
|
|
'type': 'table_text',
|
|
|
'value1': value1,
|
|
|
'value2': value2,
|
|
|
- 'description': f'长数字字符串不一致: {value1} vs {value2}'
|
|
|
+ 'description': f'长数字字符串不一致: {value1} vs {value2}',
|
|
|
+ 'severity': 'medium' # ✅ 修改:数字字符串差异 = medium
|
|
|
}
|
|
|
elif column_type == 'datetime':
|
|
|
datetime1 = self.detector.extract_datetime(v1)
|
|
|
@@ -499,7 +501,8 @@ class TableComparator:
|
|
|
'type': 'table_datetime',
|
|
|
'value1': value1,
|
|
|
'value2': value2,
|
|
|
- 'description': f'日期时间不一致: {value1} vs {value2}'
|
|
|
+ 'description': f'日期时间不一致: {value1} vs {value2}',
|
|
|
+ 'severity': 'medium' # 日期差异 = medium
|
|
|
}
|
|
|
else:
|
|
|
similarity = self.calculator.calculate_text_similarity(v1, v2)
|
|
|
@@ -510,7 +513,8 @@ class TableComparator:
|
|
|
'value1': value1,
|
|
|
'value2': value2,
|
|
|
'similarity': similarity,
|
|
|
- 'description': f'文本不一致: {value1} vs {value2} (相似度: {similarity:.1f}%)'
|
|
|
+ 'description': f'文本不一致: {value1} vs {value2} (相似度: {similarity:.1f}%)',
|
|
|
+ 'severity': 'low' if similarity > 80 else 'medium' # 根据相似度判断
|
|
|
}
|
|
|
|
|
|
return result
|
|
|
@@ -544,6 +548,7 @@ class TableComparator:
|
|
|
'file1_value': cell1,
|
|
|
'file2_value': cell2,
|
|
|
'description': f'金额不一致: {cell1} vs {cell2}',
|
|
|
+ 'severity': 'high', # ✅ 添加:金额差异 = high
|
|
|
'row_index': i,
|
|
|
'col_index': j
|
|
|
})
|
|
|
@@ -554,6 +559,7 @@ class TableComparator:
|
|
|
'file1_value': cell1,
|
|
|
'file2_value': cell2,
|
|
|
'description': f'文本不一致: {cell1} vs {cell2}',
|
|
|
+ 'severity': 'medium', # ✅ 添加:文本差异 = medium
|
|
|
'row_index': i,
|
|
|
'col_index': j
|
|
|
})
|
|
|
@@ -774,13 +780,19 @@ class TableComparator:
|
|
|
if col_idx in mismatched_columns:
|
|
|
type_mismatch_note = " [列类型冲突]"
|
|
|
|
|
|
+ # ✅ 确定最终严重度:优先使用 diff_info 的 severity
|
|
|
+ base_severity = diff_info.get('severity', 'medium')
|
|
|
+
|
|
|
+ # 如果列类型冲突,且基础严重度不是 high,则提升到 high
|
|
|
+ final_severity = 'high' if col_idx in mismatched_columns else base_severity
|
|
|
+
|
|
|
differences.append({
|
|
|
'type': diff_info['type'],
|
|
|
'position': f'第{actual_row_num}行第{col_idx + 1}列',
|
|
|
'file1_value': diff_info['value1'],
|
|
|
'file2_value': diff_info['value2'],
|
|
|
'description': diff_info['description'] + type_mismatch_note,
|
|
|
- 'severity': 'high' if col_idx in mismatched_columns else 'medium',
|
|
|
+ 'severity': final_severity, # ✅ 使用计算后的严重度
|
|
|
'row_index': actual_row_num,
|
|
|
'col_index': col_idx,
|
|
|
'column_name': column_name,
|