Clasament echipe

Clasamentele de echipe sunt topuri la nivel de organizație care agregă performanța echipelor din mai multe competiții — spre deosebire de clasamentul unei singure competiții, care ordonează echipele doar în interiorul unei ligi sau cupe. O federație poate folosi un clasament pentru a desemna „clubul anului”, o ligă de amatori poate publica un top al puterii pe mai multe sezoane, iar un organism regional poate ierarhiza cluburile afiliate din zeci de competiții subordonate.

Prezentare și nivel de abonament

Un clasament se configurează la nivel de organizație (vezi Profil organizație). Organizatorul alege un model de clasament, selectează competițiile care alimentează clasamentul, setează ponderi per competiție și publică. De fiecare dată când un rezultat de meci este confirmat oriunde într-o competiție contribuitoare, motorul de clasament actualizează echipele afectate și recalculează pozițiile.

🔒
Necesită Plan PRO

Crearea și editarea unui Clasament de echipe este o funcție a Planului PRO (nivelul de plan 2). Organizatorii de pe planul gratuit văd ecranul Clasamente cu o restricție de upgrade. Vizualizarea unui clasament publicat este gratuită pentru toată lumea — fanii, jucătorii și echipele nu au nevoie de un abonament PRO ca să vadă clasamentul sau să își distribuie poziția.

⚠️
Client web: fără actualizări live în timpul meciului

Schimbările de poziție în timpul unui meci nu apar pe clientul web, deoarece funcția de scor live este disponibilă doar pe mobil. Recalculările de după meci au loc totuși pe fiecare platformă: când orice utilizator trimite un scor final — inclusiv un arbitru sau un organizator care introduce rezultatul final de pe web — motorul de clasament declanșează același eveniment folosit și de clienții mobili. Tabelul de pe web va reflecta noile poziții la următoarea reîncărcare.

Vocabular esențial

Termen Ce înseamnă
Sistem de clasament Un top configurat, aparținând unei singure organizații. Fiecare organizație rulează cel mult un sistem de clasament — încercarea de a crea un al doilea returnează un conflict 409 cu codul rankingAlreadyExists; pentru a schimba șablonul, organizatorul trebuie să actualizeze clasamentul existent.
Competiție contribuitoare O competiție pe care organizatorul a marcat-o ca alimentând clasamentul. Doar rezultatele din aceste competiții contează.
Puncte de bază Punctele brute acordate pentru fiecare tip de rezultat (victorie / egal / înfrângere / participare), înainte de orice multiplicator.
Ponderea competiției Un multiplicator aplicat fiecărui eveniment dintr-o competiție — folosit pentru a spune „un meci din Divizia 1 valorează mai mult decât unul din Divizia 3”.
Coeficient de afiliere Un multiplicator legat de o sub-organizație (o federație subordonată sau un club), propagat în fiecare competiție pe care acea sub-organizație o rulează.
Previzualizare / publicare Modificările de configurare ajung mai întâi într-un instantaneu de previzualizare; organizatorul trebuie să le publice explicit pentru ca ele să afecteze tabelul live.

Ciclul de viață — creezi, dezactivezi, nu ștergi niciodată

Odată creat, un sistem de clasament rămâne atașat permanent organizației sale. Nu există endpoint de ștergere; singura modalitate de a scoate un clasament din circulația publică este să îl dezactivezi setând enabled: false pe sistemul de clasament — tabelul nu mai este calculat și citirile publice nu mai returnează nimic, dar regulile configurate, punctajele și istoricul evenimentelor rămân la locul lor. Un clasament dezactivat poate fi reactivat ulterior fără să își piardă istoricul, iar organizatorul poate continua să regleze aceleași setări (reguli de punctaj, valorile competițiilor, coeficienții de organizație) cât timp este dezactivat.

