From cd9a2ffc552fcc3346801b6e9012143d8b1b7243 Mon Sep 17 00:00:00 2001 From: Floke Date: Thu, 18 Sep 2025 07:59:31 +0000 Subject: [PATCH] contact_grouping.py aktualisiert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Detailliertere Log-Ausgaben während des gesamten Prozesses für eine bessere Nachvollziehbarkeit. - Loggt die Anzahl der Zeilen direkt nach dem erfolgreichen Laden aus dem Google Sheet. - Fügt explizite Start- und End-Meldungen für die regel-basierte Zuordnung (Stufe 1 & 2) hinzu. - Loggt die genaue Anzahl der 'Undefined'-Fälle, die an die KI zur Klassifizierung gesendet werden. - Gibt eine klare Meldung aus, wenn keine KI-Anfrage nötig ist, weil alle Fälle durch Regeln gelöst wurden. - Verbessert die allgemeine Klarheit der Log-Nachrichten, um die Analyse von Laufzeitverhalten und potenziellen Fehlern zu erleichtern. - Bugfix: Behebt einen kritischen APIError [400] 'Invalid list_value', der beim Zurückschreiben der Daten in das Google Sheet auftrat. - Die Funktion `_find_best_match` gab in manchen Fällen fälschlicherweise eine Liste anstelle eines einzelnen Strings als Department zurück. - Die Rückgabewerte der Funktion wurden korrigiert, um sicherzustellen, dass immer ein String übergeben wird. - Dies stellt die Kompatibilität mit der Google Sheets API wieder her und macht den Schreibvorgang robust. --- contact_grouping.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/contact_grouping.py b/contact_grouping.py index c1b15729..2ca3d6ce 100644 --- a/contact_grouping.py +++ b/contact_grouping.py @@ -96,12 +96,14 @@ class ContactGrouper: top_departments = [dept for dept, score in scores.items() if score == max_score] if len(top_departments) == 1: - winner = top_departments + # KORREKTUR: Hier wurde vorher die ganze Liste zurückgegeben. Jetzt wird das erste Element extrahiert. + winner = top_departments[0] self.logger.debug(f"'{job_title}' -> '{winner}' (Stufe 2: Keyword Match, Score {max_score})") return winner best_priority = float('inf') - winner = top_departments + # KORREKTUR: Fallback-Gewinner ist jetzt ebenfalls ein String, kein Liste. + winner = top_departments[0] for department in top_departments: priority = self.keyword_rules[department].get("priority", 99) if priority < best_priority: