feat: Neubewertung aktualisiert Ketten-Status + Ampel zeigt abgewiegelt

- KI-Score → Ketten-Status: >=0.7 umgesetzt, >=0.4 teilweise, <0.3 versandet/abgewiegelt
- 'abgewiegelt' als eigene Abzweigung in Ampel (rot, nicht mehr auf versandet gemappt)
- Kette 36 (0021/2026): 20% Score → Ampel zeigt rote Abzweigung 'Abgewiegelt'
This commit is contained in:
Dotty Dotter 2026-04-01 22:51:08 +02:00
parent d99706cd64
commit 2d2e335ac3
2 changed files with 26 additions and 4 deletions

View File

@ -272,9 +272,31 @@ def _run_ketten_bewertung(kette_id: int, anmerkung: str, job_id: str):
), ),
) )
# Rebuild chain status # Update chain status based on KI score
from tracker.core.chains import build_single_chain score = result.get("score", 0)
build_single_chain(conn, kette["ursprung_id"]) bewertung = result.get("bewertung", "")
# Map KI bewertung → Ketten-Status
if score >= 0.7:
new_status = "umgesetzt"
begruendung = f"KI-Bewertung: {score*100:.0f}% umgesetzt. {result.get('begruendung', '')}"
elif score >= 0.4:
new_status = "teilweise_umgesetzt"
begruendung = f"KI-Bewertung: {score*100:.0f}% teilweise umgesetzt. {result.get('begruendung', '')}"
elif bewertung == "abgewiegelt" or bewertung == "nebelkerze":
new_status = "abgewiegelt"
begruendung = f"KI-Bewertung: {score*100:.0f}% — {bewertung}. {result.get('begruendung', '')}"
elif score < 0.3:
new_status = "versandet"
begruendung = f"KI-Bewertung: {score*100:.0f}%. {result.get('begruendung', '')}"
else:
new_status = kette["status"] # Keep current
begruendung = kette["begruendung"]
conn.execute(
"UPDATE ketten SET status = ?, begruendung = ? WHERE id = ?",
(new_status, begruendung, kette_id),
)
conn.commit() conn.commit()
conn.close() conn.close()

View File

@ -33,6 +33,7 @@ STRANG_ZUSTAENDE: dict[str, list[dict]] = {
# Endstatus die von der Hauptreihe abzweigen # Endstatus die von der Hauptreihe abzweigen
ABZWEIGUNGEN: dict[str, dict] = { ABZWEIGUNGEN: dict[str, dict] = {
"abgelehnt": {"label": "Abgelehnt", "farbe": "rot"}, "abgelehnt": {"label": "Abgelehnt", "farbe": "rot"},
"abgewiegelt": {"label": "Abgewiegelt", "farbe": "rot"},
"versandet": {"label": "Versandet", "farbe": "rot"}, "versandet": {"label": "Versandet", "farbe": "rot"},
"teilweise_umgesetzt": {"label": "Teilweise umgesetzt", "farbe": "amber"}, "teilweise_umgesetzt": {"label": "Teilweise umgesetzt", "farbe": "amber"},
"verwiesen": {"label": "Verwiesen", "farbe": "gelb"}, "verwiesen": {"label": "Verwiesen", "farbe": "gelb"},
@ -115,7 +116,6 @@ def _normalize_abzweigung_id(status: str) -> str:
"""Normalize status string to ABZWEIGUNGEN key.""" """Normalize status string to ABZWEIGUNGEN key."""
mapping = { mapping = {
"zurückgezogen": "zurueckgezogen", "zurückgezogen": "zurueckgezogen",
"abgewiegelt": "versandet", # Abgewiegelt → same visual as versandet
} }
return mapping.get(status, status) return mapping.get(status, status)