#!/usr/bin/env python3 """ Repariert kaputte ketten_match Einträge: - begruendung enthält rohes JSON statt Klartext - bewertung ist 'unklar' obwohl Score eindeutig ist Löscht kaputte Einträge → run_ketten_match.sh matched sie erneut mit gefixtem Script. """ import sqlite3 from pathlib import Path DB = Path(__file__).resolve().parent.parent / "data" / "tracker_remote.db" conn = sqlite3.connect(str(DB)) conn.row_factory = sqlite3.Row # Zähle kaputte broken = conn.execute(""" SELECT COUNT(*) as n FROM ki_bewertungen WHERE typ='umsetzung_match' AND begruendung LIKE '{%' """).fetchone()["n"] print(f"Kaputte Einträge: {broken}") if broken > 0: # Lösche alle kaputten → werden vom Runner erneut bewertet conn.execute(""" DELETE FROM ki_bewertungen WHERE typ='umsetzung_match' AND begruendung LIKE '{%' """) # Setze ki_status zurück für betroffene Vorlagen conn.execute(""" UPDATE vorlagen SET ki_status = NULL WHERE id IN ( SELECT vorlage_id FROM ki_bewertungen WHERE typ='umsetzung_match' ) OR (ki_status = 'matched' AND id NOT IN ( SELECT vorlage_id FROM ki_bewertungen WHERE typ='umsetzung_match' )) """) conn.commit() remaining = conn.execute(""" SELECT COUNT(*) as n FROM ki_bewertungen WHERE typ='umsetzung_match' """).fetchone()["n"] print(f"Gelöscht: {broken}") print(f"Verbleibend (intakt): {remaining}") print(f"→ Runner wird {broken} erneut matchen") conn.close()