antragstracker/scripts/repair_ketten_match.py

50 lines
1.5 KiB
Python
Raw Permalink Normal View History

#!/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()