Home / Blog / ProdottoProdotto

Le statistiche EA, importate da sole. Come funziona davvero.

Una rapida occhiata sotto il cofano: cosa legge ElevenBase, cosa non legge, e perche' ogni tanto una partita ci mette qualche minuto in piu'.

Cover editoriale: Le statistiche EA, importate da sole. Come funziona davvero.

Una delle cose che diciamo piu' spesso, in home e nelle guide, e' che le statistiche EA del club si importano "da sole". E' vero alla lettera, ma e' anche una di quelle frasi che, dette cosi', sollevano subito una domanda: "ok, ma come?". Questo articolo prova a rispondere senza nascondere niente, perche' chi gestisce un club Pro Clubs ha imparato a diffidare delle automazioni opache: se non capisci come funziona, non puoi prevederla quando smette di funzionare.

La pipeline in quattro passaggi

Tutto ruota attorno a una edge function Supabase chiamata sync-ea-club. La function e' un piccolo programma TypeScript che gira sui server di Supabase, lontano dal browser dell'utente, e fa quattro cose in sequenza ogni volta che viene chiamata:

  1. Legge dal team su ElevenBase l'ID del club EA e la piattaforma su cui giocate (Next gen vs Old gen).
  2. Interroga l'API pubblica EA Sports FC del club, chiede l'elenco delle partite recenti e per ognuna le statistiche complete dei partecipanti.
  3. Confronta i dati ricevuti con quelli gia' su Postgres ed esegue UPSERT idempotenti — partita per partita, giocatore per giocatore — quindi rilanciare la function dieci volte produce sempre lo stesso risultato finale.
  4. Invia un evento su un canale Realtime Supabase: la dashboard Mondo FC, se aperta, si aggiorna senza che tu debba ricaricare la pagina.

La function viene chiamata in tre modi: la prima volta, automaticamente, quando colleghi un nuovo club EA al team durante l'onboarding; in modo programmato, da un cron job pg_cron interno a Supabase che gira ad intervalli regolari; e a richiesta, dal pulsante "Sincronizza ora" che trovi nella sezione Mondo FC dell'app.

Le due piattaforme EA, e perche' contano

EA Sports FC espone i dati Pro Clubs su due cataloghi distinti che non comunicano fra loro: common-gen5 per le console di nuova generazione (PS5, Xbox Series X|S, PC) e common-gen4 per quelle di vecchia generazione (PS4, Xbox One). Per EA sono due club diversi anche quando hanno lo stesso nome e gli stessi membri: lo storico partite e' separato, le statistiche aggregate sono separate, perfino la classifica divisione e' separata. ElevenBase rispetta questa separazione e salva sul team il campo ea_platform insieme al ea_club_id: ogni sync da quel momento in poi va a leggere solo la piattaforma giusta.

Quando in onboarding cerchi il tuo club ElevenBase interroga le due piattaforme in parallelo e ti mostra i risultati uniti, marcando ogni riga con un badge "Next gen" o "Old gen". Se il tuo club esiste su entrambe le piattaforme (per esempio perche' avete migrato di generazione l'anno scorso) puoi sceglierne uno; quello sara' il club tracciato d'ora in avanti. Se ti accorgi di aver scelto male, da Mondo FC → Club puoi staccare e ricollegare al club giusto: lo storico viene reimportato dal feed della nuova piattaforma.

Cosa importiamo, nel dettaglio

Per ogni partita 11 vs 11 online giocata dal club ElevenBase salva: data e ora di inizio, formato (League, Cup, Playoff), risultato (gol fatti e subiti), nome del club avversario, divisione di entrambe le squadre, durata effettiva, formazione iniziale e ruolo in campo per ognuno dei partecipanti. Per ciascun giocatore salva: gol, assist, voto partita (rating EA), Man of the Match (un flag booleano), tiri totali, tiri in porta, falli commessi e subiti, ammonizioni, espulsioni, e — quando esposti — i contatori avanzati come passaggi completati, percentuale di possesso individuale e tackle riusciti.

