Add sample scenario data and reporting updates

This commit is contained in:
maxwes08 committed 2026-11-04 09:53:53 +01:00
1 parent aa0028e7e0
commit 133bc6ce3f
15 files changed
+444 -238

No files matched your search

+3 -2
View File
@@ -55,6 +55,7 @@ def fields_templates(conn, game_id):
def player_values(r):
now=datetime.now(timezone.utc)
p=dict(r["latest_data"] or {})
p.setdefault('playStyle',(r.get('metadata') or {}).get('personaLabel'))
p.update({"playerId":r["id"],"gameId":r["game_id"],"robloxUserId":r["roblox_user_id"],"name":r["display_name"],
"id":f"User ID {r['roblox_user_id']}","firstSeen":r["first_seen"],"lastSeenAt":r["last_seen"],"snapshotAt":r["snapshot_at"],
"firstSeenDays":(now-r["first_seen"]).total_seconds()/86400,
@@ -84,7 +85,7 @@ def player_list(conn,gid,params):
fields,templates=fields_templates(conn,gid)
players=all_players(conn,gid)
ranking=params.get('ranking',['level'])[0]
if ranking not in {f['key'] for f in fields}: raise ApiError(400,'Unknown ranking.')
if ranking not in {f['key'] for f in fields if f['format'] not in ('text','json')}: raise ApiError(400,'Unknown ranking.')
boards=[]
for key in dict.fromkeys(['robux','playtime','cash',ranking]):
field=next((f for f in fields if f['key']==key),None)
@@ -281,7 +282,7 @@ def player_history(conn,gid,pid,fields,params):
WHERE game_id=ps.game_id AND player_id=ps.player_id AND purchased_at<=ps.captured_at AND unit_price_robux>0) sp
WHERE ps.game_id=%s AND ps.player_id=%s ORDER BY ps.captured_at,ps.id""",(gid,pid))
supported={'sessions','playtime','avgSession','medianSession','activeDays','robuxPerHour','robux','purchases'}
graph_fields=[dict(f) for f in fields if f['source']=='snapshot' or f['key'] in supported]
graph_fields=[dict(f) for f in fields if (f['source']=='snapshot' or f['key'] in supported) and f['format'] not in ('text','json')]
for key,title,fmt in [('sessions','Sessions','number'),('playtime','Lifetime playtime','duration'),
('avgSession','Average session','duration'),('medianSession','Median session','duration'),
('activeDays','Active days (30d)','number'),('robux','Robux spent','robux'),