Prepojenie s sportup.sk

activity nie je samostatný projekt. Je to klient širšieho ekosystému sportup.sk, ktorý mu poskytuje autoritatívne registre osôb a organizácií.

Dva projekty, jasné rozdelenie

Projekt Doména Zodpovednosť
sportup.sk
nadradený projekt
sportup.sk Kto je kto v slovenskom športe — fyzické a právnické osoby, oficiálne číselníky (športy, regióny, kategórie), organizačná štruktúra
activity
tento projekt
activity.sportup.sk Čo sa s nimi deje — aktivity, mentoring, komunikácia, fanúšikovské funkcie

Toto rozdelenie zodpovedností je zámerné. "Kto je kto" je relatívne stabilná oblasť — osoba sa narodí, registruje, niekde pracuje, prípadne mení rolu pri postupe. "Čo sa deje" je vysoko frekventovaná oblasť — tréningy denne, zápasy týždenne, komunikácia neustále. Iný typ záťaže, iné DB query patterns, iné indexy.

Ako to funguje technicky

activity neduplikuje identitné dáta. Keď chce zobraziť meno športovca, dáta prichádzajú zo sportup.sk cez API integráciu. Lokálne držíme len malú cache (mirror) pre rýchle čítanie.

Hybridné master pre Person

Niektoré polia sú master-ované sportup.sk projektom (rodné číslo, oficiálne meno), niektoré lokálne v activity (preferovaný jazyk UI, vlastné role, history aktivít).

Pole Master
Meno, priezvisko, dátum narodenia sportup.sk
Rodné číslo, národnosť sportup.sk
Oficiálny email (registrácia) sportup.sk
Preferovaný email (pracovný) activity
Preferovaný jazyk UI activity
Aktivitná história activity
Aktívne mentoring cykly activity

Synchronizácia v praxi

Smer sportup.sk → activity

Keď v sportup.sk niekto zmení údaj osoby (napríklad zmena priezviska po sobáši), activity sa o tom dozvie cez:

  • Real-time webhook — sportup.sk pošle notifikáciu activity, ktorá hneď updatne lokálnu kópiu
  • Nightly reconcile — pre prípad zmeškaného webhook-u, denný cron job kontroluje zmeny

Smer activity → sportup.sk

Keď používateľ v activity zmení identitný atribút (napríklad nahláši zmenu priezviska), activity to neukladá rovno. Vytvorí návrh zmeny (proposal), ktorý prejde schvaľovacím procesom a pošle sa do sportup.sk. Po ich akceptácii webhook donesie zmenu späť do activity.

Pre čisto aplikačné polia (preferovaný jazyk, custom voľby) žiadny proposal nie je potrebný — píšeme rovno do nášho lokálneho záznamu.

Číselníky

Číselníky (športy, regióny, kategórie športovcov, ligy) sú primárne master-ované sportup.sk projektom. activity ich periodicky synchronizuje.

Niektoré číselníky existujú iba v activity — sú špecifické pre náš projekt:

  • mentoring_session_topic — témy mentoringového sedenia
  • referee_competencies — kompetenčné tagy rozhodcu (z UEFA observer report)
  • coach_competencies, physio_competencies, ...

Tieto sa do sportup.sk nesynchronizujú. Sú lokálne pre activity.

Custom hodnoty per organizácia

Niektoré organizácie môžu chcieť pridať vlastné kompetenčné tagy. Pre to existuje flag isCustom na hodnotách číselníka — izolované per tenant, nesynchronizované.

Otvorené API a rozšírenia

Niektoré API funkcie, ktoré activity potrebuje, ešte v sportup.sk projekte nie sú implementované. Poskytneme ich ako pull requesty:

  • Webhook notifikácie pri zmene osoby alebo organizácie
  • Incremental sync (parameter changedSince na list endpointoch)
  • Bulk export endpoint pre initial backfill
  • HMAC podpisovanie webhookov

Sú to štandardné API praktiky, nie naše tajomstvá — preto ich rovno prinesieme do open-source repa ltksolutions/sportup.sk.

Detail v dokumentácii

Toto je marketingový prehľad. Pre vývojárov, ktorí stavajú integráciu, je v dokumentácii detailný popis: