DawnC commited on
Commit
d72aa85
1 Parent(s): ce1b7d5

Update scoring_calculation_system.py

Browse files
Files changed (1) hide show
  1. scoring_calculation_system.py +9 -15
scoring_calculation_system.py CHANGED
@@ -27,7 +27,6 @@ class UserPreferences:
27
  living_environment: str = "ground_floor" # "ground_floor", "with_elevator", "walk_up" - 居住環境細節
28
 
29
  def __post_init__(self):
30
- """在初始化後運行,用於設置派生值"""
31
  if self.barking_acceptance is None:
32
  self.barking_acceptance = self.noise_tolerance
33
 
@@ -96,7 +95,7 @@ def calculate_breed_bonus(breed_info: dict, user_prefs: 'UserPreferences') -> fl
96
  'territorial': -0.05
97
  }
98
 
99
- # 年齡評估這樣能更細緻
100
  age_adjustments = {
101
  'toddler': {'bonus_mult': 0.7, 'penalty_mult': 1.3},
102
  'school_age': {'bonus_mult': 1.0, 'penalty_mult': 1.0},
@@ -129,7 +128,7 @@ def calculate_breed_bonus(breed_info: dict, user_prefs: 'UserPreferences') -> fl
129
  bonus += min(0.1, skill_bonus)
130
 
131
 
132
- # 6. 適應性評估 - 根據具體環境給予更細緻的評分
133
  adaptability_bonus = 0.0
134
  if breed_info.get('Size') == "Small" and user_prefs.living_space == "apartment":
135
  adaptability_bonus += 0.08 # 小型犬更適合公寓
@@ -165,7 +164,6 @@ def calculate_additional_factors(breed_info: dict, user_prefs: 'UserPreferences'
165
  """
166
  計算額外的評估因素,結合品種特性與使用者需求的全面評估系統
167
 
168
- 此函數整合了:
169
  1. 多功能性評估 - 品種的多樣化能力
170
  2. 訓練性評估 - 學習和服從能力
171
  3. 能量水平評估 - 活力和運動需求
@@ -229,7 +227,7 @@ def calculate_additional_factors(breed_info: dict, user_prefs: 'UserPreferences'
229
 
230
  factors['versatility'] = min(1.0, trait_score + role_score)
231
 
232
- # 2. 訓練性評估 - 考慮使用者經驗
233
  trainable_traits = {
234
  'intelligent': 0.3,
235
  'eager to please': 0.3,
@@ -251,7 +249,7 @@ def calculate_additional_factors(breed_info: dict, user_prefs: 'UserPreferences'
251
  factors['trainability'] = min(1.0, base_trainability *
252
  experience_multipliers.get(user_prefs.experience_level, 1.0))
253
 
254
- # 3. 能量水平評估 - 強化運動需求匹配
255
  exercise_needs = breed_info.get('Exercise Needs', 'MODERATE').upper()
256
  energy_levels = {
257
  'VERY HIGH': {
@@ -288,7 +286,7 @@ def calculate_additional_factors(breed_info: dict, user_prefs: 'UserPreferences'
288
 
289
  factors['energy_level'] = energy_score
290
 
291
- # 4. 美容需求評估 - 加入更多毛髮類型考量
292
  grooming_needs = breed_info.get('Grooming Needs', 'MODERATE').upper()
293
  grooming_levels = {
294
  'HIGH': 1.0,
@@ -316,7 +314,7 @@ def calculate_additional_factors(breed_info: dict, user_prefs: 'UserPreferences'
316
  factors['grooming_needs'] = min(1.0, base_grooming *
317
  commitment_multipliers.get(user_prefs.grooming_commitment, 1.0))
318
 
319
- # 5. 社交需求評估 - 加強家庭情況考量
320
  social_traits = {
321
  'friendly': 0.25,
322
  'social': 0.25,
@@ -973,8 +971,7 @@ def calculate_compatibility_score(breed_info: dict, user_prefs: UserPreferences)
973
  def calculate_health_score(breed_name: str, user_prefs: UserPreferences) -> float:
974
  """
975
  計算品種健康分數,加強健康問題的影響力和與使用者敏感度的連結
976
-
977
- 重要改進:
978
  1. 根據使用者的健康敏感度調整分數
979
  2. 更嚴格的健康問題評估
980
  3. 考慮多重健康問題的累積效應
@@ -1009,7 +1006,7 @@ def calculate_compatibility_score(breed_info: dict, user_prefs: UserPreferences)
1009
  # 輕微健康問題 - 輕微扣分
1010
  minor_conditions = {
1011
  'dental issues': -0.08, # 牙齒問題,需要定期護理
1012
- 'weight gain tendency': -0.08, # 易胖體質,需要控制飲食
1013
  'minor allergies': -0.06, # 輕微過敏,可控制
1014
  'seasonal allergies': -0.06 # 季節性過敏
1015
  }
@@ -1080,7 +1077,7 @@ def calculate_compatibility_score(breed_info: dict, user_prefs: UserPreferences)
1080
 
1081
  def calculate_noise_score(breed_name: str, user_prefs: UserPreferences) -> float:
1082
  """
1083
- 計算品種噪音分數,特別加強噪音程度與生活環境的關聯性評估
1084
  """
1085
  if breed_name not in breed_noise_info:
1086
  return 0.5
@@ -1601,7 +1598,6 @@ def calculate_breed_compatibility_score(scores: dict, user_prefs: UserPreference
1601
 
1602
  def calculate_weights():
1603
  """
1604
- 計算動態權重,特別關注:
1605
  1. 條件極端度對權重的影響
1606
  2. 多重條件組合的權重調整
1607
  3. 品種特性對權重分配的影響
@@ -1659,7 +1655,6 @@ def calculate_breed_compatibility_score(scores: dict, user_prefs: UserPreference
1659
 
1660
  def calculate_weight_adjustments(extremities):
1661
  """
1662
- 根據條件極端度計算權重調整,特別強化:
1663
  1. 高運動量時對耐力型犬種的偏好
1664
  2. 專家級別對工作犬種的偏好
1665
  3. 條件組合的整體評估
@@ -1762,7 +1757,6 @@ def calculate_breed_compatibility_score(scores: dict, user_prefs: UserPreference
1762
 
1763
  def apply_special_case_adjustments(score):
1764
  """
1765
- 處理特殊情況的分數調整,著重:
1766
  1. 條件組合的協同效應
1767
  2. 品種特性的特殊要求
1768
  3. 極端情況的處理
 
27
  living_environment: str = "ground_floor" # "ground_floor", "with_elevator", "walk_up" - 居住環境細節
28
 
29
  def __post_init__(self):
 
30
  if self.barking_acceptance is None:
31
  self.barking_acceptance = self.noise_tolerance
32
 
 
95
  'territorial': -0.05
96
  }
97
 
98
+ # 年齡評估
99
  age_adjustments = {
100
  'toddler': {'bonus_mult': 0.7, 'penalty_mult': 1.3},
101
  'school_age': {'bonus_mult': 1.0, 'penalty_mult': 1.0},
 
128
  bonus += min(0.1, skill_bonus)
129
 
130
 
131
+ # 6. 適應性評估
132
  adaptability_bonus = 0.0
133
  if breed_info.get('Size') == "Small" and user_prefs.living_space == "apartment":
134
  adaptability_bonus += 0.08 # 小型犬更適合公寓
 
164
  """
165
  計算額外的評估因素,結合品種特性與使用者需求的全面評估系統
166
 
 
167
  1. 多功能性評估 - 品種的多樣化能力
168
  2. 訓練性評估 - 學習和服從能力
169
  3. 能量水平評估 - 活力和運動需求
 
227
 
228
  factors['versatility'] = min(1.0, trait_score + role_score)
229
 
230
+ # 2. 訓練性評估
231
  trainable_traits = {
232
  'intelligent': 0.3,
233
  'eager to please': 0.3,
 
249
  factors['trainability'] = min(1.0, base_trainability *
250
  experience_multipliers.get(user_prefs.experience_level, 1.0))
251
 
252
+ # 3. 能量水平評估
253
  exercise_needs = breed_info.get('Exercise Needs', 'MODERATE').upper()
254
  energy_levels = {
255
  'VERY HIGH': {
 
286
 
287
  factors['energy_level'] = energy_score
288
 
289
+ # 4. 美容需求評估
290
  grooming_needs = breed_info.get('Grooming Needs', 'MODERATE').upper()
291
  grooming_levels = {
292
  'HIGH': 1.0,
 
314
  factors['grooming_needs'] = min(1.0, base_grooming *
315
  commitment_multipliers.get(user_prefs.grooming_commitment, 1.0))
316
 
317
+ # 5. 社交需求評估
318
  social_traits = {
319
  'friendly': 0.25,
320
  'social': 0.25,
 
971
  def calculate_health_score(breed_name: str, user_prefs: UserPreferences) -> float:
972
  """
973
  計算品種健康分數,加強健康問題的影響力和與使用者敏感度的連結
974
+
 
975
  1. 根據使用者的健康敏感度調整分數
976
  2. 更嚴格的健康問題評估
977
  3. 考慮多重健康問題的累積效應
 
1006
  # 輕微健康問題 - 輕微扣分
1007
  minor_conditions = {
1008
  'dental issues': -0.08, # 牙齒問題,需要定期護理
1009
+ 'weight gain tendency': -0.08, # 易胖體質,需要控制飲食
1010
  'minor allergies': -0.06, # 輕微過敏,可控制
1011
  'seasonal allergies': -0.06 # 季節性過敏
1012
  }
 
1077
 
1078
  def calculate_noise_score(breed_name: str, user_prefs: UserPreferences) -> float:
1079
  """
1080
+ 計算品種噪音分數,特別加強噪音程度與生活環境的關聯性評估,很多人棄養就是因為叫聲
1081
  """
1082
  if breed_name not in breed_noise_info:
1083
  return 0.5
 
1598
 
1599
  def calculate_weights():
1600
  """
 
1601
  1. 條件極端度對權重的影響
1602
  2. 多重條件組合的權重調整
1603
  3. 品種特性對權重分配的影響
 
1655
 
1656
  def calculate_weight_adjustments(extremities):
1657
  """
 
1658
  1. 高運動量時對耐力型犬種的偏好
1659
  2. 專家級別對工作犬種的偏好
1660
  3. 條件組合的整體評估
 
1757
 
1758
  def apply_special_case_adjustments(score):
1759
  """
 
1760
  1. 條件組合的協同效應
1761
  2. 品種特性的特殊要求
1762
  3. 極端情況的處理