3.0.3: Cant fix team avg. removed.

This commit is contained in:
2026-01-29 23:44:02 +08:00
parent 3bb3d61c2e
commit ba5bf14ee2
10 changed files with 220 additions and 84 deletions

View File

@@ -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
})