DawnC commited on
Commit
914c5fc
1 Parent(s): 3b63b77

Update scoring_calculation_system.py

Browse files
Files changed (1) hide show
  1. scoring_calculation_system.py +64 -69
scoring_calculation_system.py CHANGED
@@ -1066,81 +1066,76 @@ def calculate_compatibility_score(breed_info: dict, user_prefs: UserPreferences)
1066
  final_score = base_score + barking_penalty + special_adjustments + trainability_bonus
1067
  return max(0.1, min(1.0, final_score))
1068
 
 
 
1069
  print("\n=== 開始計算品種相容性分數 ===")
1070
  print(f"處理品種: {breed_info.get('Breed', 'Unknown')}")
1071
  print(f"品種信息: {breed_info}")
1072
  print(f"使用者偏好: {vars(user_prefs)}")
1073
 
1074
- # 1. 計算基礎分數
1075
- try:
1076
- print("\n=== 開始計算品種相容性分數 ===")
1077
- print(f"處理品種: {breed_info.get('Breed', 'Unknown')}")
1078
- print(f"品種信息: {breed_info}")
1079
- print(f"使用者偏好: {vars(user_prefs)}")
1080
-
1081
- # 計算所有基礎分數並整合到字典中
1082
- scores = {
1083
- 'space': calculate_space_score(
1084
- breed_info['Size'],
1085
- user_prefs.living_space,
1086
- user_prefs.yard_access != 'no_yard',
1087
- breed_info.get('Exercise Needs', 'Moderate')
1088
- ),
1089
- 'exercise': calculate_exercise_score(
1090
- breed_info.get('Exercise Needs', 'Moderate'),
1091
- user_prefs.exercise_time
1092
- ),
1093
- 'grooming': calculate_grooming_score(
1094
- breed_info.get('Grooming Needs', 'Moderate'),
1095
- user_prefs.grooming_commitment.lower(),
1096
- breed_info['Size']
1097
- ),
1098
- 'experience': calculate_experience_score(
1099
- breed_info.get('Care Level', 'Moderate'),
1100
- user_prefs.experience_level,
1101
- breed_info.get('Temperament', '')
1102
- ),
1103
- 'health': calculate_health_score(
1104
- breed_info.get('Breed', ''),
1105
- user_prefs
1106
- ),
1107
- 'noise': calculate_noise_score(
1108
- breed_info.get('Breed', ''),
1109
- user_prefs
1110
- )
1111
- }
1112
-
1113
- # 檢查關鍵不適配情況
1114
- critical_issues = check_critical_matches(scores, user_prefs)
1115
- if critical_issues['has_critical']:
1116
- return apply_critical_penalty(scores, critical_issues)
1117
-
1118
- # 計算環境適應性加成
1119
- adaptability_bonus = calculate_environmental_fit(breed_info, user_prefs)
1120
-
1121
- # 計算最終加權分數
1122
- final_score = calculate_final_weighted_score(
1123
- scores=scores,
1124
- user_prefs=user_prefs,
1125
- breed_info=breed_info,
1126
- adaptability_bonus=adaptability_bonus
1127
  )
1128
-
1129
- # 更新最終結果
1130
- scores.update({
1131
- 'overall': final_score,
1132
- 'adaptability_bonus': adaptability_bonus
1133
- })
1134
-
1135
- return scores
1136
-
1137
- except Exception as e:
1138
- print(f"\n!!!!! 發生嚴重錯誤 !!!!!")
1139
- print(f"錯誤類型: {type(e).__name__}")
1140
- print(f"錯誤訊息: {str(e)}")
1141
- print(f"完整錯誤追蹤:")
1142
- print(traceback.format_exc())
1143
- return {k: 0.6 for k in ['space', 'exercise', 'grooming', 'experience', 'health', 'noise', 'overall']}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1144
 
1145
  def check_critical_matches(scores: dict, user_prefs: UserPreferences) -> dict:
1146
  """評估是否存在極端不適配的情況"""
 
1066
  final_score = base_score + barking_penalty + special_adjustments + trainability_bonus
1067
  return max(0.1, min(1.0, final_score))
1068
 
1069
+
1070
+ # 1. 計算基礎分數
1071
  print("\n=== 開始計算品種相容性分數 ===")
1072
  print(f"處理品種: {breed_info.get('Breed', 'Unknown')}")
1073
  print(f"品種信息: {breed_info}")
1074
  print(f"使用者偏好: {vars(user_prefs)}")
1075
 
1076
+ # 計算所有基礎分數並整合到字典中
1077
+ scores = {
1078
+ 'space': calculate_space_score(
1079
+ breed_info['Size'],
1080
+ user_prefs.living_space,
1081
+ user_prefs.yard_access != 'no_yard',
1082
+ breed_info.get('Exercise Needs', 'Moderate')
1083
+ ),
1084
+ 'exercise': calculate_exercise_score(
1085
+ breed_info.get('Exercise Needs', 'Moderate'),
1086
+ user_prefs.exercise_time
1087
+ ),
1088
+ 'grooming': calculate_grooming_score(
1089
+ breed_info.get('Grooming Needs', 'Moderate'),
1090
+ user_prefs.grooming_commitment.lower(),
1091
+ breed_info['Size']
1092
+ ),
1093
+ 'experience': calculate_experience_score(
1094
+ breed_info.get('Care Level', 'Moderate'),
1095
+ user_prefs.experience_level,
1096
+ breed_info.get('Temperament', '')
1097
+ ),
1098
+ 'health': calculate_health_score(
1099
+ breed_info.get('Breed', ''),
1100
+ user_prefs
1101
+ ),
1102
+ 'noise': calculate_noise_score(
1103
+ breed_info.get('Breed', ''),
1104
+ user_prefs
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1105
  )
1106
+ }
1107
+
1108
+ # 檢查關鍵不適配情況
1109
+ critical_issues = check_critical_matches(scores, user_prefs)
1110
+ if critical_issues['has_critical']:
1111
+ return apply_critical_penalty(scores, critical_issues)
1112
+
1113
+ # 計算環境適應性加成
1114
+ adaptability_bonus = calculate_environmental_fit(breed_info, user_prefs)
1115
+
1116
+ # 計算最終加權分數
1117
+ final_score = calculate_final_weighted_score(
1118
+ scores=scores,
1119
+ user_prefs=user_prefs,
1120
+ breed_info=breed_info,
1121
+ adaptability_bonus=adaptability_bonus
1122
+ )
1123
+
1124
+ # 更新最終結果
1125
+ scores.update({
1126
+ 'overall': final_score,
1127
+ 'adaptability_bonus': adaptability_bonus
1128
+ })
1129
+
1130
+ return scores
1131
+
1132
+ except Exception as e:
1133
+ print(f"\n!!!!! 發生嚴重錯誤 !!!!!")
1134
+ print(f"錯誤類型: {type(e).__name__}")
1135
+ print(f"錯誤訊息: {str(e)}")
1136
+ print(f"完整錯誤追蹤:")
1137
+ print(traceback.format_exc())
1138
+ return {k: 0.6 for k in ['space', 'exercise', 'grooming', 'experience', 'health', 'noise', 'overall']}
1139
 
1140
  def check_critical_matches(scores: dict, user_prefs: UserPreferences) -> dict:
1141
  """評估是否存在極端不適配的情況"""