Preskoči na sadržaj

Flow: Upravljanje blacklistom (Admin) (CSV import i CRUD operacije)

Actor

Security Administrator / Admin s ovlastima za upravljanje blacklistom (BLACKADMIN role)

Preconditions

  • Admin ima važeće pristupne podatke s ovlastima za upravljanje blacklistom
  • Dostupan je BLACKADMIN dio u admin portalu
  • CSV datoteka je pripremljena (za masovni import) s obaveznim poljima: OIB, First Name, Last Name, Date of Birth
  • Sigurnosni tim je dostavio listu zabranjenih osoba (otprilike 200-300 zapisa)

Flow Steps

Part 1: Početni masovni CSV import

  1. Pristup sekciji za upravljanje blacklistom

    • Admin se prijavljuje u admin portal uz MFA autentikaciju
    • U glavnoj navigaciji otvara sekciju "BLACKADMIN"
    • Dashboard prikazuje:
      • Ukupan broj aktivnih zabrana
      • Nedavne pokušaje kršenja
    • Klikne gumb "Import Blacklist"
  2. Učitavanje CSV datoteke

    • Sustav prikazuje sučelje za CSV import
    • Admin klikne "Choose File" i odabire CSV datoteku
    • Prikazuju se zahtjevi formata CSV-a:
      • Obavezni stupci: OIB (11 znamenki), First Name, Last Name, Date of Birth (DD.MM.YYYY)
    • Admin učita CSV datoteku (200-300 osoba od sigurnosnog tima)
    • Sustav pokreće proces validacije
  3. CSV validacija i pregled (preview)

    • Sustav validira svaki red:
      • Format OIB-a (11 znamenki, ispravan checksum)
      • Detekcija duplikata OIB-a (unutar datoteke i u odnosu na postojeću blacklistu)
      • Validacija formata datuma (DD.MM.YYYY)
      • Popunjenost obaveznih polja
    • Prikazuju se rezultati validacije:
      • Ukupno redova: 287
      • Ispravni redovi: 283
      • Neispravni redovi: 4 (s detaljnim opisima grešaka)
    • Neispravni redovi su označeni uz konkretne greške:
      • Row 45: "Invalid OIB checksum"
      • Row 156: "Invalid date format in Expiration Date"
      • Row 231: "Duplicate OIB already in system"
    • Admin može:
      • Vidjeti izvještaj grešaka s brojevima linija
      • Ispraviti CSV i ponovno učitati
  4. Pregled i potvrda importa

    • Tablica pregleda prikazuje prvih 20 ispravnih zapisa
    • Sažetak statistike:
      • Nove zabrane koje će se kreirati: 283
      • Duplikati OIB-a (preskočeno): 4
    • Admin pregledava podatke
    • Admin unosi bilješku potvrde importa: "Initial security team blacklist import - November 2025"
    • Admin klikne gumb "Confirm Import"
  5. Izvršenje importa

    • Sustav kreira blacklist zapise u batchu
    • Progress bar prikazuje status importa
    • Svaki zapis dobiva:
      • Jedinstveni blacklist ID
      • Status: "Active"
      • Created by: Admin user ID
      • Created timestamp
      • Audit log entry
    • Prikazuje se potvrda uspjeha:
      • "Successfully imported 283 blacklist entries"
      • "4 rows skipped due to errors"
    • Admin može pregledati sažetak izvještaja importa
  6. Provjera nakon importa

    • Admin je preusmjeren na blacklist dashboard
    • Nedavno importirani zapisi vidljivi su u listi
    • Filter je postavljen na "Created Today"
    • Admin može nasumično provjeriti (spot-check) importirane zapise radi točnosti

Part 2: Kontinuirane CRUD operacije

Create: Kreiranje pojedinačnog zapisa na blacklisti

  1. Pokretanje nove zabrane

    • Admin klikne gumb "Add Blacklist Entry"
    • Prikazuje se forma s poljima:
      • OIB (obavezno, 11 znamenki uz validaciju)
      • First Name (obavezno)
      • Last Name (obavezno)
      • Date of Birth (obavezno, DD.MM.YYYY)
  2. Unos detalja zabrane

    • Admin unosi podatke o osobi
    • Sustav radi validaciju u realnom vremenu:
      • Validacija OIB checksuma
      • Provjera duplikata OIB-a (prikazuje upozorenje ako postoji)
      • Logička validacija datuma (expiration after effective date)
  3. Slanje i potvrda

    • Admin klikne "Create Blacklist Entry"
    • Sustav kreira zapis i bilježi u audit trail
    • Poruka uspjeha: "Blacklist entry created successfully. User [Name] is now banned from purchasing tickets."