Setul complet de acțiuni expuse de API pentru organizatori:

  • Creare — alegi un șablon (local, regional, național, internațional) și clasamentul este provizionat cu valorile implicite ale acelui șablon. Eșuează cu un conflict dacă unul există deja.
  • Actualizare — editezi orice setare de nivel superior (tipul modelului, vizibilitatea, intervalul de sezon, fereastra glisantă, atenuarea în timp, criteriile de departajare); același endpoint este folosit pentru a dezactiva clasamentul prin trimiterea enabled: false.
  • Editare reguli de punctaj, editare valori competiții, editare valori organizații — fiecare are propriul endpoint.
  • Eveniment manual — un organizator poate adăuga un eveniment de clasament punctual (un bonus, o sancțiune).
  • Previzualizare → publicare sau renunțare — fluxul în etape care îi permite organizatorului să vadă noul tabel înainte ca acesta să devină public.
  • Recalculare — reconstruiește finalPoints pentru fiecare eveniment pe baza regulilor curente; poate fi rulată oricând, în siguranță.

Modele de clasament

Un clasament se configurează pe două dimensiuni independente: tipul modelului (cum se agregă punctele) și intervalul de sezon (care evenimente sunt luate în calcul). Organizatorii le aleg pe amândouă la crearea clasamentului și le pot schimba ulterior prin fluxul de previzualizare.

Dimensiune Valori Ce controlează
Metoda de agregare Standard, Ponderat, Glisant Cum se calculează punctele brute per eveniment și ce multiplicatori se aplică
Interval de sezon An calendaristic, An competițional, Sezonul curent + precedent, Din toate timpurile, Fereastră glisantă Care evenimente alimentează clasamentul — vezi Intervalul de sezon mai jos pentru cele cinci valori și cum să alegi

Standard

Cel mai potrivit pentru: ligi de amatori, topuri bazate pe o singură competiție, ligi sociale fără eșaloane.

Acordă puncte de bază fixe pentru fiecare rezultat de meci și le însumează în toate competițiile contribuitoare. Nu se aplică nicio pondere per competiție — o victorie este o victorie, indiferent în ce competiție s-a produs. Cursoarele pentru ponderea competiției și coeficientul de afiliere sunt ignorate de acest model.

🏉
Scenariu: Liga amatorilor din oraș

Un organizator din oraș rulează o ligă de vară de fotbal în 7 și o ligă de iarnă de fotbal în 11 sub aceeași organizație. Ambele ar trebui să conteze în mod egal pentru tabelul „Clubul anului”. Model Standard, puncte de bază 3-1-0 — simplu și evident pentru toată lumea.

Ponderat

Cel mai potrivit pentru: federații cu competiții pe eșaloane (Divizia 1 / Divizia 2 / Cupă), organisme regionale care agregă rezultate din cluburi afiliate.

La fel ca Standard, plus doi multiplicatori — ponderea competiției și coeficientul de afiliere. Punctele finale pentru fiecare eveniment sunt egale cu punctele de bază înmulțite cu ponderea competiției și apoi cu coeficientul de afiliere.

Astfel, o federație poate spune „o victorie în Divizia 1 valorează de 1,5x mai mult decât una în Divizia 3” sau „meciurile jucate de academia de juniori contează la 0,5x pentru tabelul clubul-anului al seniorilor”.

ℹ️
Ponderat + interval de sezon glisant

Un clasament Ponderat poate folosi și un interval de sezon glisant — așa este configurat presetul integrat „internațional” (fereastră glisantă de 24 de luni cu ponderi de competiție pe eșaloane). Folosește această combinație când o federație are nevoie atât de multiplicatori pe eșaloane, cât și de o fereastră de timp de tip formă; alege în schimb modelul Glisant (mai jos) când funcția principală de care ai nevoie este chiar fereastra de timp.

🏅
Scenariu: Federație regională

O federație regională rulează Divizia 1, Divizia 2, o cupă regională și o competiție U19. Comitetul stabilește că topul puterii ar trebui să pondereze Divizia 1 la 1,5x, Divizia 2 la 1,0x, cupa la 1,2x și U19 la 0,3x. Model Ponderat, câte un cursor de pondere per competiție pentru fiecare ligă, gata.

Glisant

Cel mai potrivit pentru: tabele de formă sezonieră, clasamente de tip „cine e în formă acum”, federații care vor ca pozițiile să reflecte forma recentă, nu totalul din toate timpurile al unei echipe.

