1.3.0: Updated ONLINE.

This commit is contained in:
2026-01-27 02:20:55 +08:00
parent e006772e9c
commit a148c2d511
12 changed files with 36 additions and 3 deletions

View File

@@ -2,3 +2,5 @@ Flask
pandas
numpy
playwright
gunicorn
gevent

View File

@@ -295,7 +295,9 @@ class FeatureService:
SUM(first_death) as sum_fd,
SUM(clutch_1v1) as sum_1v1,
SUM(clutch_1v2) as sum_1v2,
SUM(clutch_1v3) + SUM(clutch_1v4) + SUM(clutch_1v5) as sum_1v3p,
SUM(clutch_1v3) as sum_1v3,
SUM(clutch_1v4) as sum_1v4,
SUM(clutch_1v5) as sum_1v5,
SUM(kill_2) as sum_2k,
SUM(kill_3) as sum_3k,
SUM(kill_4) as sum_4k,
@@ -340,6 +342,15 @@ class FeatureService:
df['basic_avg_kill_3'] = df['sum_3k'] / df['matches_played']
df['basic_avg_kill_4'] = df['sum_4k'] / df['matches_played']
df['basic_avg_kill_5'] = df['sum_5k'] / df['matches_played']
# New Metrics
df['basic_multi_kill_rate'] = (df['sum_2k'] + df['sum_3k'] + df['sum_4k'] + df['sum_5k']) / df['rounds_played'].replace(0, 1)
df['basic_total_1v1'] = df['sum_1v1']
df['basic_total_1v2'] = df['sum_1v2']
df['basic_total_1v3'] = df['sum_1v3']
df['basic_total_1v4'] = df['sum_1v4']
df['basic_total_1v5'] = df['sum_1v5']
df['basic_avg_assisted_kill'] = df['sum_assist'] / df['matches_played']
df['basic_avg_perfect_kill'] = df['sum_perfect'] / df['matches_played']
df['basic_avg_revenge_kill'] = df['sum_revenge'] / df['matches_played']

View File

@@ -222,8 +222,16 @@
{{ detail_item('3K Rounds (三杀)', features['basic_avg_kill_3'], 'basic_avg_kill_3') }}
{{ detail_item('4K Rounds (四杀)', features['basic_avg_kill_4'], 'basic_avg_kill_4') }}
{{ detail_item('5K Rounds (五杀)', features['basic_avg_kill_5'], 'basic_avg_kill_5') }}
{{ detail_item('Multi-Kill % (多杀率)', features['basic_multi_kill_rate'], 'basic_multi_kill_rate', '{:.1%}') }}
<!-- Row 6: Special -->
<!-- Row 6: Clutch -->
{{ detail_item('1v1 Wins (1v1胜)', features['basic_total_1v1'], 'basic_total_1v1', '{:.0f}') }}
{{ detail_item('1v2 Wins (1v2胜)', features['basic_total_1v2'], 'basic_total_1v2', '{:.0f}') }}
{{ detail_item('1v3 Wins (1v3胜)', features['basic_total_1v3'], 'basic_total_1v3', '{:.0f}') }}
{{ detail_item('1v4 Wins (1v4胜)', features['basic_total_1v4'], 'basic_total_1v4', '{:.0f}') }}
{{ detail_item('1v5 Wins (1v5胜)', features['basic_total_1v5'], 'basic_total_1v5', '{:.0f}') }}
<!-- Row 7: Special -->
{{ detail_item('Perfect Kills (无伤杀)', features['basic_avg_perfect_kill'], 'basic_avg_perfect_kill') }}
{{ detail_item('Revenge Kills (复仇杀)', features['basic_avg_revenge_kill'], 'basic_avg_revenge_kill') }}
</div>
@@ -602,7 +610,7 @@ document.addEventListener('DOMContentLoaded', function() {
// Map friendly names to keys
const keys = ['score_bat', 'score_hps', 'score_ptl', 'score_tct', 'score_util', 'score_sta'];
// Corresponding Labels
const rawLabels = ['Aim (BAT)', 'Clutch (HPS)', 'Pistol (PTL)', 'Defense (SIDE)', 'Util (UTIL)', 'Rating (STA)'];
const rawLabels = ['Aim (BAT)', 'Clutch (HPS)', 'Pistol (PTL)', 'Defense (SIDE)', 'Util (UTIL)', 'Stability (STA)'];
const labels = rawLabels.map((l, i) => {
const k = keys[i];

12
wsgi.py Normal file
View File

@@ -0,0 +1,12 @@
import sys
import os
# Ensure the project root is in sys.path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from web.app import create_app
app = create_app()
if __name__ == "__main__":
app.run()