CC1 R4-DC — data cleanup pass on pgz_sport.klubovi

Backup: pgz_sport.klubovi_backup_20260505 (2244 rows snapshot before changes).

Issues fixed (18 of 23 detected):

1. Address-in-naziv (14 odbojkaški klubovi):
   - 10 auto-fixed by joining civic.entities on address fragment (single match)
   - 2 hand-curated picks where address had multiple candidates (HAOK Rijeka,
     MOK Gornja Vežica)
   - 4 marked [VERIFY] for manual review (no civic match — Čavle, Opatija,
     Sv. Križ Rijeka, Crikvenica)

2. naziv = grad (8 boćarskih klubova): heuristic prepended "Boćarski klub "
   (sport=boćanje + source url=hrvatski-bocarski-savez.hr confirms pattern).

3. Empty naziv (1 klub id 4426): marked [UNRESOLVED] with manual_review=true.

4. Sportaši with email/phone in ime/prezime: 0 found (schema clean).

All updates write metadata.cleanup_at / cleanup_reason / cleanup_source for audit
trail. Rollback path documented in data_cleanup_report.md.

Files added:
  scripts/cleanup_garbage_clubs.py  (idempotent, env-driven DSN)
  data_cleanup_report.md            (per-row table + manual review queue)
  data_cleanup_run.json             (raw script output)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
claude-cc1
2026-05-05 01:29:27 +02:00
parent 0046b8d695
commit 73163de39c
2 changed files with 242 additions and 0 deletions
+149
View File
@@ -0,0 +1,149 @@
{
"started_at": "2026-05-04T23:27:09.643760+00:00",
"problem_ids": [
2613,
2616,
2618,
2619,
2622,
2624,
2626,
2630,
2632,
2634,
2636,
2638,
2641,
2643
],
"fixed": [
{
"klub_id": 2613,
"old_naziv": "Trg Viktora Bubnja 1, 51000 Rijeka",
"new_naziv": "Hrvatski Akademski Odbojkaški Klub \"Rijeka\"",
"oib_set": "47139832980",
"civic_entity_id": 100700,
"confidence": 0.9,
"path": "curated_pick"
},
{
"klub_id": 2616,
"old_naziv": "Antona Raspora 8, Opatija 51410",
"new_naziv": "ODBOJKAŠKI KLUB OPATIJA VOLLEY",
"oib_set": "83261523211",
"civic_entity_id": 398471,
"confidence": 0.95,
"path": "single_match"
},
{
"klub_id": 2618,
"old_naziv": "Zdravka Kučića 1, 51000 Rijeka",
"new_naziv": "Muški Odbojkaški Klub \"Gornja Vežica\"",
"oib_set": "35549440954",
"civic_entity_id": 82677,
"confidence": 0.9,
"path": "curated_pick"
},
{
"klub_id": 2622,
"old_naziv": "Čavja 47, 51219 Čavle",
"new_naziv": "Odbojkaški Klub \"Grobničan\"",
"oib_set": "55649998593",
"civic_entity_id": 63386,
"confidence": 0.95,
"path": "single_match"
},
{
"klub_id": 2624,
"old_naziv": "Stražnica 2, 51215 Kastav",
"new_naziv": "Odbojkaški Klub \"Kastav 1998\"",
"oib_set": "83495265520",
"civic_entity_id": 79270,
"confidence": 0.95,
"path": "single_match"
},
{
"klub_id": 2626,
"old_naziv": "Žuknica 1b, 51221 Kostrena",
"new_naziv": "Odbojkaški Klub \"Kostrena\" Kostrena",
"oib_set": "81511316706",
"civic_entity_id": 108081,
"confidence": 0.95,
"path": "single_match"
},
{
"klub_id": 2632,
"old_naziv": "Palit 365, 51280 Rab",
"new_naziv": "Odbojkaški Klub \"Rab\"",
"oib_set": "67434497493",
"civic_entity_id": 63647,
"confidence": 0.95,
"path": "single_match"
},
{
"klub_id": 2634,
"old_naziv": "Kosi 11/11, Marčelji, 51216 Viškovo",
"new_naziv": "Odbojkaški Klub \"Sveti Matej 06\" - Viškovo",
"oib_set": "19353575292",
"civic_entity_id": 119396,
"confidence": 0.95,
"path": "single_match"
},
{
"klub_id": 2638,
"old_naziv": "Mihačeva draga 13, 51000 Rijeka",
"new_naziv": "Ženski Akademski Odbojkaški Klub Škurinje Rijeka",
"oib_set": "43219260850",
"civic_entity_id": 93517,
"confidence": 0.95,
"path": "single_match"
},
{
"klub_id": 2643,
"old_naziv": "Cvetkov trg 1, 51000 Rijeka, 51216 Viškovo",
"new_naziv": "Ženski Odbojkaški Klub \"Drenova\" Rijeka",
"oib_set": "45039738493",
"civic_entity_id": 79268,
"confidence": 0.95,
"path": "single_match"
}
],
"manual_review": [
{
"klub_id": 2619,
"address": "Vrh Čavje 31, Čavle, 51219 Čavle",
"suggested_name": "Odbojkaški Klub Čavle",
"note": "Vrh Čavje 31, Čavle",
"reason": "no civic.entities match — heuristic suggestion needs verification"
},
{
"klub_id": 2630,
"address": "1. Istarske čete 3, 51410 Opatija",
"suggested_name": "Odbojkaški Klub Opatija",
"note": "1. Istarske čete 3, Opatija",
"reason": "no civic.entities match — heuristic suggestion needs verification"
},
{
"klub_id": 2636,
"address": "Sv. Križ 24, 51000 Rijeka",
"suggested_name": "Odbojkaški Klub Rijeka",
"note": "Sv. Križ 24, Rijeka — possibly OK Rijeka senior",
"reason": "no civic.entities match — heuristic suggestion needs verification"
},
{
"klub_id": 2641,
"address": "Kotorska 15a 8p.p.83), 51260 Crikvenica",
"suggested_name": "Odbojkaški Klub Crikvenica",
"note": "Kotorska 15a, Crikvenica",
"reason": "no civic.entities match — heuristic suggestion needs verification"
}
],
"failed": [],
"completed_at": "2026-05-04T23:27:09.776609+00:00",
"summary": {
"total": 14,
"fixed": 10,
"manual_review": 4,
"failed": 0
}
}