Un tip de model de sine stătător, concentrat pe o fereastră de timp: contează doar evenimentele din ultimele 6 luni, 12 luni sau 24 de luni (sau ultimele două sezoane încheiate). Opțional, se poate activa și o atenuare în timp — evenimentele mai vechi sunt depunctate exponențial, astfel încât o victorie de acum trei luni valorează mai puțin decât una de săptămâna trecută, dar tot mai mult decât una de acum un an.

Cursoarele pentru ponderea competiției și coeficientul de afiliere rămân disponibile, dar majoritatea implementărilor Glisant le lasă la 1,0 — tot rostul acestui model este ca poziția să fie determinată de recență, nu de eșaloane.

💡
Alegerea unei ferestre

Majoritatea federațiilor care vor „formă recentă” aleg o fereastră glisantă de 12 luni cu atenuarea dezactivată — simplu și ușor de explicat echipelor. Atenuarea este utilă când clasamentul este publicat săptămânal și publicul se așteaptă ca el să reacționeze rapid la rezultate noi.

📈
Scenariu: Cine e în formă acum

O ligă cu turnee lunare succesive folosește modelul Glisant cu o fereastră de 6 luni, astfel încât echipele din fruntea tabelului să reflecte mereu „cine a câștigat în ultima vreme”. O echipă care a dominat acum 18 luni, dar nu a mai jucat de atunci, iese natural din top — fără nicio arhivare manuală.

Valoarea competiției (pondere)

Fiecare competiție contribuitoare are o pondere — un multiplicator care scalează fiecare eveniment de clasament provenit din acea competiție. Este principalul buton pe care îl reglează un organizator pentru a exprima „această competiție este mai prestigioasă decât cealaltă”.

Proprietate Valoare
Interval 0,3 – 3,0 (cursor cu pas de 0,1)
Implicit 1,0 (neutru — fără multiplicator)
Unde se află Organizație → Clasamente → fila Competiții, pe rândul fiecărei competiții
Ignorată de Modelul Standard folosește doar valoarea implicită 1,0; Ponderat și Glisant o aplică fiecărui eveniment

Pe lângă pondere, același rând expune:

  • Contribuie la clasament — comutator pentru a include sau exclude complet o competiție. Dezactivarea lui păstrează intact clasamentul propriu al competiției; ea doar nu mai alimentează clasamentul organizației.
  • Puncte de participare — un număr fix de puncte pe care o echipă îl primește pentru simpla participare la competiție (util pentru formatele de tip cupă, unde nu fiecare echipă joacă în fiecare etapă).

Modificările de pondere sunt retroactive?

Da. Când organizatorul publică o pondere nouă, motorul de clasament recalculează fiecare eveniment istoric din acea competiție folosind noul multiplicator. O echipă care ieri era pe locul 3 cu Divizia 1 la ponderea 1,2 poate fi mâine pe locul 2 dacă organizatorul publică o schimbare la 1,5. Este intenționat — clasamentul reflectă mereu setul de reguli curent aplicat istoricului complet.

⚠️
Previzualizează mai întâi

Modificările de pondere ajung mereu într-un instantaneu de previzualizare. Organizatorul poate inspecta tabelul rezultat și poate publica sau renunța. Nimic nu apare pentru fani până nu se apasă pe publicare — asta previne surprizele din mijlocul sezonului.

Coeficient de afiliere

Federațiile mari rulează organizații subordonate (organisme regionale, cluburi afiliate, academii). Coeficientul de afiliere este un multiplicator atașat unei organizații subordonate, nu unei anumite competiții. El se propagă automat în fiecare competiție pe care o rulează acea organizație subordonată — din trecut, prezent și viitor.

Proprietate Valoare
Interval 0,0 – 2,0
Implicit 1,0 (neutru)
Unde se află Organizație → Clasamente → fila Afiliate
Propagare Se aplică fiecărui eveniment în care organizația de origine a echipei corespunde intrării de afiliat — inclusiv competițiilor adăugate după setarea coeficientului

