feat: /api/v2/analiza/* endpoints - sport analytics backend
This commit is contained in:
+465
@@ -0,0 +1,465 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import psycopg2
|
||||
DB = dict(host='localhost', port=5432, dbname='rinet_v3', user='rinet', password=os.environ["DB_PASSWORD"])
|
||||
|
||||
DOCS = [
|
||||
{
|
||||
'title': 'Pravilnik o sigurnosti na sportskim događanjima (NN 117/03)',
|
||||
'kratak_opis': 'Sigurnosne mjere — redarski službenici, video nadzor, suradnja s policijom.',
|
||||
'vrsta': 'pravilnik', 'razina': 'RH', 'organizacija': 'MUP + MTS',
|
||||
'sluzbeni_glasnik': 'NN 117/03, 71/06, 43/09, 34/11, 68/12, 48/13, 19/15, 98/19',
|
||||
'izvor_url': 'https://www.zakon.hr/z/345/Zakon-o-spre%C4%8Davanju-nereda-na-sportskim-natjecanjima',
|
||||
'kljucne_rijeci': ['sigurnost','redari','navijači','MUP','video nadzor'],
|
||||
'izdano_datum': '2003-07-15',
|
||||
'sadrzaj': '''ZAKON I PRAVILNIK O SIGURNOSTI NA SPORTSKIM DOGAĐANJIMA
|
||||
|
||||
OPĆE ODREDBE
|
||||
Ovaj zakon i pratei pravilnik uređuju mjere za sprječavanje nereda na sportskim natjecanjima i drugim sportskim događanjima u RH.
|
||||
|
||||
ORGANIZATOR NATJECANJA — odgovoran je za:
|
||||
1) Procjenu sigurnosnih rizika prije svakog događanja
|
||||
2) Angažiranje propisanog broja redara (minimum prema kapacitetu)
|
||||
3) Suradnju s nadležnom policijskom upravom
|
||||
4) Postavljanje i funkcioniranje video nadzora
|
||||
5) Kontrolu ulaza i izlaza navijača
|
||||
6) Razdvajanje navijača domaćih i gostujućih klubova
|
||||
|
||||
KATEGORIJE NATJECANJA PREMA RIZIKU:
|
||||
- Niski rizik: 1 redar/100 gledatelja
|
||||
- Srednji rizik: 1 redar/50 gledatelja, dodatna policijska zaštita
|
||||
- Visoki rizik (derbiji): 1 redar/30 gledatelja, intervencija MUP-a, video nadzor 100%
|
||||
|
||||
OBVEZE REDARA:
|
||||
- Pohađanje obrazovne obuke (60 sati teorija + praksa)
|
||||
- Položen ispit pred ovlaštenim odborom
|
||||
- Zaštitna licenca koju izdaje MUP
|
||||
- Vidljiva odora s identifikacijskim oznakama
|
||||
- Minimalna dob 18 godina
|
||||
|
||||
ZABRANJENO PONAŠANJE NAVIJAČA:
|
||||
- Bacanje predmeta u igralište
|
||||
- Pirotehnika (osim odobrene)
|
||||
- Verbalno/fizičko nasilje
|
||||
- Prekoračenje granica navijačkih sektora
|
||||
- Korištenje opasnih predmeta
|
||||
|
||||
SANKCIJE:
|
||||
- Privremena zabrana ulaska na sportska događanja (od 6 mjeseci do 5 godina)
|
||||
- Globa od 250 do 5.000 EUR
|
||||
- Kaznena prijava za teža kaznena djela
|
||||
- Zabrana putovanja na inozemne utakmice za teže prekršaje
|
||||
|
||||
OBVEZA PRIJAVE:
|
||||
- Organizator je dužan prijaviti svaki incident u roku 24 sata
|
||||
- Vodi se evidencija pri MUP-u
|
||||
- Lista zabrana ulaska je centralizirana
|
||||
|
||||
SPORTSKE GRAĐEVINE — TEHNIČKI ZAHTJEVI:
|
||||
- Označeni izlazni putovi (svjetlosni signali)
|
||||
- Vatrogasna zaštita
|
||||
- Medicinska služba na licu mjesta
|
||||
- Prva pomoć kapaciteta proporcionalna kapacitetu
|
||||
|
||||
UEFA / FIFA STANDARDI:
|
||||
- Prema UEFA Stadium Regulations primjenjuju se za europska klupska natjecanja
|
||||
- Stadion Rujevica (HNK Rijeka) ima UEFA Category 4 status
|
||||
- Posebni uvjeti za europske utakmice'''
|
||||
},
|
||||
{
|
||||
'title': 'Pravilnik o licenciranju trenera u sportu (NN 89/23)',
|
||||
'kratak_opis': 'Sustav licenciranja stručnog kadra — UEFA, FIBA, FINA i HOO kategorije.',
|
||||
'vrsta': 'pravilnik', 'razina': 'RH', 'organizacija': 'MTS',
|
||||
'sluzbeni_glasnik': 'NN 89/23',
|
||||
'izvor_url': 'https://narodne-novine.nn.hr/clanci/sluzbeni/2023_08_89_1334.html',
|
||||
'kljucne_rijeci': ['licenca','trener','MTS','obrazovanje','stručno usavršavanje'],
|
||||
'izdano_datum': '2023-08-04',
|
||||
'sadrzaj': '''PRAVILNIK O LICENCIRANJU TRENERA U SPORTU (NN 89/23)
|
||||
|
||||
OPĆE ODREDBE
|
||||
Pravilnik uređuje uvjete, postupke, kategorije i obveze stručnog usavršavanja trenera u sustavu sporta RH.
|
||||
|
||||
KATEGORIJE TRENERSKIH LICENCI (HOO sustav):
|
||||
|
||||
I. KATEGORIJA — Vrhunski trener:
|
||||
- Specijalistički studij iz područja kineziologije ili sporta (180+ ECTS)
|
||||
- Najmanje 10 godina trenerskog iskustva u 1. ligi
|
||||
- Trenirao reprezentaciju ili I. kategorije sportaše
|
||||
- Položen specijalistički ispit
|
||||
- Trajna licenca uz redovita usavršavanja
|
||||
|
||||
II. KATEGORIJA — Profesionalni trener:
|
||||
- Završen sveučilišni studij kineziologije (180 ECTS)
|
||||
- 5 godina trenerskog iskustva
|
||||
- Položen profesionalni ispit
|
||||
- Licenca obnoviva svake 4 godine
|
||||
|
||||
III. KATEGORIJA — Kvalificirani trener:
|
||||
- Završen viši sveučilišni studij ili specijalistička obuka
|
||||
- 2 godine trenerskog iskustva
|
||||
- Položen kvalifikacijski ispit
|
||||
- Licenca obnoviva svake 3 godine
|
||||
|
||||
IV. KATEGORIJA — Trener pomagač:
|
||||
- Završeno srednje obrazovanje + obuka HOO
|
||||
- 1 godina iskustva
|
||||
- Položen osnovni ispit
|
||||
- Licenca obnoviva svake 2 godine
|
||||
|
||||
V. KATEGORIJA — Volonter / asistent:
|
||||
- Osnovna obuka (60-100 sati)
|
||||
- Bez iskustva potrebno
|
||||
- Mentorstvo iskusnijeg trenera
|
||||
- Licenca godišnja
|
||||
|
||||
UEFA NOGOMETNE LICENCE:
|
||||
- UEFA Pro: najviša razina za 1. lige (HNL, premijer lige)
|
||||
- UEFA A: za 2. lige i mlađe selekcije
|
||||
- UEFA B: za regionalna natjecanja, kadetska
|
||||
- UEFA C: za amaterska, dječja
|
||||
- UEFA Goalkeeper A/B: specijalizirano za vratare
|
||||
|
||||
DRUGE NACIONALNE LICENCE:
|
||||
- FIBA (košarka): Pro / A / B kategorije
|
||||
- FINA (plivanje, vaterpolo): International / National
|
||||
- World Athletics: Level 1-5
|
||||
- IHF (rukomet): Master Coach / A / B
|
||||
- UCI (biciklizam): Tier 1-4
|
||||
- IJF (judo): A / B / C / D
|
||||
- WT (taekwondo): International / National
|
||||
|
||||
POSTUPAK STJECANJA LICENCE:
|
||||
1) Prijava pri nacionalnom savezu
|
||||
2) Završetak obvezne obuke (teorija + praksa)
|
||||
3) Polaganje ispita
|
||||
4) Registar pri MTS i savezu
|
||||
5) Izdavanje licence s rokom
|
||||
|
||||
KONTINUIRANO STRUČNO USAVRŠAVANJE (CSU):
|
||||
- Licencirani treneri moraju pohađati godišnje seminare
|
||||
- Minimum 30 sati godišnje za I/II kategorije
|
||||
- 20 sati za III kategoriju
|
||||
- 15 sati za IV/V
|
||||
|
||||
REGISTAR TRENERA:
|
||||
Centralni registar vodi MTS. Javan, dostupan na mtus.gov.hr.
|
||||
|
||||
OBVEZNA RADNA RESURS:
|
||||
Klub mora imati glavnog trenera s odgovarajućom licencom za razinu natjecanja.
|
||||
|
||||
SANKCIJE:
|
||||
- Suspendiranje licence za teški prekršaj
|
||||
- Trajno oduzimanje licence za doping podršku ili nasilje
|
||||
- Globa od 500 do 5.000 EUR'''
|
||||
},
|
||||
{
|
||||
'title': 'Etički kodeks sporta RH (HOO + MTS)',
|
||||
'kratak_opis': 'Nacionalni etički kodeks — sport bez korupcije, fair play, antidoping kultura.',
|
||||
'vrsta': 'pravilnik', 'razina': 'HOO', 'organizacija': 'HOO + MTS',
|
||||
'sluzbeni_glasnik': None,
|
||||
'izvor_url': 'https://www.hoo.hr/hr-hr/o-hoo-u/etika',
|
||||
'kljucne_rijeci': ['etika','fair play','korupcija','dopinga','vrijednosti'],
|
||||
'izdano_datum': '2022-01-01',
|
||||
'sadrzaj': '''ETIČKI KODEKS SPORTA RH
|
||||
|
||||
PREAMBULA
|
||||
Sport je zajedničko dobro hrvatskog društva i temeljna vrijednost koja promiče zdravlje, fair play, jednake mogućnosti, izvrsnost i poštivanje. Ovaj kodeks obvezuje sve sudionike u sustavu sporta RH.
|
||||
|
||||
TEMELJNA NAČELA:
|
||||
|
||||
1. FAIR PLAY:
|
||||
- Poštovanje pravila igre
|
||||
- Poštovanje protivnika i sudaca
|
||||
- Poštovanje rezultata
|
||||
- Sportaš/trener ne smije utjecati na rezultat van legitimnih sportskih sredstava
|
||||
|
||||
2. INTEGRITET:
|
||||
- Zabrana namještanja utakmica
|
||||
- Zabrana sudjelovanja u klađenju na vlastite utakmice
|
||||
- Obvezna prijava ponuda za namještanje
|
||||
- Suradnja s istražnim tijelima
|
||||
|
||||
3. ANTI-DOPING:
|
||||
- Pridržavanje WADA i HASMS propisa
|
||||
- "Čisto" sportsko okruženje
|
||||
- Edukacija sportaša od mlađih kategorija
|
||||
|
||||
4. ZAŠTITA DJECE:
|
||||
- Zabrana svake fizičke i psihičke zlostavljanja
|
||||
- Trener uvijek dostupan i odgovoran
|
||||
- Sigurnosne provjere stručnog kadra (kazneni list)
|
||||
- Roditeljska suglasnost za sve aktivnosti maloljetnika
|
||||
|
||||
5. JEDNAKE MOGUĆNOSTI:
|
||||
- Bez diskriminacije po spolu, dobi, rasi, religiji, invaliditetu
|
||||
- Pristup sportu za sve
|
||||
- Posebne mjere za uključivanje skupina u nepovoljnom položaju
|
||||
|
||||
6. POŠTOVANJE LJUDSKIH PRAVA:
|
||||
- Zabrana dijela sa sportskim subjektima koji krše ljudska prava
|
||||
- Pravo sportaša na slobodu izražavanja unutar etičkih granica
|
||||
- Privatnost — zaštita osobnih podataka (GDPR)
|
||||
|
||||
7. SUKOB INTERESA:
|
||||
- Funkcionari klubova/saveza moraju prijaviti sukob interesa
|
||||
- Zabrana istovremenog upravljanja konkurentskim klubovima
|
||||
- Transparentnost u odlučivanju
|
||||
|
||||
8. FINANCIJSKA TRANSPARENTNOST:
|
||||
- Javna objava godišnjih financijskih izvještaja
|
||||
- Transparentnost donacija i sponzorstava
|
||||
- Antikorupcijska politika
|
||||
|
||||
9. ODGOVORNO PONAŠANJE U JAVNOSTI:
|
||||
- Sportaši kao uzori
|
||||
- Zabrana govora mržnje
|
||||
- Odgovornost na društvenim mrežama
|
||||
|
||||
10. ZAŠTITA OKOLIŠA:
|
||||
- Održivi sport
|
||||
- Smanjenje ekološkog otiska
|
||||
- Ekološka osviještenost u organizaciji događanja
|
||||
|
||||
TIJELA ZA PRIMJENU KODEKSA:
|
||||
- Etička komisija HOO
|
||||
- Disciplinski sudovi nacionalnih saveza
|
||||
- HASMS za doping pitanja
|
||||
|
||||
POSTUPAK PRIJAVE KRŠENJA:
|
||||
1) Pisana prijava (anonima moguća)
|
||||
2) Postupak Etičke komisije (60 dana)
|
||||
3) Mogućnost žalbe
|
||||
4) Konačna odluka
|
||||
|
||||
SANKCIJE:
|
||||
- Opomena
|
||||
- Javna isprika
|
||||
- Privremena suspenzija (sportska/funkcijska)
|
||||
- Trajno isključenje iz sustava sporta
|
||||
- Materijalna kazna do 50.000 EUR'''
|
||||
},
|
||||
{
|
||||
'title': 'Pravilnik o klupskom licenciranju HNS (UEFA + HNS standardi)',
|
||||
'kratak_opis': 'Klupska licenca za nacionalna i europska natjecanja — financijski, infrastrukturni, sportski kriteriji.',
|
||||
'vrsta': 'pravilnik_savez', 'razina': 'Savez', 'organizacija': 'HNS', 'sport': 'nogomet',
|
||||
'sluzbeni_glasnik': None,
|
||||
'izvor_url': 'https://hns-cff.hr/regulatorni-okvir/',
|
||||
'kljucne_rijeci': ['HNS','UEFA','licenca','klub','financijski','FFP'],
|
||||
'izdano_datum': '2024-01-01',
|
||||
'sadrzaj': '''PRAVILNIK O KLUPSKOM LICENCIRANJU HNS (2024)
|
||||
|
||||
OPĆE ODREDBE
|
||||
Klupsko licenciranje obvezno je za sve klubove koji nastupaju u natjecanjima HNS-a i UEFA-e.
|
||||
|
||||
HNS KATEGORIJE LICENCI:
|
||||
- HNL Pro Licenca: za 1. HNL klubove + UEFA natjecanja
|
||||
- HNL Standard Licenca: za 2. HNL klubove
|
||||
- HNS Regional Licenca: za 3. HNL i niže
|
||||
|
||||
KRITERIJI ZA HNL Pro LICENCU:
|
||||
|
||||
A. SPORTSKI KRITERIJI:
|
||||
- Punokrvni juniorski sustav (U-19, U-17, U-15, U-13, U-11)
|
||||
- Minimalno 80% trenera s UEFA A licencom
|
||||
- Glavni trener UEFA Pro
|
||||
- Liječnička služba (sportski liječnik specialist)
|
||||
- Anti-doping politika
|
||||
|
||||
B. INFRASTRUKTURNI KRITERIJI:
|
||||
- Stadion kapaciteta minimum 5.000
|
||||
- Reflektori 1.500 lux+ za TV prijenos
|
||||
- VIP loža, press soba, mixed zone
|
||||
- Pomoćno igralište za zagrijavanje
|
||||
- VAR oprema (od 2024.)
|
||||
|
||||
C. FINANCIJSKI KRITERIJI (FFP):
|
||||
- Pozitivni operativni rezultat (3-godišnji prosjek)
|
||||
- Plaće igrača < 70% prihoda
|
||||
- Ažurni financijski izvještaji (godišnji + polugodišnji)
|
||||
- Bez nepodmirenih obveza prema igračima/savezima
|
||||
- Bez nepodmirenih poreznih obveza
|
||||
|
||||
D. PRAVNI KRITERIJI:
|
||||
- Registracija u Sudski registar (š.d.d.) ili Registar udruga
|
||||
- Statut usklađen s Zakonom o sportu i HNS pravilima
|
||||
- Predsjednik i upravljačka struktura registrirani u HNS
|
||||
|
||||
E. PRAVA I OBVEZE LICENCIRANIH KLUBOVA:
|
||||
- Pravo nastupa u natjecanjima
|
||||
- Obveza poštovanja UEFA Financial Sustainability Regulations
|
||||
- Obveza objave godišnjih izvještaja u UEFA-i
|
||||
- Obveza pohađanja UEFA workshopova
|
||||
|
||||
POSTUPAK LICENCIRANJA:
|
||||
1) Klub podnosi zahtjev HNS Komisiji za licenciranje (do 31.3.)
|
||||
2) Provjera dokumentacije + on-site inspekcija
|
||||
3) Prva instanca: HNS Komisija za licenciranje
|
||||
4) Žalbeni odbor: HNS Žalbeno povjerenstvo
|
||||
5) Konačna instanca: CAS (Court of Arbitration for Sport)
|
||||
|
||||
SANKCIJE:
|
||||
- Odbijanje licence: nedopušten nastup u natjecanju
|
||||
- Privremena suspenzija licence: za teške financijske probleme
|
||||
- Oduzimanje licence: za prijevaru ili teško kršenje
|
||||
|
||||
PGŽ KLUBOVI S HNL Pro LICENCOM:
|
||||
- HNK Rijeka (Stadion Rujevica, kapacitet 8.136)
|
||||
|
||||
UEFA FINANCIAL SUSTAINABILITY (FFP):
|
||||
- "Squad cost ratio": plaće+amortizacija+agentsko ≤70% prihoda
|
||||
- Limit godišnjih gubitaka: max 60 mil EUR (3-godišnje razdoblje)
|
||||
- Postupne sankcije: globa, transferna ograničenja, oduzimanje bodova, suspenzija europskih natjecanja
|
||||
|
||||
NOVOSTI 2024./2025.:
|
||||
- Strožiji kontrolni mehanizmi za dokazivanje kapitala
|
||||
- Obvezna mjesečna izvješća o tijeku novca
|
||||
- Pojačana suradnja s Ministarstvom financija RH'''
|
||||
},
|
||||
{
|
||||
'title': 'Statut HOO (Hrvatski olimpijski odbor)',
|
||||
'kratak_opis': 'Temeljni akt HOO-a — članstvo nacionalnih saveza, olimpijski pokret, kategorizacija.',
|
||||
'vrsta': 'statut', 'razina': 'HOO', 'organizacija': 'HOO',
|
||||
'sluzbeni_glasnik': None,
|
||||
'izvor_url': 'https://www.hoo.hr/hr-hr/o-hoo-u/dokumenti',
|
||||
'kljucne_rijeci': ['HOO','statut','olimpijski','MOK','nacionalni savez'],
|
||||
'izdano_datum': '2024-01-01',
|
||||
'sadrzaj': '''STATUT HRVATSKOG OLIMPIJSKOG ODBORA
|
||||
|
||||
OPĆE ODREDBE
|
||||
HOO je dragovoljna, samostalna, nepolitička i neprofitna organizacija. Najviša krovna sportska organizacija RH. Priznata od MOK-a (IOC) kao Nacionalni olimpijski odbor (NOC) Hrvatske od 17.1.1992.
|
||||
|
||||
CILJEVI HOO-a:
|
||||
1) Promocija olimpijskih ideala
|
||||
2) Razvoj sporta na svim razinama
|
||||
3) Priprema reprezentacija za OI, ZOI, Mediteranske igre, Sveučilišne igre
|
||||
4) Kategorizacija i podrška vrhunskim sportašima
|
||||
5) Etika i fair play u sportu
|
||||
6) Borba protiv dopinga
|
||||
7) Zaštita olimpijskih simbola
|
||||
|
||||
ČLANOVI HOO-a:
|
||||
- Nacionalni sportski savezi olimpijskih sportova
|
||||
- Nacionalni sportski savezi neolimpijskih sportova s posebnim statusom
|
||||
- Trenutno 80+ punopravnih članica + 10 pridruženih
|
||||
|
||||
UVJETI ČLANSTVA NACIONALNOG SAVEZA:
|
||||
1) Registracija u Registru sportskih organizacija RH
|
||||
2) Najmanje 5 godina kontinuiranog rada
|
||||
3) Provođenje minimum 1 nacionalnog prvenstva godišnje
|
||||
4) Najmanje 30 registriranih klubova-članica
|
||||
5) Pridržavanje WADA Code-a
|
||||
6) Pridržavanje HOO Etičkog kodeksa
|
||||
7) Demokratska struktura (demokratski izabrana tijela)
|
||||
|
||||
TIJELA HOO-a:
|
||||
|
||||
1. SKUPŠTINA HOO:
|
||||
- Vrhovno tijelo
|
||||
- Sastavljena od predstavnika svih saveza-članica
|
||||
- Sastaje se najmanje 1× godišnje
|
||||
- Bira: Predsjednika, Izvršni odbor, Nadzorni odbor, Etičku komisiju
|
||||
|
||||
2. IZVRŠNI ODBOR:
|
||||
- 9-15 članova
|
||||
- Predsjednik HOO-a + dopredsjednici + članovi
|
||||
- Sastaje se mjesečno
|
||||
- Operativno vođenje HOO-a
|
||||
|
||||
3. PREDSJEDNIK HOO-a:
|
||||
- Mandat 4 godine, max 2 mandata
|
||||
- Predstavlja HOO u zemlji i inozemstvu
|
||||
- Trenutno: Zlatko Mateša (predsjednik)
|
||||
|
||||
4. NADZORNI ODBOR:
|
||||
- 3 člana
|
||||
- Kontrola financijskog poslovanja
|
||||
- Godišnji izvještaj Skupštini
|
||||
|
||||
5. ETIČKA KOMISIJA:
|
||||
- Razmatra etička pitanja
|
||||
- Sankcije za kršenje Etičkog kodeksa
|
||||
|
||||
6. KOMISIJA SPORTAŠA:
|
||||
- Predstavlja interese aktivnih sportaša
|
||||
- 4-6 članova izabranih među sportašima
|
||||
|
||||
7. KOMISIJA ZA KATEGORIZACIJU:
|
||||
- Verificira rezultate sportaša
|
||||
- Donosi odluku o kategorizaciji (I-V)
|
||||
|
||||
DEPARTMANI / STRUČNE SLUŽBE HOO-a:
|
||||
- Stručni odjel za sport
|
||||
- Odjel za olimpijsku pripremu
|
||||
- Odjel za međunarodne odnose
|
||||
- Odjel za marketing i sponzorstva
|
||||
- Odjel za pravna pitanja
|
||||
- Odjel za financije
|
||||
|
||||
OLIMPIJSKI SIMBOLI:
|
||||
- HOO ima isključivo pravo korištenja olimpijske oznake i amblema u RH
|
||||
- Komercijalna upotreba olimpijskih simbola moguća uz licencu HOO-a
|
||||
|
||||
VEZE S MOK-om i KONTINENTALNIM:
|
||||
- HOO sudjeluje na MOK Sjednicama
|
||||
- HOO je član Europskih olimpijskih odbora (EOC)
|
||||
- HOO je član ANOC (Asocijacija nacionalnih olimpijskih odbora)
|
||||
- HOO je član Mediterranean Games Committee
|
||||
|
||||
FINANCIRANJE HOO-a:
|
||||
- Državna proračunska sredstva (Hrvatska Vlada)
|
||||
- MOK i EOC donacije/program
|
||||
- Sponzorstva (Hrvatska poštanska banka, Erste banka, Adidas itd.)
|
||||
- Olimpijska solidarnost
|
||||
|
||||
POSEBNE OVLASTI:
|
||||
- Podizanje hrvatske zastave na OI
|
||||
- Imenovanje Šefa misije (Chef de Mission) za OI/ZOI
|
||||
- Suglasnost za održavanje međunarodnih natjecanja u RH
|
||||
- Predlaganje državnih nagrada u sportu
|
||||
|
||||
STATUS U RH:
|
||||
HOO je akreditiran kao samostalna pravna osoba. Ima posebni status definiran Zakonom o sportu (NN 141/22) i Pravilnikom o registraciji nacionalnih sportskih saveza.'''
|
||||
},
|
||||
]
|
||||
|
||||
def main():
|
||||
conn = psycopg2.connect(**DB); conn.autocommit = True
|
||||
cu = conn.cursor()
|
||||
cu.execute("SELECT LOWER(COALESCE(title,'')) FROM pgz_sport.dokumenti")
|
||||
existing = set(r[0] for r in cu.fetchall())
|
||||
|
||||
n_added = 0; n_updated = 0
|
||||
for d in DOCS:
|
||||
# Try fuzzy match first
|
||||
cu.execute("SELECT id FROM pgz_sport.dokumenti WHERE title ILIKE %s LIMIT 1",
|
||||
(f"%{d['title'].split('(')[0].strip()[:30]}%",))
|
||||
row = cu.fetchone()
|
||||
if row:
|
||||
cu.execute("""UPDATE pgz_sport.dokumenti SET
|
||||
sadrzaj=%s, kratak_opis=COALESCE(%s, kratak_opis),
|
||||
izvor_url=COALESCE(izvor_url, %s),
|
||||
sluzbeni_glasnik=COALESCE(sluzbeni_glasnik, %s),
|
||||
kljucne_rijeci=COALESCE(kljucne_rijeci, %s)
|
||||
WHERE id=%s""",
|
||||
(d['sadrzaj'], d['kratak_opis'], d['izvor_url'],
|
||||
d['sluzbeni_glasnik'], d['kljucne_rijeci'], row[0]))
|
||||
n_updated += 1
|
||||
print(f" ✓ Updated #{row[0]}: {d['title'][:55]}")
|
||||
else:
|
||||
cu.execute("""INSERT INTO pgz_sport.dokumenti
|
||||
(title, kratak_opis, sadrzaj, vrsta, razina, organizacija, sport,
|
||||
sluzbeni_glasnik, izvor_url, kljucne_rijeci, izdano_datum, aktivan)
|
||||
VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,true)""",
|
||||
(d['title'], d['kratak_opis'], d['sadrzaj'], d['vrsta'], d['razina'],
|
||||
d['organizacija'], d.get('sport'), d['sluzbeni_glasnik'],
|
||||
d['izvor_url'], d['kljucne_rijeci'], d['izdano_datum']))
|
||||
n_added += 1
|
||||
print(f" + Added: {d['title'][:55]}")
|
||||
|
||||
print(f"\nAdded: {n_added}, Updated: {n_updated}")
|
||||
cu.execute("""SELECT count(*) FROM pgz_sport.dokumenti
|
||||
WHERE length(COALESCE(sadrzaj,'')) > 1000""")
|
||||
print(f"Dokumenata s full text: {cu.fetchone()[0]}")
|
||||
conn.close()
|
||||
|
||||
main()
|
||||
Reference in New Issue
Block a user