Tutti questi numeri finiscono nella tabella match_player_stats di Postgres con foreign key sul player. Da li' alimentano il modulo Mondo FC: i KPI di stagione, il capocannoniere e il top assist con bar chart, il grafico voto medio del club partita per partita, e la scheda personale di ogni giocatore. Niente di magico: e' tutto SQL su tabelle relazionali.

Cosa non importiamo, e perche'

L'attribuzione ai giocatori, dove sta la magia

EA identifica ogni partecipante a una partita con il suo username EA (la "EA persona"). Quando il sync riceve una partita, ogni riga statistica e' etichettata con quello username. ElevenBase salva la persona EA del giocatore sul player record nel campo ea_account_handle e la usa come chiave di attribuzione.

Al primo collegamento del club, ElevenBase chiama anche un'altra RPC chiamata list_ea_members: scarica la lista completa dei membri attualmente registrati al club EA, e per ognuno crea uno stub player nel team con first_name pre-popolato dal proName EA, ea_account_handle gia' valorizzato. Tu poi entri in rosa, rifinisci nome e cognome, assegni numero di maglia e ruolo in campo. Da quel momento ogni partita sincronizzata aggancia in automatico le statistiche al giocatore giusto.

Il caso del cambio EA persona. Capita: a meta' stagione un giocatore decide di cambiare username. Per EA quell'username e' un giocatore nuovo, e infatti la partita successiva arriva con righe statistiche che ElevenBase non riconosce piu'. In quel momento aggiungiamo uno stub player nuovo in rosa e te lo segnaliamo con un badge: Probabilmente corrisponde a Marco. Tu confermi con un click, le statistiche del nuovo username vengono fuse sul record vecchio, lo storico precedente resta intatto.

Quando arrivano i dati: timing reale

L'API EA non e' in tempo reale e non lo e' mai stata. I risultati delle partite vengono pubblicati a ondate: tipicamente la singola partita compare nel feed del club entro 2-5 minuti dal fischio finale, ma puo' arrivare anche a 30 minuti se i server EA stanno servendo eventi globali. Il cron Supabase rilancia il sync a intervalli regolari per recuperare le partite tardive senza che tu debba pensarci.

Nei monitoraggi che facciamo sui club che usano l'app — il primo dei quali, i Ca De Rissi SG, ha portato in dote piu' di centocinquanta partite di storico — la stragrande maggioranza degli incontri risulta visibile in dashboard nei minuti immediatamente successivi al fischio, e i casi in cui una partita richiede piu' di un'ora coincidono quasi sempre con disservizi EA documentati pubblicamente.

Se durante uno di questi disservizi vuoi forzare l'aggiornamento, hai due bottoni in Mondo FC → Club. "Sincronizza ora" rilancia subito la edge function. "Importa snapshot EA" ti permette di caricare manualmente un estratto JSON copiato dal sito EA Sports FC.

Cosa vedi davvero in Mondo FC

Tutto questo back-office serve un'unica esperienza utente: aprire Mondo FC e capire la stagione in trenta secondi. Le KPI card in alto rispondono alle domande che si fa qualunque coach al lunedi' mattina ("come stiamo andando?"), il top scorer e il top assist mostrano chi sta tirando il club, il grafico voto medio rivela quando e' iniziata la flessione di rendimento. La scheda personale di ogni giocatore e' la sintesi di tutto: presenze, gol, assist, voto medio, MOTM totali, andamento partita per partita.

Per chi vuole andare oltre c'e' anche la sezione "Squad Score" in Impostazioni, dove il founder puo' definire pesi personalizzati per ogni voce statistica e generare un punteggio di squadra che riflette il modo in cui il club valuta i propri giocatori.


Hai un caso strano da segnalare — una partita che dovrebbe esserci e non c'e', un'attribuzione sbagliata, una statistica fuori scala? Scrivi a coach@elevenbase.pro con il nome del club e i timestamp delle partite. Ai messaggi rispondiamo a mano.