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
+50
View File
@@ -0,0 +1,50 @@
#!/usr/bin/env python3
# Sudreg lookup po klubu nazivu za one BEZ OIB
import psycopg2, time, hashlib, json, re
from psycopg2.extras import RealDictCursor
DSN = "host=10.10.0.2 port=6432 dbname=rinet_v3 user=rinet password=R1net2026!SecureDB#v7"
def main():
conn = psycopg2.connect(DSN, cursor_factory=RealDictCursor)
conn.autocommit = True
cur = conn.cursor()
# Klubovi bez OIB sa imenom dovoljnim za search
cur.execute("""
SELECT id, naziv, grad FROM pgz_sport.klubovi
WHERE (oib IS NULL OR length(oib) != 11) AND naziv IS NOT NULL AND length(naziv) > 8
ORDER BY id
""")
klubovi = cur.fetchall()
print(f"Klubovi za Sudreg lookup: {len(klubovi)}")
# Try fuzzy match s civic.sudreg_api_cache koji već imamo
found = 0
for k in klubovi:
# Drop common suffixes
clean = re.sub(r'\b(klub|udruga|sportski|sportsko)\b', '', k['naziv'], flags=re.I).strip()
if len(clean) < 5: continue
# Try direct search civic.sudreg_api_cache
cur.execute("""
SELECT data->>'oib' AS oib, data->>'tvrtka' AS tvrtka, data->>'naziv' AS naziv
FROM civic.sudreg_api_cache
WHERE (data->>'tvrtka' ILIKE %s OR data->>'naziv' ILIKE %s)
AND data->>'oib' IS NOT NULL
LIMIT 3
""", (f'%{clean[:30]}%', f'%{clean[:30]}%'))
cands = cur.fetchall()
if len(cands) == 1 and cands[0]['oib']:
cur.execute("UPDATE pgz_sport.klubovi SET oib=%s WHERE id=%s AND oib IS NULL",
(cands[0]['oib'], k['id']))
found += 1
if found % 20 == 0:
print(f"Found: {found}")
print(f"FINAL: {found} OIB-ova nadeno preko sudreg_api_cache")
cur.close(); conn.close()
if __name__ == "__main__":
main()