# 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) ```sql 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`