feat: Bewertungs-Log — alle Neubewertungen mit Kontext protokollieren

Neue Tabelle bewertungs_log:
- vorlage_id, kette_id, typ (zusammenfassung/umsetzung)
- anmerkung: Nutzer-Begründung für Neubewertung
- score_vorher/nachher, status_vorher/nachher
- bewertung_vorher/nachher (Textvergleich)
- modell, prompt_version, erstellt_at

Für spätere Auswertung: Wo muss das Modell nachgebessert werden?
This commit is contained in:
Dotty Dotter 2026-04-01 23:35:18 +02:00
parent 726f5c06ad
commit c5939a6873

View File

@ -162,6 +162,12 @@ def _run_zusammenfassung(vorlage_id: int, anmerkung: str, job_id: str):
_jobs[job_id] = {"status": "error", "error": str(result)}
return
# Get previous version for logging
prev = conn.execute(
"SELECT begruendung FROM ki_bewertungen WHERE vorlage_id = ? AND typ = 'zusammenfassung' ORDER BY id DESC LIMIT 1",
(vorlage_id,),
).fetchone()
# Keep old versions, insert new
conn.execute(
"""INSERT INTO ki_bewertungen (vorlage_id, typ, begruendung, anmerkungen, modell, prompt_version, erstellt_at)
@ -171,6 +177,14 @@ def _run_zusammenfassung(vorlage_id: int, anmerkung: str, job_id: str):
)
if result.get("kernforderung"):
conn.execute("UPDATE vorlagen SET thema_kurz = ? WHERE id = ?", (result["kernforderung"][:200], vorlage_id))
# Log
conn.execute(
"""INSERT INTO bewertungs_log (vorlage_id, typ, anmerkung, modell, prompt_version, bewertung_vorher, bewertung_nachher, erstellt_at)
VALUES (?, 'zusammenfassung', ?, 'qwen-plus-latest', 'v2-reeval', ?, ?, ?)""",
(vorlage_id, anmerkung, prev["begruendung"] if prev else None,
result.get("zusammenfassung"), datetime.now().isoformat()),
)
conn.commit()
# Auto-trigger Ketten-Bewertung wenn Vorlage in einer Kette ist
@ -272,6 +286,13 @@ def _run_ketten_bewertung(kette_id: int, anmerkung: str, job_id: str):
),
)
# Get previous scores for logging
prev_ki = conn.execute(
"SELECT score, begruendung FROM ki_bewertungen WHERE vorlage_id = ? AND typ = 'umsetzung_match' ORDER BY id DESC LIMIT 1",
(kette["ursprung_id"],),
).fetchone()
prev_status = kette["status"]
# Update chain status based on KI score
score = result.get("score", 0)
bewertung = result.get("bewertung", "")
@ -297,6 +318,21 @@ def _run_ketten_bewertung(kette_id: int, anmerkung: str, job_id: str):
"UPDATE ketten SET status = ?, begruendung = ? WHERE id = ?",
(new_status, begruendung, kette_id),
)
# Log
conn.execute(
"""INSERT INTO bewertungs_log
(vorlage_id, kette_id, typ, anmerkung, modell, prompt_version,
score_vorher, score_nachher, status_vorher, status_nachher,
bewertung_vorher, bewertung_nachher, erstellt_at)
VALUES (?, ?, 'umsetzung', ?, 'qwen-plus-latest', 'v2-reeval',
?, ?, ?, ?, ?, ?, ?)""",
(kette["ursprung_id"], kette_id, anmerkung,
prev_ki["score"] if prev_ki else None, score,
prev_status, new_status,
prev_ki["begruendung"] if prev_ki else None, result.get("begruendung"),
datetime.now().isoformat()),
)
conn.commit()
conn.close()