Read/Search: Pregled i pretraživanje zapisa na blacklisti

  1. Pretraga i filteri

    • Admin otvara blacklist dashboard
    • Search bar s opcijama:
      • Pretraga po OIB-u (djelomično ili potpuno)
      • Pretraga po imenu (first ili last)
    • Rezultati se prikazuju u sortirajućoj tablici
  2. Pregled detalja

    • Stupci tablice:
      • OIB (djelomično maskirano: *****34)
      • Full Name
      • Date of Birth
      • Effective Date
      • Actions (View, Remove)
    • Admin klikne "View" na bilo kojem zapisu
    • Detaljni prikaz sadrži:
      • Potpune osobne podatke
      • Audit trail (created, modified, accessed)
      • Povijest pokušaja kršenja (ako postoji)

Delete/Remove: Uklanjanje zapisa s blackliste

  1. Pokretanje uklanjanja

    • Admin pronađe zapis
    • Klikne "Remove" u retku zapisa
    • Sustav prikazuje upozorenje:
      • "Are you sure you want to remove this ban?"
      • "Individual [Name] will be able to purchase tickets immediately"
      • "This action will be logged in audit trail"
  2. Potvrda uklanjanja

    • Admin mora unijeti razlog uklanjanja (obavezno)
    • Uobičajeni razlozi:
      • Zabrana je prirodno istekla
      • Žalba je odobrena
      • Administrativna greška
      • Sudska odluka / poništenje
    • Admin potvrđuje uklanjanje
  3. Izvršenje uklanjanja

    • Sustav mijenja status u "Removed"
    • Zapis ostaje u bazi (soft delete) radi audita
    • Zabrana se više ne provodi u toku kupnje
    • Kreira se audit log s admin ID-jem, timestampom i razlogom
    • Poruka uspjeha: "Blacklist entry removed. Individual can now purchase tickets."
    • Sigurnosnom timu se šalje obavijest

Part 3: Nadzor pokušaja kršenja

  1. Pregled pokušaja kršenja

    • Admin otvara tab "Violation Attempts"
    • Naslov izvještaja: "Popis Kupaca Koji imaju aktivnu zabranu i Pokusali su kupiti ulaznicu"
    • Tablica prikazuje blokirane pokušaje kupnje:
      • DATUM POKUSAJA (Date of Attempt): DD.MM.YYYY HH:MM:SS
      • IME (First Name)
      • PREZIME (Surname)
      • DATUM_ROD (Date of Birth)
      • OIB (djelomično maskirano)
      • Event (utakmica koju je pokušao kupiti)
      • IP Address
      • HNS mobile app User account ID
      • Session Information
      • Attempt Count (za ponovljene pokušaje)
    • Filter opcije:
      • Raspon datuma
      • Osoba (po OIB-u ili imenu)
      • Event
  2. Istraga kršenja

    • Admin klikne na zapis pokušaja kršenja
    • Detaljni prikaz pokazuje:
      • Potpune detalje pokušaja
      • Informacije o korisničkoj sesiji
      • Geolokaciju (iz IP-a)
      • Višestruke pokušaje (ako je ponovljeni prekršitelj)
      • Povezani zapis na blacklisti
    • Admin može:
      • Dodati bilješke istrage
      • Blokirati korisnički račun u HNS mobilnoj aplikaciji
  3. Upozorenja za detekciju obrazaca

    • Sustav automatski detektira:
      • Višestruke pokušaje iste osobe (> 3 u 24 sata)
      • Pokušaje zaobilaženja promjenom osobnih podataka
    • Admin dobiva obavijesti na dashboardu o obrascima
    • Šalju se eskalacijske obavijesti za visoko prioritetna kršenja

Alternative Flows

A1: Neuspješna CSV validacija

  • Ako je više redova neispravno
  • Sustav odbija cijeli import
  • Admin mora ispraviti CSV i ponovno učitati
  • Za sve probleme se daje detaljan izvještaj grešaka

A2: Pokušaj kreiranja duplikat zabrane

  • Tijekom kreiranja pojedinačnog zapisa, OIB već postoji u aktivnim zabranama
  • Sustav prikazuje grešku: "This OIB is already on the blacklist"
  • Prikazuje detalje postojećeg zapisa
  • Admin može:
    • Ignorirati jer zapis već postoji

A3: Konflikt blackliste tijekom checkouta

  • Kupac pokušava kupnju
  • Sustav provjerava OIB prema blacklisti na više kontrolnih točaka:
    • Kreiranje košarice
    • Pokretanje checkouta
    • Slanje plaćanja
  • Ako se pronađe podudaranje:
    • Kupnja se odmah blokira
    • Korisnik vidi generičku grešku: "Unable to process order. Please contact support."
    • Sustav bilježi pokušaj kršenja sa svim detaljima
    • Korisniku se ne otkrivaju sigurnosni detalji
    • Sigurnosnom timu se šalje tiha obavijest

A4: Blacklist zapis za osobu s postojećim ulaznicama (Automatsko otkazivanje - Bez povrata)

