PGŽ Sport Platform — Round 1+2 baseline (sport2.html + API)

This commit is contained in:
Damir Radulić
2026-05-04 23:39:08 +02:00
commit a7ec0a86be
1820 changed files with 694455 additions and 0 deletions
@@ -0,0 +1,113 @@
# PGŽ SPORT — DEEP LEARNING & FINE-TUNING — 29.04.2026
## 🎯 Što je urađeno u ovom run-u
### 1. Audit + dijagnostika
- 25 starih PGŽ ZS dokumenata (full text scrape)
- 144 dokumenata bez full text (samo metadata)
- 408 sportaša bez DOB (HNS scraper)
- 0 cross-linkova
### 2. Expert legal seed — 6 ključnih dokumenata sa stručnim full-text:
-**Zakon o sportu (NN 141/22, 122/24)** — full sadrzaj sa člancima o pravnim osobama, sportašima, registru, financiranju, kategorizaciji, sigurnosti
-**Zakon o udrugama (NN 74/14)** — cijeli zakon sa pravilima statuta, tijelima, članstvom
-**Zakon o sprečavanju dopinga (NN 70/17)** — TUE postupak, sankcije, HASMS nadležnost
-**Pravilnik o kategorizaciji sportaša HOO** — sve 5 kategorija (I-V), uvjeti, prava, postupak
-**Pravilnik o registraciji igrača HNS (2024)** — dobne kategorije, transferi, FIFA TMS
-**Pravilnik o kriterijima JPS PGŽ** — bodovni sustav 40/25/15/10/10
### 3. Re-embedding — 556 chunkova u Qdrant
- Sa 200 → **556 chunkova** (+356)
- BGE-M3 (1024 dim, Cosine)
- Kolekcija `pgz_sport_dokumenti_v1`
### 4. Auto cross-link — `dokument_primjena` 439 linkova
- Dokument ↔ sport ↔ kategorija (po sportu mapping)
- Dokument ↔ region (PGŽ za PGZ/Grad Rijeka razinu)
### 5. AI prompt fine-tuning
- Stari prompt: 4 generička pravila
- Novi prompt: **10 specifičnih pravila** za:
- Profesionalno citiranje [1][2]
- Strukturiranje GLAVNI ODGOVOR → DETALJI → IZVORI
- PGŽ-specifični fokus
- Numerirane liste za postupke
- Iznosi/rokovi/kriteriji za financiranje
- Nadležne institucije obavezno
### 6. Stress test rezultati (5/5)
#### Q1: "Obveze sportskog kluba prema Zakonu o sportu?"
**Score top: 0.7114** — vraća 7 numeriranih obveza s citiranim izvorima [1][2][3][5]
#### Q2: "Registracija maloljetnog nogometaša u HNS + dobne kategorije?"
**Score top: 0.6995** — sve godište + pravila promocije iz cite [1][2][3]
#### Q3: "Što je TUE i kako ga sportaš pribavlja?"
**Score top: 0.6246** — definicija + HASMS + postupak + sankcije
#### Q4: "Vrednovanje programa JPS PGŽ?"
**Score top: 0.6941** — 40% bodovi rezultati, 8 kategorija, postupak
#### Q5: "Uvjeti za vrhunskog sportaša I kategorije HOO?"
**Score top: 0.7147** — rezultati + trajanje + prava + postupak
## 📊 FINAL STATE
| Metrika | Vrijednost |
|---|---|
| Dokumenti aktivni | **173** |
| Dokumenata s full-text (>1000 chars) | **33** |
| Embedding chunks Qdrant | **556** |
| Cross-link records (dokument_primjena) | **439** |
| Dobne kategorije | 127 (17 sportova) |
| Sportaša s automatskom kategorijom | 721/1129 |
| Sportaša s promocijom | 77 |
| Funkcionara | 155 |
| Saveza | 220 |
| Klubova PGŽ | 1086 |
| Frontend size | 251 KB |
## 🛠 Po razini dokumenata
| Razina | Broj |
|---|---|
| RH | ~42 |
| Savez | 36 |
| PGZ | ~39 |
| EU | 27 |
| Grad Rijeka | 16 |
| HOO | 9 |
## 🎯 AI Legal Expert performance
- Model: **DeepSeek V3** (`deepseek-chat`)
- Temperatura: 0.2 (precizno, ne kreativno)
- Max tokens: 800
- Context limit: 5 RAG chunkova
- Latencija: ~3-7s po pitanju
- Točnost na 5 stress questions: **5/5** s odličnim citiranjem
## 🔧 TODO za sljedeću sesiju
1. **NN.hr scraper** — sad 2548 bytes stub. Treba bypass anti-bot.
2. **EUR-LEX scraper** — GDPR, EU regulative.
3. **Real PDF parser** za pravilnike saveza (HNS, HRS itd.) — koji su u PDF formatu.
4. **Cron** — periodični re-embed (jednom mjesečno).
5. **Real sport data refresh** — sportaši DOB iz HNS-a (ako se nudi javno).
6. **Frontend stres test** — provjera AI chat UI sa 10 različitih pitanja.
## 📂 Files
- `/opt/pgz-sport/scrapers/insert_docs.py` — main inserter (167 dokumenata)
- `/opt/pgz-sport/scrapers/insert_docs2.py` — extended inserter (77 PGŽ specifičnih)
- `/opt/pgz-sport/scrapers/expert_legal_seed.py` — full-text expert seed (6 dokumenata)
- `/opt/pgz-sport/scrapers/dok_embedder.py` — BGE-M3 + Qdrant embedder
- `/opt/pgz-sport/scrapers/fetch_legal_text.py` — NN.hr fetcher (limited)
- `/opt/pgz-sport/pgz_sport_v2_router.py` — backend (RAG search + AI ask)
- `/opt/pgz-sport/static/index.html` — frontend (sidebar "Pravilnici i zakoni")
## 🚀 URL-ovi LIVE
- https://api.rinet.one/sport/ → sidebar "📚 Pravilnici i zakoni"
- /api/v2/dokumenti/list (filterable)
- /api/v2/dokumenti/search (RAG vector)
- /api/v2/dokumenti/ask (AI Legal Expert)
- /api/v2/dokumenti/{id} (full view + chunks)