Explorar el Código

feat: 添加差异严重度标记,增强比较结果的可读性

zhch158_admin hace 4 semanas
padre
commit
9ee101cda4
Se han modificado 1 ficheros con 17 adiciones y 5 borrados
  1. 17 5
      comparator/table_comparator.py

+ 17 - 5
comparator/table_comparator.py

@@ -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,