3.4 KiB
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_alluhns_semafor.pyimplementiranoparse_matchBeautifulSoup 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)
- Parser fix: broj_dresa + slika_url u match-stranici parsiranja (pristup: scope to
- per igrač, find img.src + leading digit)
- HNS match log: pretvoriti svaku scrape-anu utakmicu u utakmice_log redak (po igraču: pogoci, kartoni, minute, starter/bench)
- HNS season aggregator: nakon match log popunjenja, /sportas/{id}/profile će automatski pokazati sezonske statistike
- HRS/HKS/HVS scrapers — slični semafor portali za druge sportove (rukomet itd.)
- Frontend klub-link UI — još nije; backend POST/DELETE /users/klub-link postoji ali bez UI
- Frontend permissions matrix UI — ne postoji
- Sportaš ručni unos — frontend forma za klubove za ručno upisivanje
- 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š)
- https://api.rinet.one/sport/ — frontend (Korisnici page sad ima full CRUD)
- https://api.rinet.one/sport/api/v2/klub/2200/sportasi — NK Klana roster (17 igrača)
- https://api.rinet.one/sport/api/v2/sportas/145/profile — Marko Komadina
- Svaki klub_id 2200..2215 s nogomet+hns_klub_id ima sportaše — možeš ih nabrajati u browser-u