81 lines
3.3 KiB
Markdown
81 lines
3.3 KiB
Markdown
# PGŽ SPORT — UPDATE — 29.04.2026 ~12:00 — Auto-kategorizacija po dobi
|
|
|
|
## Što je dodano u nastavku
|
|
|
|
### 1. Tablica `pgz_sport.dobne_kategorije`
|
|
- 127 kategorija definirano za **17 sportova**
|
|
- Polja: sport, naziv, oznaka, min_godina, max_godina, organizacija (HNS/HRS/HKS/HBS/HOO itd.), redoslijed, promocija_dozvoljena
|
|
- Pravila iz HR sportskih saveza i međunarodnih (FIBA, FIDE, ITF, World Athletics, FINA, UCI, WT)
|
|
|
|
### 2. Sportaš shema proširena
|
|
- `kategorije TEXT[]` — sve kategorije u koje pripada
|
|
- `promocija_kategorije TEXT[]` — kategorije u koje se može promovirati u stariju ekipu
|
|
- `spol`, `sport`, `auto_kategorija_calc_at`
|
|
|
|
### 3. Backend endpointi
|
|
- `GET /api/v2/dobne-kategorije/list?sport=X` — sve kategorije
|
|
- `GET /api/v2/dobne-kategorije/by-sport` — group by sport
|
|
- `POST /api/v2/dobne-kategorije/auto-assign` — body: {datum_rodenja, sport} → primary/additional/promocije/neeligible
|
|
- `POST /api/v2/sportas/{id}/recalc-categories` — recalc za pojedinog sportaša
|
|
- `POST /api/v2/sportas/recalc-all-categories` — bulk za sve
|
|
|
|
### 4. Frontend GUI
|
|
- `spAddNew` modal sad ima:
|
|
- Sport dropdown (17 sportova)
|
|
- Spol dropdown
|
|
- Datum rođenja
|
|
- **Live preview kategorija** — kad korisnik upiše datum + sport, AJAX poziv vraća primarnu + dodatne + promocije
|
|
- **Checkbox za promocije** — administrator odlučuje da li mladi sportaš ide i u stariju selekciju
|
|
- Nova **Dobne kategorije** stranica u sidebar-u — pregled svih kategorija po sportu
|
|
- pageSportas profil prikazuje kategorije i promocije kao badges
|
|
|
|
### 5. Bulk recalc rezultati
|
|
- 721 sportaša dobio automatsku kategoriju
|
|
- 77 sportaša ima promocije (mladi → stariji)
|
|
|
|
## STATE NAKON RUN-A
|
|
|
|
| Metrika | Vrijednost |
|
|
|---------|-----------|
|
|
| Dobne kategorije definirane | **127** za **17 sportova** |
|
|
| Sportaša s kategorijom | **721** (od 1129) |
|
|
| Sportaša s promocijom | **77** |
|
|
| Funkcionara | 155 |
|
|
| Saveza | 220 |
|
|
| Klubova PGŽ | 1086 |
|
|
| Qdrant | ~58.500 točaka |
|
|
|
|
## Raspodjela top kategorija
|
|
- Boćanje 50+ Veterani: **371**
|
|
- Boćanje OPEN Seniori: **227**
|
|
- Boćanje U18 Kadeti: 29
|
|
- Boćanje U13 Pioniri: 23
|
|
- Rukomet OPEN: 21
|
|
- Nogomet OPEN: 12
|
|
- Košarka OPEN: 7
|
|
|
|
## Primjer auto-kategorizacije
|
|
**Marko Komadina, rod. 2012-05-15, sport: nogomet**
|
|
- Starost u sezoni 2026: 14 godina
|
|
- Primary: **U15 Mlađi kadeti** (HNS)
|
|
- Promocije dostupne:
|
|
- U17 Kadeti
|
|
- U19 Juniori (mogu igrati i seniorsku)
|
|
|
|
## Sportovi pokriveni
|
|
nogomet, rukomet, košarka, odbojka, vaterpolo, plivanje, boćanje, atletika, tenis, stolni tenis, veslanje, jedriličarstvo, biciklizam, karate, judo, taekwondo, šah
|
|
|
|
## URL-ovi
|
|
- /sport/ → sidebar **"Dobne kategorije"** (NEW) — pregled svih kategorija
|
|
- /sport/ → "Igrači · Foto" → "+ Novi sportaš" — modal s live preview kategorija
|
|
- /api/v2/dobne-kategorije/auto-assign — POST {datum_rodenja, sport}
|
|
- /api/v2/dobne-kategorije/list?sport=X
|
|
- /api/v2/sportas/{id}/profile — sad vraća kategorije + promocije
|
|
|
|
## TODO
|
|
1. Lokalni PGŽ savezi mogu imati specifične kategorije (npr. PGŽ Liga U13) — dodati po potrebi
|
|
2. Spol-specifične kategorije (M vs F) za sportove gdje su odvojene
|
|
3. Frontend filter sportaša po kategoriji
|
|
4. Cron job — recalc-all-categories prvi dan svakog mjeseca (kategorije se mijenjaju s godinama)
|
|
5. Veliko sutra: lokalni klubovi mogu imati svoju "ekipa" strukturu (1. ekipa, 2. ekipa, juniorska)
|