Obsah kapitoly
Registrácia mládežníckeho športovca
Klub ŠK Tatran Spišská Nová Ves registruje 12-ročného Tomáša Hudáka ako hráča žiackej kategórie v basketbale. Keďže je maloletý, súhlasy udeľuje jeho zákonný zástupca — otec Peter.
Overenie/založenie osoby cez Identity Broker
Klubový portál pošle dáta dieťaťa do SportUp. Identity Broker pokusom o match s RFO zistí, že Tomáš existuje. Vráti stabilné interné person_id.
{
"given_name": "Tomáš",
"family_name": "Hudák",
"date_of_birth": "2013-05-12",
"gender": "male",
"nationality": "SK",
"national_id": "130512/XXXX"
}
// → 200 OK
{
"person_id": "prs_8f2a4c1e-...",
"verification_status": "verified_by_rfo",
"is_minor": true,
"matched": true
}
Registrácia zákonného zástupcu a spojenie
Ak otec ešte v systéme nie je, založí sa. Potom sa vytvorí vzťah osoba-zák.zástupca.
{
"minor_person_id": "prs_8f2a4c1e-...",
"guardian_person_id": "prs_c91b7d33-...",
"relationship_type": "legal_parent",
"valid_from": "2013-05-12"
}
Udelenie súhlasov
Otec udeľuje tri súhlasy: základnú registráciu (contract, nedá sa odvolať), marketingové použitie fotografií (consent, odvolateľné), a anonymizovaný výskum (consent).
[
{
"person_id": "prs_8f2a4c1e-...",
"purpose_code": "REG-ATHLETE-001",
"legal_basis": "contract",
"granted_to_id": "org_tatran_snv",
"granted_by": "prs_c91b7d33-..."
},
{
"person_id": "prs_8f2a4c1e-...",
"purpose_code": "MKT-IMAGE-001-MINOR",
"legal_basis": "consent",
"granted_to_id": "org_tatran_snv",
"granted_by": "prs_c91b7d33-..."
},
{
"person_id": "prs_8f2a4c1e-...",
"purpose_code": "VYS-DEMOGRAPHIC-001",
"legal_basis": "public_task",
"granted_to_id": "org_nsc"
}
]
Vytvorenie afiliácie
Klubový portál zapisuje novú afiliáciu. Systém vyprodukuje dva eventy: AffiliationRegistered (stav pending) a po validácii AffiliationActivated.
{
"person_id": "prs_8f2a4c1e-...",
"organization_id": "org_tatran_snv",
"activity_code": "amatersky_sportovec",
"legal_title": "bez_zmluvy",
"sport_code": "SK-BAS",
"discipline_code": "SK-BAS-5v5",
"category_code": "SK-BAS-U13",
"valid_from": "2026-09-01",
"registration_number": "TAT-2026-0834"
}
// → 201 Created
{
"affiliation_id": "aff_a4e7...",
"status": "active",
"events_generated": ["AffiliationRegistered", "AffiliationActivated"]
}
Prestup hráča medzi klubmi
Profesionálny hokejista Juraj Kováč prestupuje z klubu HC 05 Banská Bystrica do klubu HK Nitra. Prestup sa realizuje k 1. júlu 2026 a modeluje sa ako saga s troma eventmi prepojenými cez correlation_id.
Čo je saga
Vzor z distribuovaných systémov. Jedna biznis operácia, ktorá sa dotýka viacerých nezávislých entít, sa rozloží na sekvenciu samostatných krokov prepojených spoločným correlation_id. Vďaka tomu zostáva zachované pravidlo "jeden event mení práve jeden agregát" — a zároveň sa dá celý proces spätne zrekonštruovať ako jeden príbeh. Podrobnosti sú v kapitole Doménový model.
Zahájenie prestupu
HK Nitra iniciuje prestup cez svoj klubový portál. Vytvorí sa nová (zatiaľ neaktívna) afiliácia v stave pending_transfer s referenciou na zdrojovú afiliáciu.
{
"source_affiliation_id": "aff_bb_kovac_2023",
"target_organization_id": "org_hk_nitra",
"target_activity_code": "profesionalny_sportovec",
"effective_date": "2026-07-01",
"contract_type": "zmluva_profi",
"contract_duration_years": 2,
"compensation_amount": 85000
}
// → generovaný event:
{
"event_type": "TransferRequested",
"aggregate_id": "aff_nit_kovac_2026",
"correlation_id": "txn_transfer_c4f8...",
"occurred_at": "2026-06-15T14:22:00Z"
}
Ukončenie pôvodnej afiliácie
K účinnému dátumu sa zdrojová afiliácia ukončí. Event nesie to isté correlation_id, aby bolo možné spätne rekonštruovať celú sagu.
{
"event_type": "AffiliationTerminated",
"aggregate_id": "aff_bb_kovac_2023",
"correlation_id": "txn_transfer_c4f8...",
"occurred_at": "2026-07-01T00:00:00Z",
"data": {
"reason": "transfer",
"destination_organization_id": "org_hk_nitra"
}
}
Aktivácia novej afiliácie
Nová afiliácia sa aktivuje k účinnému dátumu. Tretí event s rovnakým correlation_id uzatvára sagu.
{
"event_type": "AffiliationActivated",
"aggregate_id": "aff_nit_kovac_2026",
"correlation_id": "txn_transfer_c4f8...",
"occurred_at": "2026-07-01T00:00:00Z"
}
Spätný dotaz
Dotaz "ukáž mi všetky eventy prestupu txn_transfer_c4f8" vráti všetky tri eventy v časovej postupnosti, nezávisle od toho, v ktorom agregáte sú uložené. Týmto sa rekonštruuje príbeh prestupu pre audit alebo disciplinárne účely.
Jedna osoba, štyri aktívne role
Martina Kučerová, 34 rokov, je v systéme jediný záznam — jedno person_id. Má však štyri súbežné afiliácie naprieč tromi rôznymi športmi a rôznymi organizáciami.
{
"person_id": "prs_martina_...",
"affiliations": [
{
"affiliation_id": "aff_1",
"organization": "AC Košice (atletický klub)",
"activity_code": "profesionalny_sportovec",
"sport_code": "SK-ATH",
"discipline_code": "SK-ATH-TRAIL",
"valid_from": "2018-01-01"
},
{
"affiliation_id": "aff_2",
"organization": "ŠK Detva (bežecký klub)",
"activity_code": "trener",
"sport_code": "SK-ATH",
"discipline_code": "SK-ATH-YOUTH",
"valid_from": "2022-09-01"
},
{
"affiliation_id": "aff_3",
"organization": "OV Tatry Ultra 2026 (organizátor)",
"activity_code": "dobrovolnik",
"sport_code": "SK-ATH",
"valid_from": "2026-08-15",
"valid_to": "2026-09-05"
},
{
"affiliation_id": "aff_4",
"organization": "ŠK Rapid (šachový klub)",
"activity_code": "sportovy_rozhodca",
"sport_code": "SK-SCH",
"discipline_code": "SK-SCH-RAPID",
"valid_from": "2020-03-10"
}
]
}
Čo systém vie
- Martina je jedna osoba, nie štyri — všetky afiliácie zdieľajú ten istý
person_id. - Keď zomrie alebo zmení meno, aktualizuje sa jeden záznam a všetky štyri afiliácie automaticky "vidia" novú informáciu.
- Pri delegácii na zápas detvianskeho klubu, kde je aj tréner, systém upozorní na potenciálny konflikt záujmov (rozhodca so súčasnou afiliáciou k zúčastnenému klubu).
- Na štatistické účely sa vie opýtať: "koľko osôb má v športe viac ako jednu aktívnu rolu?" — dotaz nad projekciou
current_affiliations.
Komerčné overenie pre hotel
Hotel Grand Jasná ponúka zľavu 20 % pre registrovaných športovcov. Pri rezervácii chce overiť, či osoba má platnú športovú registráciu — ale nepotrebuje vedieť kto to je, v akom športe ani v akom klube. Stačí mu odpoveď áno/nie.
Osoba vyvolá overenie zo svojej aplikácie
V SportUp mobilnej aplikácii si osoba vygeneruje krátkodobý verifikačný token. Token obsahuje len referenciu na osobu a platnosť, žiadne osobné údaje.
{
"token": "vft_2bc4e7f8a9...",
"valid_until": "2026-04-20T10:30:00Z",
"qr_url": "https://verify.sportup.sk/vft_2bc4e7f8a9..."
}
Hotel overí token v certifikovanej aplikácii
Recepcia naskenuje QR kód zo zariadenia hosťa. Komerčný subjekt je certifikovaný pre scope verification:athlete_discount.
{
"token": "vft_2bc4e7f8a9...",
"purpose": "KOM-BENEFIT-001",
"requested_attributes": ["has_active_athlete_affiliation"]
}
// → 200 OK
{
"valid": true,
"has_active_athlete_affiliation": true,
"category_tier": "registered"
}
Čo hotel nevie
Hotel nevidí meno, dátum narodenia, klub, šport, úroveň — nič. Dostal iba "áno, toto je registrovaný športovec". To je dôsledok princípu minimalizácie dát. Každé takéto overenie je zapísané v audite, aby si osoba mohla pozrieť, kto sa jej dát dotýkal.
Úmrtie a automatické ukončenie afiliácií
Dlhoročný funkcionár a rozhodca Pavol Zámečník zomiera. Informácia prichádza automaticky z RFO cez CSRÚ notifikáciu.
Notifikácia z CSRÚ do Identity Brokera
Štátny register notifikuje systém o úmrtí osoby. Broker aktualizuje lokálny cache a vyprodukuje interný event.
{
"event_type": "PersonDeathRecorded",
"aggregate_id": "prs_zamecnik_...",
"occurred_at": "2026-03-18T00:00:00Z",
"data": {
"date_of_death": "2026-03-18",
"source": "csru_notification"
}
}
Automatická terminácia afiliácií
Systém vyhľadá všetky aktívne afiliácie osoby a pre každú vyprodukuje AffiliationTerminated event s dôvodom death.
[
{
"event_type": "AffiliationTerminated",
"aggregate_id": "aff_sfz_rozhodca_...",
"data": { "reason": "death", "effective_date": "2026-03-18" }
},
{
"event_type": "AffiliationTerminated",
"aggregate_id": "aff_fk_funkcionar_...",
"data": { "reason": "death", "effective_date": "2026-03-18" }
}
]
Ochrana citlivých údajov
GDPR sa po úmrtí neuplatňuje v plnom rozsahu, ale systém automaticky obmedzí prístup k citlivým údajom. Základné údaje sa zachovávajú pre historickú a štatistickú hodnotu — inak by sa rozbili dlhé časové rady (napr. zoznam majstrov SR za posledných 50 rokov).
Registrácia nového športoviska
Mesto Žilina dokončilo výstavbu novej multifunkčnej športovej haly a zapisuje ju do centrálneho katalógu. Zápis súčasne vytvára hodnotu pre šport (rezervačný systém, súťaže) aj pre cestovný ruch (verejná mapa, ubytovanie v okolí).
Registrácia vlastníka a prevádzkovateľa
Vlastník je mesto Žilina (organizácia typu mesto, RPO previazané). Prevádzkovateľ je mestská príspevková organizácia.
Registrácia športoviska
{
"name_sk": "Mestská športová hala Žilina-Vlčince",
"facility_type": "ruznopouzitelna_hala",
"supported_sports": ["SK-VLB", "SK-BAS", "SK-HDB", "SK-FLB"],
"owner_organization_id": "org_mesto_zilina",
"operator_organization_id": "org_msh_zilina_po",
"address": {
"street": "Obežná 16",
"municipality_code": "SK-ZA-514301",
"region_code": "SK-ZA",
"postal_code": "01008",
"gps": { "lat": 49.2175, "lng": 18.7492 }
},
"capacity_spectators": 1800,
"surfaces": [
{ "type": "sport_parquet", "indoor": true, "dimensions_m": "44 × 25" }
],
"accessibility": {
"wheelchair": true,
"hearing_loop": true,
"parking_disabled": true
},
"public_access": "reservation",
"certifications": ["STN-EN-14904", "hygienicky_posudok_2026"],
"amenities": ["parking", "changing_rooms", "showers", "cafeteria", "medical", "wifi"],
"tourism": {
"nearby_accommodation": true,
"public_transport_stop_m": 120,
"parking_spaces": 95,
"ev_charging": true,
"bike_parking": true
},
"valid_from": "2026-04-15"
}
// → 201 Created
{
"facility_id": "fac_za_vlcince_...",
"status": "operational",
"public_data_url": "https://data.sportup.sk/facilities/fac_za_vlcince_..."
}
Následné okamžité použitie
Len čo je športovisko zapísané a má stav operational, automaticky:
- Je viditeľné na verejnej mape SportUp a je dostupné cez otvorené API.
- Turistické platformy (visitslovakia.com, GoZilina) ho môžu zobraziť.
- Rezervačné systémy môžu na ňom ponúkať termíny.
- Zväzy (SBA, SHF, SZH) ho môžu priraďovať k ligovým zápasom.
- Obec má základný podklad pre výročné hlásenie o športovej infraštruktúre.
- Mestský magistrát môže vypisovať verejné obstarávanie na údržbu s presným popisom objektu.
Nasledujúca kapitola — Integrácie — popisuje, ako systém komunikuje: REST API, MCP servery, webhooks a napojenie na štátne registre.