3.0.3: Cant fix team avg. removed.
This commit is contained in:
@@ -52,6 +52,41 @@ def api_analyze():
|
||||
'kd': total_kd / count if count else 0,
|
||||
'adr': total_adr / count if count else 0
|
||||
}
|
||||
|
||||
# Calculate 8-Dimension Averages
|
||||
radar_keys = {
|
||||
'score_aim': 'AIM', 'score_defense': 'DEFENSE', 'score_utility': 'UTILITY',
|
||||
'score_clutch': 'CLUTCH', 'score_economy': 'ECONOMY', 'score_pace': 'PACE',
|
||||
'score_pistol': 'PISTOL', 'score_stability': 'STABILITY'
|
||||
}
|
||||
radar_stats = {v: 0.0 for v in radar_keys.values()}
|
||||
|
||||
if count > 0:
|
||||
for p in player_data:
|
||||
stats = p.get('stats', {})
|
||||
for k, v in radar_keys.items():
|
||||
radar_stats[v] += float(stats.get(k) or 0.0)
|
||||
|
||||
for k in radar_stats:
|
||||
radar_stats[k] /= count
|
||||
|
||||
# Calculate Chemistry
|
||||
# Formula: Base on shared matches and win rate
|
||||
# Max Score = 100
|
||||
# 50% weight on match count (Cap at 50 matches = 50 pts)
|
||||
# 50% weight on win rate (100% WR = 50 pts)
|
||||
|
||||
avg_shared_count = 0
|
||||
avg_shared_winrate = 0
|
||||
|
||||
if shared_matches:
|
||||
avg_shared_count = len(shared_matches)
|
||||
wins = sum(1 for m in shared_matches if m['is_win'])
|
||||
avg_shared_winrate = wins / len(shared_matches)
|
||||
|
||||
chem_match_score = min(50, avg_shared_count) # 1 point per match, max 50
|
||||
chem_win_score = avg_shared_winrate * 50
|
||||
chemistry_score = chem_match_score + chem_win_score
|
||||
|
||||
# 4. Map Stats Calculation
|
||||
map_stats = {} # {map_name: {'count': 0, 'wins': 0}}
|
||||
@@ -84,6 +119,8 @@ def api_analyze():
|
||||
'players': player_data,
|
||||
'shared_matches': [dict(m) for m in shared_matches],
|
||||
'avg_stats': avg_stats,
|
||||
'radar_stats': radar_stats,
|
||||
'chemistry_score': chemistry_score,
|
||||
'map_stats': map_stats_list,
|
||||
'total_shared_matches': total_shared_matches
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user