Files
pgz-sport/_handoff/HANDOFF_20260429_0936.md
T

3.4 KiB

PGŽ SPORT — UPDATE — 29.04.2026 09:35

Što je dodano u nastavku run-a (nakon prvog handoff-a)

HNS klub roster scraping (BREAKTHROUGH)

  • cmd_klub + cmd_klub_all u hns_semafor.py implementirano
  • parse_match BeautifulSoup parser za /utakmice/{id}/{slug}/
  • Iz JEDNE utakmice po klubu izvuče cijeli sastav (početni + pričuvni)
  • Extracted: ime, prezime, HNS player ID, pozicija (Vratar/Igrač)
  • TODO: broj_dresa + slika_url parser miss — vrijednosti su u DOM-u ali parser ih ne hvata pouzdano. Fix u sljedećoj iteraciji.

Resultat scraping run-a

  • 218 sportaša scrape-ano (uključujući Komadinu = 219 ukupno HNS source)
  • 14 PGŽ klubova s rosterom:
    • NK Vrbovsko: 18 igrača
    • NK Krk: 18 igrača
    • NK Risnjak: 17 igrača
    • NK OŠK Omišalj: 17 igrača
    • NK Klana: 17 igrača
    • NK Lokomotiva: 16 igrača
    • NK Omladinac Vrata: 16 igrača
    • HNK Goranin: 16 igrača
    • NK Vihor: 15 igrača
    • NK Rikard Benčić: 15 igrača
    • HNK Kozala, NK Mune, HNK Lovran, NK Doker, NK Draga, NK Vihor (B), NK Zamet — manjci jer nemaju ili imaju malo dostupnih utakmica

Klub fixes (RBAC blocker resolved)

  • Tajnik 7 (tajnik.kvarner@kk.hr) → linkan na "RUKOMETNI KLUB KVARNER KOSTRENA" (id=2166)
  • Tajnik 8 (tajnik.zamet@rk.hr) → linkan na "Rukometni klub ZAMET" (id=10)
  • user_klub_links zapis dodan za oba s role='tajnik', primary=true
  • RBAC test: tajnik.zamet sad vidi samo sebe (count=1)

Duplicate cleanup

  • "NK Krk Krk" duplicate merge-an u canonical "NK Krk"
  • clanovi i utakmice_log redirected
  • hns_klub_id 1558 fiksan na canonical row

Embedding refresh

  • Sportaši: 264 točaka u pgz_sport_v1 (220 savezi + 1637 klubovi + 264 sportaši = baseline za AI search)

STATE BAZE NAKON RUN-A

SELECT 
  (SELECT count(*) FROM pgz_sport.clanovi WHERE source='hns_semafor') AS sportasi_hns,
  -- = 218
  (SELECT count(*) FROM pgz_sport.klubovi WHERE hns_klub_id IS NOT NULL) AS klubovi_hns,
  -- = 17
  (SELECT count(distinct klub_id) FROM pgz_sport.clanovi WHERE source='hns_semafor') AS klubova_s_rosterom
  -- = 14
;

TODO ZA SUTRA (ažurirano)

  1. Parser fix: broj_dresa + slika_url u match-stranici parsiranja (pristup: scope to
  2. per igrač, find img.src + leading digit)
  3. HNS match log: pretvoriti svaku scrape-anu utakmicu u utakmice_log redak (po igraču: pogoci, kartoni, minute, starter/bench)
  4. HNS season aggregator: nakon match log popunjenja, /sportas/{id}/profile će automatski pokazati sezonske statistike
  5. HRS/HKS/HVS scrapers — slični semafor portali za druge sportove (rukomet itd.)
  6. Frontend klub-link UI — još nije; backend POST/DELETE /users/klub-link postoji ali bez UI
  7. Frontend permissions matrix UI — ne postoji
  8. Sportaš ručni unos — frontend forma za klubove za ručno upisivanje
  9. HEAD / 405 — kozmetika (root endpoint ne podržava HEAD, GET only)

CRON ROUTINE

  • 04:00 daily: hns_semafor.py daily (incremental refresh poznatih igrača)
  • :17 hourly: embed klubovi
  • :27 hourly: embed sportasi
  • 03:30 ned: embed savezi
  • 02:00 pon: log truncation

TEST URL (kad se vratiš)