O intrare de afiliat dezactivată apare estompată — coeficientul ei nu este consultat, iar echipele a căror organizație de origine îi corespunde sunt tratate ca și cum coeficientul ar fi 1,0.

🤝
Scenariu: Federație → cluburi afiliate

O federație națională rulează un top al puterii peste fiecare federație subordonată (Nord, Sud, Est, Vest). Consiliul național decide că regiunea de Nord este istoric mai puternică și îi setează coeficientul la 1,2. Toate echipele din Nord — în fiecare competiție rulată de federația nordică — primesc automat 1,2x puncte de clasament, fără ca federația națională să fie nevoită să caute și să editeze fiecare competiție în parte.

Pondere vs coeficient — cum alegi

  • Folosește o pondere de competiție când diferența este între competiții (Divizia 1 vs Divizia 3, seniori vs U19).
  • Folosește un coeficient de afiliere când diferența este între organizații (federația de Nord vs federația de Sud, clubul principal vs academia).
  • Cele două se înmulțesc între ele. O echipă care joacă în Divizia 1 (pondere 1,5) sub federația de Nord (coeficient 1,2) primește 1,8x puncte per eveniment (puncte de bază × 1,5 × 1,2).

Cum se calculează punctele

Pentru fiecare eveniment pe care îl emite, motorul stochează trei multiplicatori de intrare și un finalPoints derivat:

Intrare Ce reprezintă Interval / valoare implicită
basePoints Punctele pentru rezultatul acestui eveniment, căutate în regulile de punctaj după cheie — win, draw, loss, noShow, participation, stageFinal, stageSf, stageQf, title, disciplinary, fairplay. Setate per clasament pe fila regulilor de punctaj; valorile implicite provin din șablonul ales.
competitionWeight Multiplicatorul modelului Ponderat pentru competiția sursă. Modul Standard îl forțează la 1. 0,3 – 3,0; implicit 1,0.
organizationCoefficient Multiplicatorul modelului Ponderat pentru (sub-)organizația de origine a echipei. Modul Standard îl forțează la 1. 0,0 – 2,0; implicit 1,0.

Valoarea stocată este finalPoints = basePoints × competitionWeight × organizationCoefficient. Totalul unei echipe este suma finalPoints a fiecărui eveniment neanulat care se încadrează în intervalul de sezon — fereastra cu detalii arată aceleași totaluri per competiție pe care le vede motorul.

Ajustări la citire (neincluse în finalPoints)

Două setări afectează tabelul, dar nu sunt stocate pe fiecare eveniment — ele se aplică la citirea clasamentului:

  • Atenuarea în timp (modelul Glisant cu decayEnabled: true): evenimentele mai vechi sunt depunctate exponențial prin decayRatePerDay. Deoarece multiplicatorul depinde de „astăzi”, API-ul recalculează tabelul la fiecare citire pentru această combinație, în loc să însumeze valorile finalPoints stocate.
  • previousSeasonPartialPercent (valid doar când intervalul de sezon este current-plus-previous): un număr întreg 0–100 care scalează la citire fiecare eveniment din sezonul precedent. O valoare de 50 înseamnă că sezonul precedent al unei echipe contribuie la jumătate din pondere; 0 îl ignoră complet.

Tot restul — basePoints, ponderea competiției, coeficientul de organizație — este rescris pe fiecare eveniment afectat atunci când organizatorul publică o modificare. Asta face ca modificările de pondere să fie cu adevărat retroactive: aceeași formulă a fost deja reaplicată fiecărui eveniment istoric în momentul în care apare noul tabel.

Intervalul de sezon — care evenimente alimentează tabelul

Independent de tipul modelului, clasamentul are un interval de sezon care filtrează evenimentele luate în calcul de motor. Un eveniment a cărui dată cade în afara intervalului este ignorat la citire; nimic nu se șterge — dacă organizatorul lărgește ulterior intervalul, evenimentele mai vechi reapar automat.