A4a: Kreiranje pojedinačnog zapisa

  • Admin kreira novi blacklist zapis putem forme za pojedinačni unos
  • Sustav automatski provjerava postoje li ulaznice povezane s OIB-om
  • Ako postoje ulaznice za nadolazeće utakmice:
    • Sustav prikazuje upozorenje adminu:
      • "Warning: This individual has [X] active ticket(s) for upcoming matches"
      • Lista pogođenih ulaznica:
        • Naziv utakmice i datum
        • Informacije o sjedalu
        • Order ID
        • Datum kupnje
        • Uloga: BUYER ili TICKET HOLDER (važno za opseg otkazivanja)
      • Upit: "Do you want to proceed with blacklist entry and cancel tickets?"
      • Opcije: "Cancel Blacklist Entry" / "Proceed with Ban and Cancel Tickets"
  • Ako admin potvrdi "Proceed with Ban and Cancel Tickets":
    • Sustav kreira blacklist zapis i otkazuje pogođene ulaznice (vidi pravila otkazivanja dolje)

A4b: CSV Import — Grupno otkazivanje ulaznica

  • Admin importira CSV datoteku (kako je opisano u Part 1)
  • Sustav prvo završi potpuni import svih validnih blacklist zapisa
  • Nakon završetka importa, sustav automatski skenira sve ulaznice za nadolazeće utakmice u odnosu na cijeli importirani batch:
    • Za svaki novo importirani OIB, sustav provjerava ima li osoba aktivne ulaznice (kao kupac ili nositelj ulaznice) za bilo koju nadolazeću utakmicu
    • Sve pronađene ulaznice se skupljaju u izvještaj za otkazivanje
  • Sustav prikazuje sažetak otkazivanja nakon importa:
    • "Import complete: [X] blacklist entries created. [Y] individuals have [Z] active ticket(s) for upcoming matches."
    • Sažetak tablica:
      • OIB (maskirano)
      • Ime (ako je dostupno)
      • Broj pogođenih ulaznica
      • Pogođene utakmice
    • Admin potvrđuje: "Proceed with Batch Cancellation" / "Skip Cancellation" (blacklist zapisi ostaju aktivni u oba slučaja)
  • Ako admin potvrdi grupno otkazivanje:
    • Sustav procesira sva otkazivanja u batchu (vidi pravila otkazivanja dolje)
    • Progress bar prikazuje status otkazivanja
    • Završni sažetak: "[Z] tickets cancelled across [Y] individuals for [N] upcoming matches"

Pravila otkazivanja (primjenjuju se na A4a i A4b)

  • Automatska pravila otkazivanja ulaznica:
    • Ako je osoba s blackliste BUYER (kupac):
      • Sustav otkazuje SVE ulaznice u narudžbi (svi nositelji ulaznica su pogođeni)
      • Obrazloženje: Kupac je omogućio kupnju, cijela narudžba se poništava
    • Ako je osoba s blackliste samo TICKET HOLDER (netko drugi je kupio za nju):
      • Sustav otkazuje SAMO tu specifičnu ulaznicu
      • Ostale ulaznice u istoj narudžbi ostaju valjane
      • Kupac se obavještava o djelomičnom otkazivanju
  • Otkazane ulaznice:
    • Status ulaznice mijenja se u "CANCELLED_BLACKLIST"
    • Sjedala se odmah vraćaju u dostupni inventar
    • QR kodovi se poništavaju
  • Bez povrata: Osobe s blackliste (bilo da su kupci ili nositelji ulaznica) ne primaju povrat za otkazane ulaznice. Ovo se odnosi i na osobu s blackliste i na sve ulaznice u njenoj narudžbi.
  • Sustav šalje obavijest pogođenim stranama:
    • Kupcu (ako je narudžba pogođena):
      • Subject e-maila: "Ticket Cancellation Notice - [Match Name]"
      • Sadržaj e-maila: "Your ticket order [Order ID] for [Match Name] on [Date] has been cancelled. For questions regarding this restriction, please contact MUP (Ministry of Interior)."
      • Push obavijest: "Your tickets for [Match Name] have been cancelled. Check email for details."
    • Nositelju ulaznice (ako je različit od kupca i ulaznica je otkazana):
      • E-mail: "Your ticket for [Match Name] on [Date] has been cancelled. For questions regarding this restriction, please contact MUP (Ministry of Interior)."
  • Sustav šalje obavijest sigurnosnom timu:
    • E-mail security adminu s potpunim detaljima
    • Sažetak: "Blacklist entry created for [Name] - [X] existing tickets cancelled"
    • Lista otkazanih narudžbi i pogođenih nositelja ulaznica
  • Kreiraju se audit log zapisi:
    • Kreiranje blacklist zapisa
    • Otkazivanje ulaznica (svaka ulaznica se logira zasebno s BUYER/HOLDER ulogom)
    • Slanje obavijesti
    • Admin ID, timestampovi i razlozi su dokumentirani
  • Poruka uspjeha adminu: "Blacklist entry created successfully. [X] existing ticket(s) cancelled."

Last Updated: November 2025