Passa al contenuto principale

Viste Tester

AttivaPermanenteSorgente: Supabase (playroll_supa_new)

View lato server che rispondono alle domande di supporto a livello di giocatore: "cosa ha caricato questo giocatore, quando, e perché una sessione è stata bloccata?". Basate su view SQL nello schema public, con prefisso support_*, oltre a un helper di lookup dell'identità.

Flusso di lookup

Il percorso di lookup canonico per una segnalazione di un tester è:

playroll_users_view

Risoluzione dell'identità. Mappa uno qualsiasi degli identificativi che un giocatore potrebbe citare a un user_id.

ColonnaTipo
user_idtext
steam_idtext
steam_usernametext
avatar_urltext
emailcharacter varying
discord_usernametext

support_player_upload_summary

Una riga per giocatore. Il punto di partenza per il triage: ambito dell'attività, completezza e intervallo temporale.

ColonnaTipoSignificato
user_id, display_name, steam_id, avatar_url, discord_usernametextIdentità.
search_texttextStringa di identità concatenata e ricercabile.
total_sessions_seenbigintTutte le sessioni osservate per questo giocatore.
sessions_with_uploadsbigintSessioni con almeno un artefatto arrivato.
valid_current_sessionsbigintSessioni che soddisfano il contratto MP4+CSV.
valid_future_triplet_sessionsbigintSessioni che soddisfano MP4+CSV+JSON.
partial_upload_sessions / no_upload_sessionsbigintDettaglio dell'incompletezza.
total_files, mp4_files, csv_files, json_files, ogg_filesnumericConteggi degli artefatti per tipologia.
total_size_bytes, total_size_prettybigint / textByte totali caricati.
first_upload_at, last_upload_attimestamptzFinestra di attività.
gamestext[]Giochi visti per questo giocatore.
sessions_with_known_duration, known_recorded_seconds, known_recorded_hoursbigint / numericCopertura della durata.
duration_coverage_pct_for_valid_current_sessionsnumericFrazione delle sessioni valide con durata nota.

support_recording_sessions

Una riga per sessione di registrazione. La principale superficie di drill-down per "perché questa sessione non è stata caricata?".

ColonnaTipoSignificato
user_id, display_name, steam_id, avatar_url, discord_usernametextIdentità.
session_idtextChiave della sessione.
game, game_slug, game_nametextRiferimenti al gioco.
recording_session_statustextStato del ciclo di vita lato server.
session_created_at, session_updated_at, client_ended_at, server_verified_attimestamptzAncore del ciclo di vita.
first_upload_at, last_upload_attimestamptzFinestra di upload.
recording_started_at, recording_ended_attimestamptzFinestra di cattura.
duration_seconds, duration_qualitybigint / textDurata misurata ed etichetta di confidenza.
total_files, mp4_count, csv_count, json_count, ogg_countbigintConteggi degli artefatti.
total_size_bytesbigintByte della sessione.
has_current_required_pair, has_future_required_tripletbooleanVerifiche di contratto.
upload_consistency_statustextCoerenza tra gli artefatti attesi e quelli osservati.
required_artifact_modetextIndica se la sessione è valutata rispetto al contratto attuale (coppia) o futuro (tripletta).
uploadability_statustextEsito finale: uploadable, blocked, partial, ecc.
block_reasontextMotivazione leggibile quando uploadability_status è di tipo bloccante.
mp4_s3_keys, csv_s3_keys, json_s3_keys, ogg_s3_keystext[]Chiavi S3 per tipologia, per il fetch diretto.
filesjsonbMetadati completi per ciascun artefatto.
detected_resolutionjsonbRisoluzione(i) di cattura osservate per la sessione.

support_recording_files

Una riga per artefatto caricato. Da usare quando si indaga su un file specifico o si costruisce un link S3 da condividere con un giocatore.

ColonnaTipoSignificato
upload_iduuidChiave dell'artefatto.
user_id, display_name, steam_id, avatar_url, discord_usernametextIdentità.
session_idtextSessione di appartenenza.
game_slugtextRiferimento al gioco.
file_type, filename, size_bytestext / text / bigintDescrittori dell'artefatto.
statustextStato di upload dell'artefatto.
uploaded_attimestamptzQuando è arrivato.
recording_started_at, recording_ended_attimestamptzFinestra di cattura della sessione sorgente.
s3_bucket, s3_key, s3_uri, s3_object_urltextRiferimenti di destinazione.

Helper operativi

Queste view pubbliche non sono di per sé rivolte a tester o VC, ma sono consumate dalle view qui sopra:

  • daily_upload_stats — conteggi giornalieri di file/utenti/sessioni/byte per tipologia.
  • session_completion_statusexpected_chunks vs uploaded_chunks per sessione, oltre a is_complete.
  • complete_triplets — per ciascuna (user, session, chunk_dir) indica se mp4+csv+json sono tutti presenti.
  • upload_summary_by_user — totali per utente, inclusa la lista dei giochi (forma più vecchia; preferire support_player_upload_summary).

Relazione con le dashboard OTEL

Le viste tester rispondono a "cosa è arrivato sul server?" — stato autorevole lato server. Le dashboard OTEL (es. Capture Pipeline) rispondono a "cosa ha provato a fare il client?" — telemetria emessa dal client. Quando un giocatore segnala una sessione mancante, l'ordine consigliato è:

  1. OTEL Errors & Auth per confermare che il client fosse autenticato e non bloccato.
  2. OTEL Capture Pipeline (client) per confermare che il funnel di registrazione abbia raggiunto recording.stop.
  3. support_recording_sessions per vedere se il server ha ricevuto la sessione e cosa indicano uploadability_status / block_reason.
  4. support_recording_files per esaminare gli artefatti specifici e le loro destinazioni S3.