v1.2.1 - Bugfix Silent Logging & Robuste Konfiguration

- Bugfix: Behebt das Problem, bei dem keine Log-Ausgaben im Terminal oder in der Log-Datei erschienen sind.
- Die Skript-Struktur wurde angepasst, um eine robuste `setup_logging`-Funktion zu implementieren, die eine implizite Standard-Konfiguration durch importierte Module erkennt und überschreibt.
- Stellt sicher, dass die benutzerdefinierte Logging-Konfiguration (DEBUG-Level, File-Handler) zuverlässig angewendet wird.
- Das Skript protokolliert nun alle Prozessschritte wie vorgesehen, insbesondere die Analyse der Branchen-Spezifität.
This commit is contained in:
2025-09-18 12:30:57 +00:00
parent 785c9f9c9c
commit eab19f69bf

View File

@@ -1,14 +1,17 @@
# knowledge_base_builder.py
__version__ = "v1.2.0"
__version__ = "v1.2.1"
import logging
import json
import re
import os
import sys
from collections import Counter
import pandas as pd
from google_sheet_handler import GoogleSheetHandler
from helpers import create_log_filename
from config import Config
# --- Konfiguration ---
@@ -54,10 +57,7 @@ BRANCH_GROUP_RULES = {
]
}
# --- NEU: Angepasste und konfigurierbare Schwellenwerte ---
# Ein Department muss mindestens so viele Einträge haben, um eine Branchen-Regel zu bekommen.
MIN_SAMPLES_FOR_BRANCH_RULE = 5
# Wenn >X% der Jobtitel eines Departments in EINER Branchengruppe liegen, gilt es als spezifisch.
BRANCH_SPECIFICITY_THRESHOLD = 0.7
STOP_WORDS = {
@@ -69,9 +69,40 @@ STOP_WORDS = {
'cfo', 'cto', 'coo', 'von', 'of', 'und', 'für', 'der', 'die', 'das', '&'
}
def setup_logging():
"""Konfiguriert das Logging, um sowohl in der Konsole als auch in einer Datei zu loggen."""
log_filename = create_log_filename("knowledge_base_builder")
if not log_filename:
print("KRITISCHER FEHLER: Log-Datei konnte nicht erstellt werden. Logge nur in die Konsole.")
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s', handlers=[logging.StreamHandler()])
return
log_level = logging.DEBUG
root_logger = logging.getLogger()
if root_logger.handlers:
for handler in root_logger.handlers[:]:
root_logger.removeHandler(handler)
logging.basicConfig(
level=log_level,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler(log_filename, encoding='utf-8'),
logging.StreamHandler()
]
)
logging.getLogger("gspread").setLevel(logging.WARNING)
logging.getLogger("oauth2client").setLevel(logging.WARNING)
logging.info(f"Logging erfolgreich initialisiert. Log-Datei: {log_filename}")
def build_knowledge_base():
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
"""
Hauptfunktion zur Erstellung der Wissensbasis.
"""
logger = logging.getLogger(__name__)
logger.info(f"Starte Erstellung der Wissensbasis (Version {__version__})...")
@@ -130,7 +161,6 @@ def build_knowledge_base():
department_branches = branches_by_department.get(department, [])
total_titles_in_dept = len(department_branches)
# Angepasste Logik mit transparentem Logging
if total_titles_in_dept >= MIN_SAMPLES_FOR_BRANCH_RULE:
branch_group_counts = Counter()
for branch_name in department_branches:
@@ -151,7 +181,6 @@ def build_knowledge_base():
else:
logger.debug(f" -> Department '{department}' hat zu wenige Datenpunkte ({total_titles_in_dept} < {MIN_SAMPLES_FOR_BRANCH_RULE}) für eine Branchen-Regel.")
keyword_rules[department] = rule
try:
@@ -166,4 +195,5 @@ def build_knowledge_base():
if __name__ == "__main__":
setup_logging()
build_knowledge_base()