Valoarea intervalului Ce include Utilizare tipică
calendarYear Evenimentele datate în anul calendaristic curent (ian.–dec.). Federații al căror ciclu competițional se aliniază cu anul calendaristic.
seasonYear Evenimentele din fereastra sezonului curent iul.–iun. Sezonul de fotbal tradițional (toamnă–primăvară).
current-plus-previous Sezonul curent plus cel precedent. Evenimentele din sezonul precedent sunt scalate prin previousSeasonPartialPercent (un număr întreg 0–100), astfel încât organizatorul să le poată estompa fără să le elimine. Netezește tranziția dintre sezoane, ca un singur turneu să nu răstoarne tot tabelul.
all-time Fiecare eveniment înregistrat vreodată pentru clasament. Tabele istorice de tip „clubul deceniului”, care nu ar trebui să piardă niciodată un rezultat.
rolling Evenimentele din ultimele rollingMonths — sunt acceptate doar valorile 6, 12, 24 sau last-2-seasons. Cu decayEnabled: true se adaugă o atenuare exponențială pe zi, astfel încât evenimentele mai vechi să conteze mai puțin. Tabele de formă de tip „cine e în formă acum”; presetul internațional folosește o fereastră glisantă de 24 de luni.

Departajări — cum se rezolvă totalurile egale de finalPoints

Când două echipe au același total de finalPoints, motorul parcurge o listă ordonată de criterii de departajare alese pe șablonul clasamentului. Opțiunile actuale sunt:

Criteriu de departajare Cum departajează
headToHead Compară rezultatele meciurilor jucate direct între echipele la egalitate, în competițiile contribuitoare.
goalDifference Golaverajul net în toate meciurile contribuitoare.
goalsFor Totalul golurilor marcate în meciurile contribuitoare.
totalWins Numărul de victorii în meciurile contribuitoare.
alphabetical Ultima soluție, stabilă, astfel încât tabelul să nu aibă niciodată o ordine nedefinită.

Ordinea implicită depinde de șablon — presetul local/regional începe cu headToHead, apoi goalDifference; presetul național/internațional prioritizează headToHead, apoi goalDifference, apoi totalWins. Organizatorii pot reordona sau elimina intrări din această listă în setările sistemului de clasament.

Cine poate crea / edita / șterge

Endpoint-urile se împart în două familii, protejate foarte diferit.

Citiri publice

Tabelul clasamentului, detaliile unei echipe și istoricul unei echipe sunt expuse ca citiri publice, fără autentificare — fanii, jucătorii, managerii de echipă și arbitrii consumă toți aceleași endpoint-uri. Setarea visibility a clasamentului (public, private sau members) filtrează apoi ce văd efectiv apelanții; un clasament privat nu este vizibil în afara organizației.

Scrieri de administrator

Fiecare mutație (creare, actualizare, reguli de punctaj, valori competiții, valori organizații, eveniment manual, previzualizare, publicare, renunțare, recalculare) necesită drepturi de administrator de organizație pe organizația respectivă. Asta corespunde rolului de organizator plus unui drept de administrator pe acea organizație — un arbitru sau un manager de echipă dintr-o competiție contribuitoare nu are acces la aceste endpoint-uri. Crearea sau editarea unui clasament este, în plus, condiționată de verificarea Planului PRO menționată mai sus.

Ștergerea unui clasament

Nu există endpoint de ștergere. Pentru a scoate un clasament din circulația publică, un administrator de organizație apelează endpoint-ul standard de actualizare cu enabled: false; tabelul nu mai este calculat și citirile publice nu mai returnează nimic, dar regulile configurate, punctajele și istoricul evenimentelor sunt păstrate, iar clasamentul poate fi reactivat ulterior fără să piardă date. Vezi Ciclul de viață — creezi, dezactivezi, nu ștergi niciodată pentru setul complet de mutații și fluxul în etape de previzualizare/publicare.

Detalii echipă (modal)

Apăsând pe rândul unei echipe din tabelul clasamentului se deschide fereastra cu detalii — cea mai utilă vedere atunci când vrei să înțelegi de ce o echipă se află acolo unde se află.

