2.0.0 Alpha: Data Refinery

This commit is contained in:
2026-08-08 21:31:56 +08:00
parent fa75081d4d
commit 562775e5db
48 changed files with 4172 additions and 661 deletions
+34 -6
View File
@@ -60,10 +60,11 @@ class MetaProcessor(BaseFeatureProcessor):
# Get recent matches for volatility
cursor.execute("""
SELECT rating
FROM fact_match_players
WHERE steam_id_64 = ?
ORDER BY match_id DESC
SELECT p.rating
FROM fact_match_players p
JOIN fact_matches m ON m.match_id = p.match_id
WHERE p.steam_id_64 = ?
ORDER BY m.start_time DESC, p.match_id DESC
LIMIT 20
""", (steam_id,))
@@ -141,8 +142,35 @@ class MetaProcessor(BaseFeatureProcessor):
map_ratings = [row[1] for row in cursor.fetchall() if row[1] is not None]
map_stability = SafeAggregator.safe_stddev(map_ratings, 0.0)
# ELO tier stability (placeholder)
elo_tier_stability = rating_volatility # Simplified
cursor.execute("""
SELECT
CASE
WHEN p.origin_elo - opponent.avg_elo > 200 THEN 'lower'
WHEN p.origin_elo - opponent.avg_elo < -200 THEN 'higher'
ELSE 'similar'
END AS opponent_tier,
AVG(p.rating) AS avg_rating
FROM fact_match_players p
JOIN (
SELECT match_id, team_id, AVG(origin_elo) AS avg_elo
FROM fact_match_players
WHERE origin_elo IS NOT NULL
GROUP BY match_id, team_id
) opponent
ON opponent.match_id = p.match_id
AND opponent.team_id != p.team_id
WHERE p.steam_id_64 = ?
AND p.origin_elo IS NOT NULL
AND p.rating IS NOT NULL
GROUP BY opponent_tier
""", (steam_id,))
elo_tier_ratings = [
row[1] for row in cursor.fetchall() if row[1] is not None
]
elo_tier_stability = SafeAggregator.safe_stddev(
elo_tier_ratings,
0.0,
)
return {
'meta_rating_volatility': round(rating_volatility, 3),