Files
pgz-sport/_handoff/HANDOFF_20260503_1715_PGZ_SPORT.md
T

4.9 KiB
Raw Blame History

HANDOFF: PGZ Sport Portal — Sprint 03.05.2026 17:15

Datum: 03.05.2026 17:15
Autor: Claude Sonnet 4.6
Status: 3-STRIKE ACTIVE — sve tvrdnje verificirane


STANJE SERVERA (verified 17:15)

pgz-sport.service:  ACTIVE (port 8095)
nginx:              OK (no-cache headers na sport.rinet.one)
Fail count:         0 (systemctl list-units --state=failed)

ŠTO RADI (endpoints 200 verified)

Endpoint Status
/api/v2/sport/objekti 200
/api/v2/analytics/budget-score 200
/api/v2/analytics/savez-drill?savez_id=N 200
/api/v2/analytics/proracun-trend 200
/api/v2/analytics/filter-options 200
/api/v2/rno 200
/api/v2/hns-natjecanja 200
/api/v2/godisnjaci/search (POST) 200
/sport/ HTML 200, no-cache

ŠTO JE U HTML-u (verified grepcountom)

Funkcija Ref.
pageObjekti 1 (postoji)
pageAnalytics 2 (postoji)
pageRno 1 (postoji)
pageHns 1 (postoji)
pageGodisnjaci 3 (postoji)
toggleNavSec 2 (collapsible nav)
pushState (URL hash) 2 (hash routing)

ŠTO NIJE RIJEŠENO (problemi s prošle sesije)

1. #objekti stranica — POSTOJI ali nije vidljiva u nav?

  • pageObjekti je u HTML-u, objekti je u NAV (Registri sekcija)
  • Nav je collapsible — Registri sekcija je OPEN by default
  • Ako se ne vidi: hard refresh (Ctrl+Shift+R)
  • API: 106 objekata, sve kategorije, filtri tip/grad

2. MATRIX POPUNJENOSTI — NESTAO

  • Bio u starijoj verziji (negdje između bak.matrix.* backupova)
  • NE POSTOJI u trenutnom HTML-u
  • Treba rebuild: matrica savezi × kategorije podataka (clanovi, lijecnicki, dokumenti, fin...)
  • Backup gdje je bio: index.html.bak.matrix.1777744755 (20:43, 02.05)

3. OBRASCI / PREDLOŠCI — U DB, NEMA PAGE

  • pgz_sport.form_templates ima 15 rows u DB
  • pageObrasci / pageFormTemplates NE POSTOJI u HTML-u
  • Treba dodati: API endpoint + frontend page
  • Endpoint za add: GET /api/v2/form-templates

4. AUTOTROLEJ — NIKAD NIJE BIO DIO PGŽ SPORT

  • Krivo sam ga stavio u "na horizontu" u ranijoj sesiji
  • Nema nikakve veze s PGŽ sport portalom
  • Memorizirano pogrešno iz generalnog Ri.NET konteksta
  • BRISATI iz TODO liste za ovaj projekt

DB STANJE

pgz_sport.klubovi (aktivnih):    1658
pgz_sport.sportski_objekti:       106
pgz_sport.form_templates:          15
pgz_sport.savezi (aktivnih):       40-ish relevantnih PGŽ

Deaktivirano danas (non-sport): 23 organizacije
  - Rotary (2), Lions (1), Rotaract (1)
  - Kinološka društva (6)
  - Inovatori/Crnogorci (4)
  - Maketari/Brodomaketari (3)
  - Oldtimeri (5)
  - Izviđači (1)

KNOWLEDGE BASE STANJE

Qdrant kolekcije (relevantne za sport):
  pgz_sport_v1:           9,xxx vektora
  pgz_godisnjaci:         4,999 vektora (godišnjaci ZSP PGZ 2006-2024)
  pgz_sport_dokumenti_v1: postoji
  legal_v2:               postoji (zakoni)

dabi.knowledge kategorije:
  legal_deep_zakon:       71,612 facts
  legal_deep_pravilnik:   68,661 facts
  pgz_sport_online:           7 facts (scrape today)
  
legal.articles (DB):      309,819 rows

GAP: HOO pravilnici za sport NISU posebno scrapirani
GAP: Godišnjaci su embeddani u Qdrant ali nisu u SQL structured tablicama

URL ROUTING

Sad svaka stranica ima hash u URL-u:
  https://api.rinet.one/sport/#dashboard
  https://api.rinet.one/sport/#analytics
  https://api.rinet.one/sport/#objekti
  itd.

Implementirano: history.pushState + popstate handler

BROWSER GREŠKA (nije naša)

"runtime.lastError: back/forward cache" 
→ Chrome extension greška (Grammarly/LastPass/slično)
→ Apsolutno nema veze s portalom

PRIORITETI ZA SLJEDEĆU SESIJU

P1 — HITAN (Damir je tražio, ne postoji):

  • Matrix popunjenosti — rebuild iz bak.matrix.1777744755
  • Obrasci/predlošci — API + page (15 u DB)

P2 — Važno:

  • Dedup sportski objekti (ima duplikata — Kantrida ×4, Krimeja ×3...)
  • HOO pravilnici scraper
  • Strukturirani parse godišnjaka → SQL tablice

P3 — Nice to have:

  • Sport/grad normalizacija u dropdown-ima (mix case)
  • Koordinate (lat/lng) za objekte — većina null
  • ERP za klubove (member self-service)

KLJUČNE DATOTEKE

HTML:     /opt/pgz-sport/static/index.html (7435 linija)
Backend:  /opt/pgz-sport/pgz_sport_api.py
Router:   /opt/pgz-sport/pgz_sport_v2_router.py (4300+ linija)
Service:  systemctl restart pgz-sport
Log:      journalctl -u pgz-sport -n 50 --no-pager
Backups:  /opt/pgz-sport/static/index.html.bak.*

DOBRI BACKUPI:
  .bak.rno          — 407KB, 16:15, dobra baza (bez matrix, bez RNO/HNS pages)
  .bak.allfix.1777765254 — 408KB, 01:40, sve ispravne verzije stranica

NAPOMENA ZA SLJEDEĆI CLAUDE

Read before anything:

  1. /opt/ai-rinet/CLAUDE.md
  2. VRHOVNI_ZAKONI.md
  3. Ovaj file

3-STRIKE RULE AKTIVAN: sljedeća greška = manual mode.

NIKAD ne diraj /opt/rinet/ (PROD) bez explicit approve.