Files
pgz-sport/_handoff/HANDOFF_20260429_2300_AUDIT_HBS_SPRINT.md

4.5 KiB

HANDOFF — 29.04.2026 ~23:00 (Audit + HBS reseed sprint)

🚨 KRITIČNI PROBLEM RIJEŠEN: Mock podaci eliminirani

Što smo imali

Damir je primijetio da Emil Baltić, njegov osobni prijatelj, ima upisan lažni datum rođenja 08.02.1975 u sustavu - dok je on stvarni kondicioni trener RK Zameta, ne igrač. Pokrenut je ozbiljan audit:

Što smo otkrili i očistili

Akcija Broj Detalji
Mock datumi/mjesta/slike (manual) 394 Sve PURGED + napomena "[PURGED 29.04.2026]"
HBS lažni 01-01-YYYY datumi 674 Datum→NULL, godina sačuvana u novoj koloni godina_rodenja
Duplikati osoba (Vedran Babić 2x, Mateo Hrvatin 2x...) 133 Smart dedup po quality score
TOTAL očišćeno 1.201 atributa Backup u clanovi_purge_backup_20260429, clanovi_dedup_backup_20260429

Sigurnosni mehanizam (DB trigger)

CREATE TRIGGER clanovi_validate_source 
BEFORE INSERT OR UPDATE ON pgz_sport.clanovi 
FOR EACH ROW EXECUTE FUNCTION validate_clanovi_source();
-- Ako pokušaš upisati datum_rodenja BEZ source_url → automatski NULL + WARNING

Nove kolone

  • clanovi.uloga — 'igrac', 'trener', 'kondicioni_trener', 'direktor', 'predsjednik', 'tajnik', 'fizioterapeut', 'lijecnik', 'sudac', 'ostalo'
  • clanovi.godina_rodenja — kad znamo samo godinu (HBS savez)

Primjer ispravljenih osoba RK Zamet (iz rk-zamet.hr)

👑 PREDSJEDNIK   Vedran Devčić        rk_zamet_web
📊 DIREKTOR      Vedran Babić         rk_zamet_web
📋 TRENER        Valter Matošević     rk_zamet_web
💪 KONDICIONI    Emil Baltić          rk_zamet_web   ← prije: lažan kao igrač s lažnim datumom
⚽ IGRAČI        Mateo Hrvatin, Tin Lučin, Veron Načinović + dr.

NOVI SCRAPERI (pravi izvori)

HBS scraper (/opt/pgz-sport/scrapers/hbs_scraper.py)

  • 34 PGŽ slug-ova (Kastav, Vargon, BK Rijeka, Krimeja, Sveti Jakov, Sveti Rok-Klana, Hreljin, Lovran, Opatija, Krk, Krenovac, Srdoči, Brod-Moravice, ŽBK Drenova/Čavle/Hreljin/Kastav, juniorske ekipe, kadetske ekipe...)
  • HVATA: ime, prezime, broj iskaznice (E-XX-YY), godina rođenja, matični klub, sportska grana, slika, sportski put (povijest klubova)
  • Voditelji ekipe → uloga='trener'
  • HBS scrape u tijeku - stalno dodaje nove sportaše

HNS scraper popravljen (parser
  • i
  • )
    • Hvata datum + mjesto rođenja iz HNS COMET
    • 405/408 ima pravi datum rođenja
    • 408/408 ima sliku iz hns.family

    📊 STANJE SADA

    manual:      922 sportasa  (čeka provjeru ručno)
    hbs_savez:   781+ sportasa (slike u tijeku)
    hns_semafor: 408 sportasa  (kompletni)
    rk_zamet_web: 10 sportasa  (uloge potvrđene)
    
    Klubova boćanje PGŽ:    116 (top: Rijeka 29, Lovran 27, Kastav 21)
    Klubova nogomet HNS:    22  (NK Zamet 37, NK Rikard Benčić 36, NK OŠK Omišalj 32...)
    Dokumenti:              253 + 2.850 chunks
    % sa izvorom (source_url): 56% i raste
    

    🆕 GUI NOVO

    Audit · Kvaliteta stranica

    • Sportaši po izvoru s % source_url
    • Klubovi po izvoru
    • TRUSTED / VERIFY badges
    • ⚠️ Sumnjivi zapisi (top 30 manual sa najmanje info, klikabilni)
    • Trusted zapisi (s datumom rođenja, klikabilni)
    • Povijest čišćenja (sys_audit log)

    Drill-down + double-click + breadcrumbs

    • Esc = back
    • ← Nazad gumb + breadcrumbs svugdje
    • Double-click na klubovima/sportašima
    • Tooltips "Klik / Dvoklik za..."
    • Uloga badge (👑 PREDSJEDNIK, 📊 DIREKTOR, 📋 TRENER, 💪 KONDICIONI, IGRAČ)
    • Source warning banner za manual zapise
    • — nepoznato — umjesto skrivanja praznih polja

    🔄 PENDING

    1. HRS, HVS, HKS scrapers - savezi nemaju strukturiranu bazu kao HNS COMET
      • Mogući izvori: pojedinačne klub web stranice (rk-zamet.hr template moguć i za druge)
    2. Manual 922 zapisa - svaki treba ručnu validaciju ili obrisati
    3. AI smoke retest - provjeriti da li AI sad zna prave uloge (Emil Baltić = kondicioni trener)
    4. ZSP PGŽ scraper - sport-pgz.hr ima detalje za PGŽ saveze i klubove

    Operativni quick-ref

    • Bridge: curl -X POST https://api.rinet.one/bridge/exec -H "X-API-KEY: rinet-yS4ZnKlwUqsjk" -d '{"cmd":"..."}'
    • DB: host=localhost dbname=rinet_v3 user=rinet password=R1net2026!SecureDB#v7
    • HBS scraper: python3 /opt/pgz-sport/scrapers/hbs_scraper.py
    • HNS scraper: python3 /opt/pgz-sport/scrapers/hns_semafor.py daily
    • GUI: https://api.rinet.one/sport/
    • Audit page: https://api.rinet.one/sport/#audit
    • Backup tablice: clanovi_purge_backup_20260429, clanovi_dedup_backup_20260429