Files
pgz-sport/_handoff/HANDOFF_20260429_2000_SPRINT_VECER.md

5.4 KiB
Raw Permalink Blame History

HANDOFF — 29.04.2026 ~20:00 (sprint dok je Damir radio)

DONE u ovom sprintu

A) Tri API 500 GREŠKE → SVE POPRAVLJENE

  1. Audit endpoint /api/v2/admin/audit?limit=100 → 500 zbog column a.created_at does not exist
    → FIX: /opt/pgz-sport/pgz_sport_v2_router.py linija 383: a.ts AS created_at, a.meta AS payload, a.resource_type, a.resource_id, a.ip_address
    → Backup: pgz_sport_v2_router.py.bak.{ts}
    → Sad vraća 401 (auth required) ne 500
  2. Manifestacije /api/manifestacije → 500 zbog column reference "naziv" is ambiguous (m.naziv vs s.naziv)
    → FIX: /opt/pgz-sport/pgz_sport_api.py sort_col mapping → m.naziv, m.razina, m.godina_od, m.mjesto
    → Sad 200 OK + 113 manifestacija
  3. Full-profile /api/v2/clanovi/{id}/full-profile → 500 zbog % u SQL koji je psycopg2 čitao kao parametar
    → FIX: % 100%% 100 u LPAD CASE expressionu

B) GitHub PAT NOVI snimljen

  • /opt/secrets/github_pat (chmod 600)
  • /opt/.env.rinet GITHUB_PAT=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

C) HNS Semafor scraper - REAKTIVIRAN (stari dobri)

  • /opt/pgz-sport/scrapers/hns_semafor.py (BeautifulSoup, 598 linija) - daleko bolji od mog v2
  • SEED: 21 PGŽ klubova mapirani sa hns_klub_id
  • KLUB_ALL: pucanje na 22 PGŽ klubova u background → trenutno 408 sportaša + 5,017 utakmica + 4 natjecanja
  • Stanje po klubovima:
    • NK Zamet 37, NK Rikard Benčić 36, NK OŠK Omišalj 32, NK Vihor 30, NK Klana 30
    • HNK Lovran 30, NK Vrbovsko 30, NK Lokomotiva 30, NK Mune 29, NK Krk 29
    • HNK Goranin 26, NK Risnjak 26, NK Omladinac Vrata 22, NK Draga 22
  • Log: /opt/pgz-sport/_logs/hns_klub_all.log

D) NOVI ENDPOINTI (HNS Semafor stil profil)

  • GET /api/v2/clanovi/{cid}/full-profile - kompletni HNS Semafor stil profil:
    • sportaš osnovni podaci + slika + dres + pozicija
    • trenutna sezona stats (4 KPI)
    • sezone agregirane (sezona + natjecanje × N P Ž C)
    • karijera (klubovi kroz vrijeme)
    • utakmice (zadnjih 50)
    • totals
  • GET /api/v2/klubovi/{kid}/clanovi - HNS Semafor stil pregled članstva kluba
  • GET /api/v2/klubovi/sa-clanstvom - svi klubovi sa brojem članova + HNS izvor

E) GUI UPGRADE

  • pageSportas() koristi novi /full-profile endpoint (kompatibilnost s starom strukturom)
  • pageKlubRoster() dobio HNS Semafor link badge ↗ + "+ Sportaš" gumb za klub_admin
  • addSportasPrompt(klub_id) funkcija za brzi dodavanje sportaša

F) MULTI-TENANT users mapping POPRAVLJEN

ID Email Type Klub/Savez
1 damir@rinet.one super_admin - (sve)
2 pgz.lukanovic@pgz.hr pgz_admin - (PGŽ scope)
3 pgz.djelatnik@pgz.hr pgz_user -
4 pgz.finance@pgz.hr pgz_finance -
5 zzjz.medical@zzjzpgz.hr pgz_zzjz -
6 tajnik.hnk@rijeka.hr savez_admin savez=Nogometni savez PGŽ (10)
7 tajnik.kvarner@kk.hr klub_admin klub=KK Kvarner - Rijeka (2285)
8 tajnik.zamet@rk.hr klub_admin klub=RK ZAMET (2321)
9 sportas.test@example.hr klub_clan -

G) DOKUMENTI + EMBEDDING

  • 253 dokumenti (povijesni o klubovima ranije ingestani: HŠK Victoria 1908, Stadion Kantrida, RK Zamet, Atletska dvorana Sušanj, BK Rijeka, Cvijet Mediterana, Klub Ocean ronjenje, Najbolji PGŽ 2025, NK Opatija 1911, HNK Orijent 1919)
  • 1.721 chunks embeddani u Qdrant pgz_sport_dokumenti_v1

H) AI SMOKE TEST PROŠAO

Pitanje Mod Odgovor
Tko je Ahmad Sharbini? SQL nogometaš član HNK Rijeka 2006 ✓
Tko je Mirza Džomba? SQL rukometaš RK Zamet ✓
Tko je Luciano Sušanj? SQL hrvatski atletičar AK Kvarner Autotrans, I HOO ✓
Što je Stadion Kantrida? RAG povijesni stadion 1913, dom HNK Rijeke ✓
Tko je Petar Klovar? SQL hrvatski ronilac Klub Ocean Rijeka ✓
Što je RK Zamet? SQL rukometni klub Rijeka 1954/1957, Premijer liga ✓

📊 STATE u 20:00

klubovi total:     1.996
sportasi total:    2.145 (od kojih 408 iz HNS Semafor auto-sync)
utakmice_log:      5.017
dokumenti:         253
chunks embedded:   1.721 (Qdrant)
HNS klubovi:       22 (od 22 seedanih)

🔄 PENDING (za sljedeći sprint)

  1. Auto-povlačenje s drugih saveza: HKS (košarka), HVS (vaterpolo), HRS (rukomet), HBS (biciklizam) - nemaju Semafor ekvivalent ali svaki ima neku DB
  2. GUI puna konsolidacija app.rinet.one stil - postoje već cards/grids ali treba ujednačiti SVE: ikone (lucide), boje, padinge
  3. Pregled sportaša s vremenom: stari sportaši koji više nisu u klubu
  4. Ostale GUI sekcije: Manifestacije, Sport Stats, ZZJZ - imaju sve podatke ali GUI prikaz minimalniji
  5. Search ujedinjeni: jedna search bar za klubove + sportaše + manifestacije
  6. Sportaš edit: full edit form za klub_admin (trenutno samo brzi prompt)

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
  • HNS scraper modes: python3 /opt/pgz-sport/scrapers/hns_semafor.py [seed|player <pid>|klub <db_kid>|klub_all|daily]
  • GUI: https://api.rinet.one/sport/
  • Service: systemctl restart pgz-sport.service port 8095
  • BGE-M3: localhost:9879 (CUDA, dim=1024)
  • Qdrant: 10.10.0.2:6333 collection pgz_sport_dokumenti_v1
  • GitHub PAT: cat /opt/secrets/github_pat