Câmp Cum se citește
Total puncte Scorul final agregat, după toți multiplicatorii. Corespunde exact rândului echipei din tabelul principal.
Poziție Locul curent în tabelul publicat (1 = primul).
Schimbare de poziție (▲/▼) Mișcarea față de instantaneul zilnic anterior. O echipă care a urcat de pe locul 7 pe locul 5 afișează ▲2. Fără schimbare se afișează o liniuță.
Grafic istoric Punctele din ultimele 30 sau 90 de zile (comutator în fereastră). Linie plată = niciun eveniment nou; trepte = rezultate care sosesc.
Contribuția per competiție Câte puncte a câștigat echipa din fiecare competiție contribuitoare, după aplicarea ponderii și a coeficientului. Suma este egală cu totalul de puncte.
Buton de distribuire Partajare nativă — generează un afiș cu poziția, punctele și variația echipei. Util pentru distribuirea pe rețelele sociale sau pentru a surprinde o anumită stare la un moment dat.
ℹ️
Ce nu arată fereastra cu detalii

Detaliile arată totalul final per competiție, nu detaliul per meci. Dacă o echipă contestă rezultatul unui meci individual, aceea este o problemă de punctaj la nivel de competiție — corecteaz-o în competiție, iar clasamentul va prelua rezultatul corectat la următoarea recalculare.

Pe încheietură

Aceeași poziție per echipă și aceeași variație alimentează widgetul de poziție în clasament al aplicației pentru ceas inteligent, așa că un fan care urmărește o echipă poate arunca o privire la ceas și vede același număr care apare în fereastra cu detalii. O notificare zilnică de actualizare a clasamentului deschide direct tabelul clasamentului atunci când poziția unei echipe se schimbă.

Întrebări frecvente

Trei situații apar cel mai des. În fiecare caz, începe prin a deschide fereastra cu detalii: ea arată exact ce folosește clasamentul, iar majoritatea întrebărilor își găsesc singure răspunsul odată ce poți vedea contribuția per competiție.

1. O echipă crede că poziția ei în clasament este greșită

🤔
Scenariu: „Ar trebui să fim mai sus”

Dacă un manager de echipă crede că clubul lui este pe locul 6 când „ar trebui” să fie pe 3, deschide clasamentul, apasă pe rândul echipei și citește contribuția per competiție. Verifică dacă (a) fiecare competiție în care joacă echipa are activat Contribuie la clasament, (b) ponderile competițiilor corespund cu ce a fost publicat ultima dată, (c) niciun rezultat de meci nu este încă în contestație la nivel de competiție. Majoritatea acestor cazuri se dovedesc a fi o singură competiție cu Contribuie dezactivat sau un meci pe care arbitrul nu l-a confirmat niciodată.

2. Vrei să schimbi ponderile în mijlocul sezonului

⚖️
Scenariu: Reponderarea Diviziei 1

La jumătatea anului, comitetul decide că Divizia 1 ar trebui să aibă ponderea 1,8x în loc de 1,5x. Ține minte că modificările de pondere sunt retroactive — întregul sezon se recalculează la publicare, nu doar meciurile viitoare. Folosește pasul de previzualizare ca să examinezi noul tabel înainte de publicare și postează o știre, ca echipele afectate să nu fie luate prin surprindere când li se schimbă poziția.

3. O nouă competiție subordonată nu este luată în calcul

Scenariu: Noua competiție nu contează

Dacă ai adăugat o cupă nouă în organizație săptămâna trecută și un manager de echipă observă că rezultatele cupei nu apar în clasament, este de așteptat: competițiile noi nu sunt incluse automat. Deschide Organizație → Clasamente → Competiții, găsește rândul nou, activează Contribuie la clasament și publică. Dacă noua competiție aparține și unei organizații subordonate cu un coeficient de afiliere setat, coeficientul i se va aplica automat — nu este nevoie de un al doilea pas pe fila Afiliate.

⚠️
Când ai îndoieli, recalculează

Dacă detaliile arată corect, dar tabelul principal nu corespunde, rulează o recalculare manuală. Clasamentele se actualizează automat la fiecare rezultat confirmat, dar o recalculare forțată este cea mai rapidă modalitate de a reîmprospăta tabelul când ceva pare în neregulă.