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,129 @@
# HANDOFF — 30.04.2026 11:30 — BORIS MILANOVIĆ CLEANUP + STATS IMPORT
## 🚨 PRIORITET BR. 1 RIJEŠEN
Boris Milanović (PGŽ Stručni suradnik za sport) tražio:
1. ✅ Klubovi prikazuju SAMO sportske + PGŽ sufinancirane (NE posmrtnih, vatrogasaca, KUD-ova)
2. ✅ Provjera podataka
3. ✅ Import službene statistike saveza (Excel) + Šahovski savez (DOCX)
## CLEANUP REZULTAT
### Klasifikacija 2030 klubova → 24 kategorije
| Kategorija | Broj | Aktivan | PGŽ sufinanciran |
|------------|------|---------|------------------|
| **sport_klub** | 1420 | ✓ | ✓ |
| **sport_savez** | 33 | ✓ | ✓ |
| **sportski_ribolov** | 49 | ✓ | ✓ |
| **planinarstvo** (granično) | 40 | ✓ | (Boris odluči) |
| kultura (KUD, klape, povijesna) | 81 | ✗ deaktivirano | ✗ |
| vatrogasci (DVD/JVP) | 60 | ✗ | ✗ |
| dobrotvorna_vjerska | 58 | ✗ | ✗ |
| lov | 58 | ✗ | ✗ |
| strucna_kulturna | 36 | ✗ | ✗ |
| znanstvene_strucne | 35 | ✗ | ✗ |
| karneval_tradicija | 23 | ✗ | ✗ |
| zdravstvo_socijala (alkoholičari, ovisnici, invalidski) | 20 | ✗ | ✗ |
| ekologija_zdravstvo | 22 | ✗ | ✗ |
| hobi_udruga (foto, filateli, radio amateri) | 26 | ✗ | ✗ |
| servisni_klub (Lions, Rotary, Skal) | 15 | ✗ | ✗ |
| poslovni_klub | 7 | ✗ | ✗ |
| poljoprivreda | 7 | ✗ | ✗ |
| invalidi_branitelji | 5 | ✗ | ✗ |
| prijatelji_navijaci | 17 | ✗ | ✗ |
| umirovljenici | (uključeno gore) | | |
| ostalo_provjeriti (Boris ručno) | 4 | ✗ | ✗ |
**Aktivnih ukupno: 1490** (samo sportske)
**Deaktiviranih ukupno: 540** (NIJE OBRISANO, samo skriveno; backup: `pgz_sport.klubovi_pre_cleanup_20260430`)
### GUI test
- `https://api.rinet.one/sport/` → 0 sumnjivih (vatrogasaca, KUD-ova, posmrtnih) u rezultatima
- API endpoint `/api/v2/klubovi/sa-clanstvom?limit=200` već koristi `aktivan=true` filter ✓
## BORISOVA SLUŽBENA STATISTIKA (Excel + DOCX)
Importano u tablicu `pgz_sport.savez_stats_oficijalno`:
- **24 saveza**
- **267 + 13 (šah) = 280 kategorijskih redova**
- **18.007 sportaša ukupno**
- 5.495 žena
- 10.749 muških
- 1.818 veterana
### Top 10 saveza (po broju sportaša)
1. **NOGOMET 5.581** — žene 93, muški 4.616, veterani 592
2. **ODBOJKA 2.047** — žene 1.775, muški 242, veterani 30
3. **KARATE 1.735** — žene 789, muški 777, veterani 169
4. **KOŠARKA 1.115** — žene 277, muški 838
5. **ATLETIKA 999** — žene 449, muški 433, veterani 117
6. **BOĆANJE 980** — žene 148, muški 832
7. **JUDO 961** — žene 663, muški 266, veterani 35
8. **RUKOMET 924** — žene 331, muški 593
9. **JEDRENJE 737** — žene 143, muški 594, veterani 17
10. **KUGLANJE 438** — žene 154, muški 232, veterani 52
11. **ŠAHOVSKI SAVEZ 413** — žene 86, muški 328, veterani 51
## NOVI API ENDPOINTI
| Endpoint | Što vraća |
|----------|-----------|
| `GET /api/v2/pgz/savez-stats` | 24 saveza s ukupno + ž/m/veterani per savez |
| `GET /api/v2/pgz/savez-stats/{savez}` | Detaljna kategorijska razdioba |
| `GET /api/v2/pgz/sport-organizacije?kategorija=...&sufinanciran=true` | Filterirani klubovi |
| `GET /api/v2/pgz/cleanup-summary` | Pregled cleanup operacije |
## DB IZMJENE
### Nove kolone u `pgz_sport.klubovi`
- `kategorija_organizacije TEXT` — vrsta (sport_klub, vatrogasci, kultura...)
- `pgz_sufinanciran BOOLEAN DEFAULT FALSE` — flag za PGŽ
- `cleanup_reason TEXT` — razlog deaktivacije
### Nova tablica `pgz_sport.savez_stats_oficijalno`
- `savez, kategorija, natjecateljki, natjecatelja, veterani, ukupno, izvor`
- UNIQUE(savez, kategorija)
### Novi view
- `pgz_sport.v_klubovi_sportski` — samo sport_klub, sport_savez, sportski_ribolov, planinarstvo
### Backup
- `pgz_sport.klubovi_pre_cleanup_20260430` (svih 2030 redova prije ikakvih promjena)
## PENDING — što Boris treba odlučiti
1. **40 planinarska društva** — sport ili nije? (Hrvatski planinarski savez je član HOO-a, ali PGŽ-u možda nije važan)
2. **4 ostalo_provjeriti** zapisa — ručno pregledati:
- "Klub KLEMENTA 1909"
- "Klub Skokova u vodu Primorje 2010"
- "Likovno društvo Kvarner"
- jedna četvrta
3. **6 saveza nemaju Excel statistiku** — provjeriti s Borisom:
- GIMNASTIKA (samo Rijeka/Vita ima stats)
- PIKADO (kolona prazan TOTAL)
## OPERATIVNI QUICK-REF
```bash
# Test cleanup
curl -s https://api.rinet.one/sport/api/v2/pgz/cleanup-summary | python3 -m json.tool
# Test savez stats
curl -s https://api.rinet.one/sport/api/v2/pgz/savez-stats | python3 -m json.tool
# Restore deaktiviranih klubova ako se predomislimo
PGPASSWORD='R1net2026!SecureDB#v7' psql -h localhost -U rinet -d rinet_v3 -c \
"UPDATE pgz_sport.klubovi SET aktivan = TRUE WHERE id IN (SELECT id FROM pgz_sport.klubovi_pre_cleanup_20260430)"
# Vratiti specific klub u sport
PGPASSWORD='R1net2026!SecureDB#v7' psql -h localhost -U rinet -d rinet_v3 -c \
"UPDATE pgz_sport.klubovi SET aktivan=true, kategorija_organizacije='sport_klub', pgz_sufinanciran=true WHERE id=<KLUB_ID>"
```
## FILE INPUTS (Boris)
- `klubovi_sportaši_raspodjela_po_savezima.xlsx` (24 saveza, 28×121 grid)
- `ŠAHOVSKI_SAVEZ.docx` (13 kategorijskih redaka)
Oba file-a snimljena u `pgz_sport.savez_stats_oficijalno`. Buduća dostava preko istog formatа = direktan import.