bugfix
This commit is contained in:
@@ -1065,9 +1065,9 @@ def load_target_schema(csv_filepath=BRANCH_MAPPING_FILE):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
with open(csv_filepath, "r", encoding="utf-8-sig") as f:
|
with open(csv_filepath, "r", encoding="utf-8-sig") as f:
|
||||||
reader = csv.reader(f)
|
reader = csv.reader(f, delimiter=';') # <<< HINZUGEFÜGT: delimiter=';'
|
||||||
try:
|
try:
|
||||||
header_row = next(reader) # Überspringe Header
|
header_row = next(reader)
|
||||||
logger.debug(f"Ueberspringe Header-Zeile im Schema: {header_row}")
|
logger.debug(f"Ueberspringe Header-Zeile im Schema: {header_row}")
|
||||||
except StopIteration:
|
except StopIteration:
|
||||||
logger.warning(f"Schema-Datei '{csv_filepath}' ist leer oder hat keinen Header.")
|
logger.warning(f"Schema-Datei '{csv_filepath}' ist leer oder hat keinen Header.")
|
||||||
@@ -9564,6 +9564,21 @@ def main():
|
|||||||
# openai_handler = OpenAIHandler()
|
# openai_handler = OpenAIHandler()
|
||||||
# serpapi_handler = SerpAPIHandler()
|
# serpapi_handler = SerpAPIHandler()
|
||||||
|
|
||||||
|
logger.info("===== Spalten-Alignment Check =====")
|
||||||
|
if sheet_handler and sheet_handler.sheet_values and len(sheet_handler.sheet_values) > 0:
|
||||||
|
sheet_headers = sheet_handler.sheet_values[0]
|
||||||
|
logger.info(f"Header aus Google Sheet (erste {len(sheet_headers)} Spalten): {sheet_headers}")
|
||||||
|
|
||||||
|
# Ausgabe der COLUMN_MAP für den Abgleich (gekürzt für Lesbarkeit im Log)
|
||||||
|
logger.info("Aktuelle COLUMN_MAP (Auszug):")
|
||||||
|
for i, (key, value) in enumerate(COLUMN_MAP.items()):
|
||||||
|
if i < 5 or i > len(COLUMN_MAP) - 6 : # Zeige erste 5 und letzte 5
|
||||||
|
logger.info(f" '{key}': {value}")
|
||||||
|
elif i == 5:
|
||||||
|
logger.info(" ...")
|
||||||
|
else:
|
||||||
|
logger.warning("Konnte Header nicht aus Google Sheet laden für Alignment Check.")
|
||||||
|
logger.info("===================================")
|
||||||
|
|
||||||
# Initialisiere DataProcessor Instanz (Block 15) mit Handlern
|
# Initialisiere DataProcessor Instanz (Block 15) mit Handlern
|
||||||
# Uebergeben Sie alle benoetigten Handler an den DataProcessor.
|
# Uebergeben Sie alle benoetigten Handler an den DataProcessor.
|
||||||
@@ -9658,6 +9673,60 @@ def main():
|
|||||||
print(f"Ein Fehler ist bei der Modus-Eingabe aufgetreten ({e}). Bitte pruefen Sie die Logdatei.")
|
print(f"Ein Fehler ist bei der Modus-Eingabe aufgetreten ({e}). Bitte pruefen Sie die Logdatei.")
|
||||||
return # Beende das Skript bei unerwartetem Fehler
|
return # Beende das Skript bei unerwartetem Fehler
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# === NEUER BLOCK: Interaktive Limit-Abfrage ===
|
||||||
|
# ==============================================================================
|
||||||
|
limit_arg_cli = args.limit # ursprüngliches Limit vom CLI Argument
|
||||||
|
final_limit_to_use = limit_arg_cli # Standardmäßig das CLI-Limit verwenden
|
||||||
|
|
||||||
|
# Wenn kein Limit über CLI gesetzt wurde UND der Modus nicht einer der ist,
|
||||||
|
# bei denen ein Zeilenlimit typischerweise keinen Sinn macht.
|
||||||
|
# (Für 'alignment' und 'train_technician_model' ist ein Zeilen-Durchlauf-Limit meist nicht relevant)
|
||||||
|
# 'check_urls' und andere Batch-Modi können aber von einem Limit profitieren.
|
||||||
|
skippable_limit_modes = ['alignment', 'train_technician_model']
|
||||||
|
|
||||||
|
if final_limit_to_use is None and selected_mode not in skippable_limit_modes:
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
limit_input_str = input(f"Maximale Anzahl zu verarbeitender Zeilen für Modus '{selected_mode}' (Enter für Unbegrenzt, aktuell: Unbegrenzt): ").strip()
|
||||||
|
if not limit_input_str: # Benutzer drückt Enter
|
||||||
|
final_limit_to_use = None
|
||||||
|
logger.info("Kein Limit für Zeilenverarbeitung gesetzt (interaktiv).")
|
||||||
|
break
|
||||||
|
|
||||||
|
# Versuche, in Integer umzuwandeln
|
||||||
|
temp_limit = int(limit_input_str)
|
||||||
|
|
||||||
|
if temp_limit <= 0:
|
||||||
|
logger.warning(f"Ungültiges Limit '{temp_limit}' (<=0) eingegeben, wird als Unbegrenzt behandelt.")
|
||||||
|
final_limit_to_use = None
|
||||||
|
else:
|
||||||
|
final_limit_to_use = temp_limit
|
||||||
|
logger.info(f"Limit für Zeilenverarbeitung (interaktiv gesetzt): {final_limit_to_use}")
|
||||||
|
break # Gültige Eingabe oder Entscheidung für "Unbegrenzt"
|
||||||
|
except ValueError:
|
||||||
|
print("Ungültige Eingabe. Bitte eine ganze Zahl eingeben oder Enter für Unbegrenzt.")
|
||||||
|
except EOFError:
|
||||||
|
logger.warning("Interaktive Limit-Eingabe abgebrochen. Nutze kein Limit (oder CLI-Vorgabe, falls vorhanden).")
|
||||||
|
# final_limit_to_use behält den Wert von limit_arg_cli (also None, wenn hierher gekommen)
|
||||||
|
break
|
||||||
|
except Exception as e_limit_input:
|
||||||
|
logger.error(f"Unerwarteter Fehler bei interaktiver Limit-Eingabe: {e_limit_input}")
|
||||||
|
logger.debug(traceback.format_exc())
|
||||||
|
print("Ein Fehler ist bei der Limit-Eingabe aufgetreten. Nutze kein Limit.")
|
||||||
|
final_limit_to_use = None
|
||||||
|
break
|
||||||
|
elif final_limit_to_use is not None: # Wenn ein Limit via CLI gesetzt wurde
|
||||||
|
logger.info(f"Verwende Limit aus CLI-Argument: {final_limit_to_use}")
|
||||||
|
elif selected_mode in skippable_limit_modes and final_limit_to_use is None:
|
||||||
|
logger.info(f"Modus '{selected_mode}' benötigt typischerweise kein Zeilenlimit. Limit-Abfrage übersprungen.")
|
||||||
|
|
||||||
|
|
||||||
|
# Die Variable `final_limit_to_use` enthält nun das anzuwendende Limit (entweder von CLI, interaktiv oder None)
|
||||||
|
# ==============================================================================
|
||||||
|
# === ENDE NEUER BLOCK ===
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
|
||||||
# --- Ausfuehrung des gewaehlten Modus ---
|
# --- Ausfuehrung des gewaehlten Modus ---
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user