PGŽ Sport Platform — Round 1+2 baseline (sport2.html + API)
This commit is contained in:
@@ -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()
|
||||
Reference in New Issue
Block a user