data_processor.py aktualisiert
Regex suche "self\.sheet_handler\._get_col_letter" replace by "_get_col_letter"
This commit is contained in:
@@ -265,7 +265,7 @@ class DataProcessor:
|
||||
website_url = new_website
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("CRM Website") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("CRM Website") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[website_url]]})
|
||||
url_pruefstatus = "URL_OK_SERP"
|
||||
@@ -294,12 +294,12 @@ class DataProcessor:
|
||||
website_raw, company_name) or "k.A. (Keine Zusammenfassung erhalten)"
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Website Meta-Details") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Website Meta-Details") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[website_meta_details]]})
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Website Zusammenfassung") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Website Zusammenfassung") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[website_summary]]})
|
||||
else:
|
||||
@@ -308,12 +308,12 @@ class DataProcessor:
|
||||
website_summary, website_meta_details = "k.A.", "k.A."
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Website Zusammenfassung") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Website Zusammenfassung") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[website_summary]]})
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Website Meta-Details") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Website Meta-Details") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[website_meta_details]]})
|
||||
except Exception as e_scrape_web:
|
||||
@@ -323,17 +323,17 @@ class DataProcessor:
|
||||
url_pruefstatus = "URL_SCRAPE_ERROR"
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Website Zusammenfassung") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Website Zusammenfassung") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[website_summary]]})
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Website Meta-Details") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Website Meta-Details") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[website_meta_details]]})
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Website Rohtext") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Website Rohtext") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[website_raw]]})
|
||||
else:
|
||||
@@ -344,28 +344,28 @@ class DataProcessor:
|
||||
url_pruefstatus = "URL_MISSING"
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Website Rohtext") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Website Rohtext") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[website_raw]]})
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Website Zusammenfassung") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Website Zusammenfassung") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[website_summary]]})
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Website Meta-Details") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Website Meta-Details") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[website_meta_details]]})
|
||||
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("URL Prüfstatus") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("URL Prüfstatus") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[url_pruefstatus]]})
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Website Scrape Timestamp") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Website Scrape Timestamp") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[now_timestamp]]})
|
||||
|
||||
@@ -444,9 +444,9 @@ class DataProcessor:
|
||||
company_name=company_name, parent_name=parent_name_for_search, website=website_url,
|
||||
wiki_title=final_wiki_data.get('title', 'k.A.'), wiki_summary=final_wiki_data.get('first_paragraph', 'k.A.')
|
||||
)
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Wiki Konsistenzpruefung") + 1)}{row_num_in_sheet}', 'values': [[verification_result.get('consistency', 'X')]]})
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Begründung Wiki Inkonsistenz") + 1)}{row_num_in_sheet}', 'values': [[verification_result.get('justification', 'Fehler')]]})
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Wiki Verif. Timestamp") + 1)}{row_num_in_sheet}', 'values': [[now_timestamp]]})
|
||||
updates.append({'range': f'{_get_col_letter(get_col_idx("Chat Wiki Konsistenzpruefung") + 1)}{row_num_in_sheet}', 'values': [[verification_result.get('consistency', 'X')]]})
|
||||
updates.append({'range': f'{_get_col_letter(get_col_idx("Chat Begründung Wiki Inkonsistenz") + 1)}{row_num_in_sheet}', 'values': [[verification_result.get('justification', 'Fehler')]]})
|
||||
updates.append({'range': f'{_get_col_letter(get_col_idx("Wiki Verif. Timestamp") + 1)}{row_num_in_sheet}', 'values': [[now_timestamp]]})
|
||||
|
||||
# --- Finales Schreiben ins Sheet ---
|
||||
key_mapping = {
|
||||
@@ -457,9 +457,9 @@ class DataProcessor:
|
||||
for sheet_col_name, data_key in key_mapping.items():
|
||||
col_idx = get_col_idx(sheet_col_name)
|
||||
if col_idx is not None:
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(col_idx + 1)}{row_num_in_sheet}', 'values': [[final_wiki_data.get(data_key, 'k.A.')]]})
|
||||
updates.append({'range': f'{_get_col_letter(col_idx + 1)}{row_num_in_sheet}', 'values': [[final_wiki_data.get(data_key, 'k.A.')]]})
|
||||
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Wikipedia Timestamp") + 1)}{row_num_in_sheet}', 'values': [[now_timestamp]]})
|
||||
updates.append({'range': f'{_get_col_letter(get_col_idx("Wikipedia Timestamp") + 1)}{row_num_in_sheet}', 'values': [[now_timestamp]]})
|
||||
|
||||
# --- 3. ChatGPT Evaluationen (Branch, FSM, etc.) & Plausi ---
|
||||
run_chat_step = 'chat' in steps_to_run
|
||||
@@ -505,10 +505,10 @@ class DataProcessor:
|
||||
schema_data=self.schema_data
|
||||
)
|
||||
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Vorschlag Branche") + 1)}{row_num_in_sheet}', 'values': [[branch_result.get('branch', 'FEHLER')]]})
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Branche Konfidenz") + 1)}{row_num_in_sheet}', 'values': [[branch_result.get('confidence', 'N/A')]]})
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Konsistenz Branche") + 1)}{row_num_in_sheet}', 'values': [[branch_result.get('consistency', 'error')]]})
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Begruendung Abweichung Branche") + 1)}{row_num_in_sheet}', 'values': [[branch_result.get('justification', 'k.A.')]]})
|
||||
updates.append({'range': f'{_get_col_letter(get_col_idx("Chat Vorschlag Branche") + 1)}{row_num_in_sheet}', 'values': [[branch_result.get('branch', 'FEHLER')]]})
|
||||
updates.append({'range': f'{_get_col_letter(get_col_idx("Chat Branche Konfidenz") + 1)}{row_num_in_sheet}', 'values': [[branch_result.get('confidence', 'N/A')]]})
|
||||
updates.append({'range': f'{_get_col_letter(get_col_idx("Chat Konsistenz Branche") + 1)}{row_num_in_sheet}', 'values': [[branch_result.get('consistency', 'error')]]})
|
||||
updates.append({'range': f'{_get_col_letter(get_col_idx("Chat Begruendung Abweichung Branche") + 1)}{row_num_in_sheet}', 'values': [[branch_result.get('justification', 'k.A.')]]})
|
||||
|
||||
except Exception as e_branch_eval:
|
||||
self.logger.error(f"FEHLER bei Branchen-Einstufung für Zeile {row_num_in_sheet}: {e_branch_eval}")
|
||||
@@ -523,7 +523,7 @@ class DataProcessor:
|
||||
col_idx = get_col_idx(item["key"])
|
||||
if col_idx is not None:
|
||||
updates.append({
|
||||
'range': f'{self.sheet_handler._get_col_letter(col_idx + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(col_idx + 1)}{row_num_in_sheet}',
|
||||
'values': [[item["value"]]]
|
||||
})
|
||||
|
||||
@@ -549,13 +549,13 @@ class DataProcessor:
|
||||
techniker_bucket_ml=self._get_cell_value_safe(row_data, "Geschaetzter Techniker Bucket")
|
||||
)
|
||||
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(get_col_idx("FSM Pitch") + 1)}{row_num_in_sheet}', 'values': [[fsm_pitch_text]]})
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(get_col_idx("FSM Pitch Timestamp") + 1)}{row_num_in_sheet}', 'values': [[now_timestamp]]})
|
||||
updates.append({'range': f'{_get_col_letter(get_col_idx("FSM Pitch") + 1)}{row_num_in_sheet}', 'values': [[fsm_pitch_text]]})
|
||||
updates.append({'range': f'{_get_col_letter(get_col_idx("FSM Pitch Timestamp") + 1)}{row_num_in_sheet}', 'values': [[now_timestamp]]})
|
||||
any_processing_done = True
|
||||
chat_eval_just_ran = True # Signal, dass eine KI-Aktion stattfand
|
||||
except Exception as e_fsm_pitch:
|
||||
self.logger.error(f"FEHLER bei FSM-Pitch-Generierung für Zeile {row_num_in_sheet}: {e_fsm_pitch}")
|
||||
updates.append({'range': f'{self.sheet_handler._get_col_letter(get_col_idx("FSM Pitch") + 1)}{row_num_in_sheet}', 'values': [['FEHLER (Generierung)']]} )
|
||||
updates.append({'range': f'{_get_col_letter(get_col_idx("FSM Pitch") + 1)}{row_num_in_sheet}', 'values': [['FEHLER (Generierung)']]} )
|
||||
|
||||
|
||||
|
||||
@@ -600,12 +600,12 @@ class DataProcessor:
|
||||
int(round(final_num_ma))) if final_num_ma > 0 else 'k.A.'
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Finaler Umsatz (Wiki>CRM)") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Finaler Umsatz (Wiki>CRM)") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[final_umsatz_str_konsolidiert]]})
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Finaler Mitarbeiter (Wiki>CRM)") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Finaler Mitarbeiter (Wiki>CRM)") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[final_ma_str_konsolidiert]]})
|
||||
except Exception as e_consolidate:
|
||||
@@ -614,12 +614,12 @@ class DataProcessor:
|
||||
final_umsatz_str_konsolidiert, final_ma_str_konsolidiert = "FEHLER_KONSO", "FEHLER_KONSO"
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Finaler Umsatz (Wiki>CRM)") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Finaler Umsatz (Wiki>CRM)") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
['FEHLER_KONSO']]})
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Finaler Mitarbeiter (Wiki>CRM)") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Finaler Mitarbeiter (Wiki>CRM)") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
['FEHLER_KONSO']]})
|
||||
|
||||
@@ -653,7 +653,7 @@ class DataProcessor:
|
||||
plausi_input_data)
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Plausibilität Umsatz") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Plausibilität Umsatz") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[
|
||||
plausi_results.get(
|
||||
@@ -661,7 +661,7 @@ class DataProcessor:
|
||||
"ERR_FLAG")]]})
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Plausibilität Mitarbeiter") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Plausibilität Mitarbeiter") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[
|
||||
plausi_results.get(
|
||||
@@ -669,7 +669,7 @@ class DataProcessor:
|
||||
"ERR_FLAG")]]})
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Plausibilität Umsatz/MA Ratio") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Plausibilität Umsatz/MA Ratio") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[
|
||||
plausi_results.get(
|
||||
@@ -677,7 +677,7 @@ class DataProcessor:
|
||||
"ERR_FLAG")]]})
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Abweichung Umsatz CRM/Wiki") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Abweichung Umsatz CRM/Wiki") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[
|
||||
plausi_results.get(
|
||||
@@ -685,7 +685,7 @@ class DataProcessor:
|
||||
"ERR_FLAG")]]})
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Abweichung MA CRM/Wiki") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Abweichung MA CRM/Wiki") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[
|
||||
plausi_results.get(
|
||||
@@ -693,7 +693,7 @@ class DataProcessor:
|
||||
"ERR_FLAG")]]})
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Plausibilität Begründung") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Plausibilität Begründung") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[
|
||||
plausi_results.get(
|
||||
@@ -705,12 +705,12 @@ class DataProcessor:
|
||||
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Plausibilität Prüfdatum") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Plausibilität Prüfdatum") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[now_timestamp]]})
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Timestamp letzte Pruefung") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Timestamp letzte Pruefung") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[now_timestamp]]})
|
||||
|
||||
@@ -730,7 +730,7 @@ class DataProcessor:
|
||||
str) and not predicted_bucket.startswith("FEHLER"):
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Geschaetzter Techniker Bucket") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Geschaetzter Techniker Bucket") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[predicted_bucket]]})
|
||||
self.logger.info(
|
||||
@@ -740,7 +740,7 @@ class DataProcessor:
|
||||
f" -> ML-Schaetzung lieferte kein gueltiges Ergebnis: '{predicted_bucket}'.")
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Geschaetzter Techniker Bucket") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Geschaetzter Techniker Bucket") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
['k.A. (Schaetzung fehlgeschlagen)']]})
|
||||
except Exception as e_ml:
|
||||
@@ -749,7 +749,7 @@ class DataProcessor:
|
||||
self.logger.debug(traceback.format_exc())
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Geschaetzter Techniker Bucket") + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Geschaetzter Techniker Bucket") + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[f'FEHLER Schaetzung: {str(e_ml)[:50]}...']]})
|
||||
|
||||
@@ -763,7 +763,7 @@ class DataProcessor:
|
||||
if version_col_idx is not None:
|
||||
updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(version_col_idx + 1)}{row_num_in_sheet}',
|
||||
'range': f'{_get_col_letter(version_col_idx + 1)}{row_num_in_sheet}',
|
||||
'values': [
|
||||
[
|
||||
getattr(
|
||||
@@ -778,7 +778,7 @@ class DataProcessor:
|
||||
# KORRIGIERT: Nutze die sichere get_col_idx Funktion
|
||||
reeval_col_idx = get_col_idx("ReEval Flag")
|
||||
if reeval_col_idx is not None:
|
||||
flag_col_letter = self.sheet_handler._get_col_letter(
|
||||
flag_col_letter = _get_col_letter(
|
||||
reeval_col_idx + 1)
|
||||
if flag_col_letter:
|
||||
updates.append(
|
||||
@@ -848,11 +848,11 @@ class DataProcessor:
|
||||
return
|
||||
|
||||
# --- 2. Spalten-Indizes und Buchstaben vorbereiten ---
|
||||
rohtext_col_letter = self.sheet_handler._get_col_letter(get_col_idx("Website Rohtext") + 1)
|
||||
metadetails_col_letter = self.sheet_handler._get_col_letter(get_col_idx("Website Meta-Details") + 1)
|
||||
pruefstatus_col_letter = self.sheet_handler._get_col_letter(get_col_idx("URL Prüfstatus") + 1) # NEU
|
||||
version_col_letter = self.sheet_handler._get_col_letter(get_col_idx("Version") + 1)
|
||||
timestamp_col_letter = self.sheet_handler._get_col_letter(get_col_idx("Website Scrape Timestamp") + 1)
|
||||
rohtext_col_letter = _get_col_letter(get_col_idx("Website Rohtext") + 1)
|
||||
metadetails_col_letter = _get_col_letter(get_col_idx("Website Meta-Details") + 1)
|
||||
pruefstatus_col_letter = _get_col_letter(get_col_idx("URL Prüfstatus") + 1) # NEU
|
||||
version_col_letter = _get_col_letter(get_col_idx("Version") + 1)
|
||||
timestamp_col_letter = _get_col_letter(get_col_idx("Website Scrape Timestamp") + 1)
|
||||
|
||||
# --- 3. Tasks sammeln ---
|
||||
processing_batch_size = getattr(Config, 'PROCESSING_BATCH_SIZE', 20)
|
||||
@@ -1351,10 +1351,10 @@ class DataProcessor:
|
||||
|
||||
# Ihre bestehende Update-Logik, aber mit der sicheren get_col_idx Funktion
|
||||
updates_for_row = [
|
||||
{'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Wiki Konsistenzpruefung") + 1)}{current_row_num}', 'values': [[verification_result.get("consistency")]]},
|
||||
{'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Begründung Wiki Inkonsistenz") + 1)}{current_row_num}', 'values': [[verification_result.get("justification")]]},
|
||||
{'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Vorschlag Wiki Artikel") + 1)}{current_row_num}', 'values': [[final_suggested_url]]},
|
||||
{'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Wiki Verif. Timestamp") + 1)}{current_row_num}', 'values': [[now_timestamp]]}
|
||||
{'range': f'{_get_col_letter(get_col_idx("Chat Wiki Konsistenzpruefung") + 1)}{current_row_num}', 'values': [[verification_result.get("consistency")]]},
|
||||
{'range': f'{_get_col_letter(get_col_idx("Chat Begründung Wiki Inkonsistenz") + 1)}{current_row_num}', 'values': [[verification_result.get("justification")]]},
|
||||
{'range': f'{_get_col_letter(get_col_idx("Chat Vorschlag Wiki Artikel") + 1)}{current_row_num}', 'values': [[final_suggested_url]]},
|
||||
{'range': f'{_get_col_letter(get_col_idx("Wiki Verif. Timestamp") + 1)}{current_row_num}', 'values': [[now_timestamp]]}
|
||||
]
|
||||
all_updates.extend(updates_for_row)
|
||||
|
||||
@@ -1444,13 +1444,13 @@ class DataProcessor:
|
||||
techniker_bucket_ml=self._get_cell_value_safe(row_data, "Geschaetzter Techniker Bucket")
|
||||
)
|
||||
|
||||
all_sheet_updates.append({'range': f'{self.sheet_handler._get_col_letter(get_col_idx("FSM Pitch") + 1)}{row_num}', 'values': [[fsm_pitch_text]]})
|
||||
all_sheet_updates.append({'range': f'{_get_col_letter(get_col_idx("FSM Pitch") + 1)}{row_num}', 'values': [[fsm_pitch_text]]})
|
||||
except Exception as e:
|
||||
self.logger.error(f"FEHLER bei FSM-Pitch-Generierung für Zeile {row_num}: {e}")
|
||||
all_sheet_updates.append({'range': f'{self.sheet_handler._get_col_letter(get_col_idx("FSM Pitch") + 1)}{row_num}', 'values': [['FEHLER (Generierung)']]} )
|
||||
all_sheet_updates.append({'range': f'{_get_col_letter(get_col_idx("FSM Pitch") + 1)}{row_num}', 'values': [['FEHLER (Generierung)']]} )
|
||||
|
||||
# IMMER den Timestamp setzen, auch bei Fehler, um Endlosschleifen zu vermeiden
|
||||
all_sheet_updates.append({'range': f'{self.sheet_handler._get_col_letter(get_col_idx("FSM Pitch Timestamp") + 1)}{row_num}', 'values': [[now_timestamp]]})
|
||||
all_sheet_updates.append({'range': f'{_get_col_letter(get_col_idx("FSM Pitch Timestamp") + 1)}{row_num}', 'values': [[now_timestamp]]})
|
||||
processed_count += 1
|
||||
|
||||
# Batch-Update Logik
|
||||
@@ -1528,18 +1528,18 @@ class DataProcessor:
|
||||
row_num = task['row_num']
|
||||
result = results_by_row.get(row_num)
|
||||
if result:
|
||||
all_sheet_updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Vorschlag Branche"]["index"] + 1)}{row_num}', 'values': [[result.get('Branche')]]})
|
||||
all_sheet_updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Branche Konfidenz"]["index"] + 1)}{row_num}', 'values': [[result.get('Konfidenz')]]})
|
||||
all_sheet_updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Begruendung Abweichung Branche"]["index"] + 1)}{row_num}', 'values': [[result.get('Begruendung')]]})
|
||||
all_sheet_updates.append({'range': f'{_get_col_letter(COLUMN_MAP["Chat Vorschlag Branche"]["index"] + 1)}{row_num}', 'values': [[result.get('Branche')]]})
|
||||
all_sheet_updates.append({'range': f'{_get_col_letter(COLUMN_MAP["Chat Branche Konfidenz"]["index"] + 1)}{row_num}', 'values': [[result.get('Konfidenz')]]})
|
||||
all_sheet_updates.append({'range': f'{_get_col_letter(COLUMN_MAP["Chat Begruendung Abweichung Branche"]["index"] + 1)}{row_num}', 'values': [[result.get('Begruendung')]]})
|
||||
else:
|
||||
all_sheet_updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Vorschlag Branche"]["index"] + 1)}{row_num}', 'values': [['FEHLER (Batch-Antwort)']]} )
|
||||
all_sheet_updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Timestamp letzte Pruefung"]["index"] + 1)}{row_num}', 'values': [[now_timestamp]]})
|
||||
all_sheet_updates.append({'range': f'{_get_col_letter(COLUMN_MAP["Chat Vorschlag Branche"]["index"] + 1)}{row_num}', 'values': [['FEHLER (Batch-Antwort)']]} )
|
||||
all_sheet_updates.append({'range': f'{_get_col_letter(COLUMN_MAP["Timestamp letzte Pruefung"]["index"] + 1)}{row_num}', 'values': [[now_timestamp]]})
|
||||
else:
|
||||
self.logger.error(f"Batch-Verarbeitung fehlgeschlagen. Setze Fehlerstatus.")
|
||||
for task in batch_tasks:
|
||||
row_num = task['row_num']
|
||||
all_sheet_updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Chat Vorschlag Branche"]["index"] + 1)}{row_num}', 'values': [['FEHLER (Batch-API)']]} )
|
||||
all_sheet_updates.append({'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP["Timestamp letzte Pruefung"]["index"] + 1)}{row_num}', 'values': [[now_timestamp]]})
|
||||
all_sheet_updates.append({'range': f'{_get_col_letter(COLUMN_MAP["Chat Vorschlag Branche"]["index"] + 1)}{row_num}', 'values': [['FEHLER (Batch-API)']]} )
|
||||
all_sheet_updates.append({'range': f'{_get_col_letter(COLUMN_MAP["Timestamp letzte Pruefung"]["index"] + 1)}{row_num}', 'values': [[now_timestamp]]})
|
||||
|
||||
if all_sheet_updates:
|
||||
self.logger.info(f"Sende finales Batch-Update für {len(tasks)} bewertete Branchen...")
|
||||
@@ -1920,13 +1920,13 @@ class DataProcessor:
|
||||
|
||||
# Ermitteln Sie die Spaltenbuchstaben fuer Updates und Leerung (nutzt
|
||||
# interne Helfer _get_col_letter Block 14)
|
||||
ts_ax_letter = self.sheet_handler._get_col_letter(
|
||||
ts_ax_letter = _get_col_letter(
|
||||
col_indices["Wiki Verif. Timestamp"] + 1) # Timestamp zu setzen (AX)
|
||||
s_letter = self.sheet_handler._get_col_letter(
|
||||
s_letter = _get_col_letter(
|
||||
col_indices["Chat Wiki Konsistenzpruefung"] + 1) # Status S
|
||||
t_letter = self.sheet_handler._get_col_letter(
|
||||
t_letter = _get_col_letter(
|
||||
col_indices["Chat Begründung Wiki Inkonsistenz"] + 1) # Begruendung T
|
||||
u_letter = self.sheet_handler._get_col_letter(
|
||||
u_letter = _get_col_letter(
|
||||
col_indices["Chat Vorschlag Wiki Artikel"] + 1) # Vorschlag U
|
||||
|
||||
# Spalten V-Y leeren (werden in diesem Modus nicht neu befuellt).
|
||||
@@ -1936,8 +1936,8 @@ class DataProcessor:
|
||||
# Block 1 Column Map
|
||||
y_idx = col_indices["Chat Begruendung Abweichung Branche"]
|
||||
# Erstellen Sie den Bereichsnamen (z.B. "V:Y")
|
||||
v_letter = self.sheet_handler._get_col_letter(v_idx + 1)
|
||||
y_letter = self.sheet_handler._get_col_letter(y_idx + 1)
|
||||
v_letter = _get_col_letter(v_idx + 1)
|
||||
y_letter = _get_col_letter(y_idx + 1)
|
||||
v_y_range_letter = f'{v_letter}:{y_letter}' # z.B. V:Y
|
||||
# Erstellen Sie eine Liste von leeren Strings fuer diesen Bereich
|
||||
# Anzahl der Spalten = Y_Index - V_Index + 1
|
||||
@@ -1947,14 +1947,14 @@ class DataProcessor:
|
||||
# Diese werden von anderen Schritten gesetzt und sollen hier zurueckgesetzt werden,
|
||||
# um sicherzustellen, dass die Zeile bei Bedarf von diesen anderen
|
||||
# Schritten erneut bearbeitet wird.
|
||||
an_letter = self.sheet_handler._get_col_letter(
|
||||
an_letter = _get_col_letter(
|
||||
col_indices["Wikipedia Timestamp"] + 1) # AN (Wiki Extraction TS)
|
||||
ao_letter = self.sheet_handler._get_col_letter(
|
||||
ao_letter = _get_col_letter(
|
||||
col_indices["Timestamp letzte Pruefung"] +
|
||||
1) # AO (Chat Evaluation TS)
|
||||
ap_letter = self.sheet_handler._get_col_letter(
|
||||
ap_letter = _get_col_letter(
|
||||
col_indices["Version"] + 1) # AP (Version)
|
||||
ay_letter = self.sheet_handler._get_col_letter(
|
||||
ay_letter = _get_col_letter(
|
||||
col_indices["SerpAPI Wiki Search Timestamp"] +
|
||||
1) # AY (SerpAPI Wiki TS)
|
||||
|
||||
@@ -2365,10 +2365,10 @@ class DataProcessor:
|
||||
return
|
||||
|
||||
# --- 2. Spalten-Indizes und Buchstaben vorbereiten ---
|
||||
summary_col_letter = self.sheet_handler._get_col_letter(get_col_idx("Website Zusammenfassung") + 1)
|
||||
version_col_letter = self.sheet_handler._get_col_letter(get_col_idx("Version") + 1)
|
||||
summary_col_letter = _get_col_letter(get_col_idx("Website Zusammenfassung") + 1)
|
||||
version_col_letter = _get_col_letter(get_col_idx("Version") + 1)
|
||||
# Wir benötigen auch einen Timestamp für die Zusammenfassung. Da keiner existiert, nutzen wir den Scrape-Timestamp neu.
|
||||
timestamp_col_letter = self.sheet_handler._get_col_letter(get_col_idx("Website Scrape Timestamp") + 1)
|
||||
timestamp_col_letter = _get_col_letter(get_col_idx("Website Scrape Timestamp") + 1)
|
||||
|
||||
|
||||
# --- 3. Tasks sammeln ---
|
||||
@@ -2657,7 +2657,7 @@ class DataProcessor:
|
||||
self.logger.debug(f" Zeile {rn} (Ergebnis): {res}")
|
||||
updates_this_batch.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Vorschlag Branche") + 1)}{rn}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Chat Vorschlag Branche") + 1)}{rn}',
|
||||
'values': [
|
||||
[
|
||||
res.get(
|
||||
@@ -2665,7 +2665,7 @@ class DataProcessor:
|
||||
"ERR BR")]]})
|
||||
updates_this_batch.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Branche Konfidenz") + 1)}{rn}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Chat Branche Konfidenz") + 1)}{rn}',
|
||||
'values': [
|
||||
[
|
||||
res.get(
|
||||
@@ -2673,7 +2673,7 @@ class DataProcessor:
|
||||
"N/A CO")]]})
|
||||
updates_this_batch.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Konsistenz Branche") + 1)}{rn}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Chat Konsistenz Branche") + 1)}{rn}',
|
||||
'values': [
|
||||
[
|
||||
res.get(
|
||||
@@ -2681,7 +2681,7 @@ class DataProcessor:
|
||||
"err CO")]]})
|
||||
updates_this_batch.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Chat Begruendung Abweichung Branche") + 1)}{rn}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Chat Begruendung Abweichung Branche") + 1)}{rn}',
|
||||
'values': [
|
||||
[
|
||||
res.get(
|
||||
@@ -2689,12 +2689,12 @@ class DataProcessor:
|
||||
"No JU")]]})
|
||||
updates_this_batch.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Timestamp letzte Pruefung") + 1)}{rn}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Timestamp letzte Pruefung") + 1)}{rn}',
|
||||
'values': [
|
||||
[ts]]})
|
||||
updates_this_batch.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Version") + 1)}{rn}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Version") + 1)}{rn}',
|
||||
'values': [
|
||||
[ver]]})
|
||||
|
||||
@@ -2948,12 +2948,12 @@ class DataProcessor:
|
||||
|
||||
# Ermitteln Sie die Spaltenbuchstaben fuer Updates und Leerung (nutzt
|
||||
# interne Helfer _get_col_letter Block 14)
|
||||
ts_ay_letter = self.sheet_handler._get_col_letter(
|
||||
ts_ay_letter = _get_col_letter(
|
||||
col_indices["SerpAPI Wiki Search Timestamp"] +
|
||||
1) # Timestamp zu setzen (AY)
|
||||
m_letter = self.sheet_handler._get_col_letter(
|
||||
m_letter = _get_col_letter(
|
||||
col_indices["Wiki URL"] + 1) # Wiki URL Spalte (M)
|
||||
a_letter = self.sheet_handler._get_col_letter(
|
||||
a_letter = _get_col_letter(
|
||||
col_indices["ReEval Flag"] + 1) # ReEval Flag (A)
|
||||
|
||||
# Spalten N-V leeren.
|
||||
@@ -2961,22 +2961,22 @@ class DataProcessor:
|
||||
n_idx = col_indices["Wiki Absatz"]
|
||||
v_idx = col_indices["Begruendung bei Abweichung"]
|
||||
# Erstellen Sie den Bereichsnamen (z.B. "N:V")
|
||||
n_letter = self.sheet_handler._get_col_letter(n_idx + 1)
|
||||
v_letter = self.sheet_handler._get_col_letter(v_idx + 1)
|
||||
n_letter = _get_col_letter(n_idx + 1)
|
||||
v_letter = _get_col_letter(v_idx + 1)
|
||||
nv_range_letter = f'{n_letter}:{v_letter}' # z.B. N:V
|
||||
# Erstellen Sie eine Liste von leeren Strings fuer diesen Bereich
|
||||
# Anzahl der Spalten = V_Index - N_Index + 1
|
||||
empty_nv_values = [''] * (v_idx - n_idx + 1)
|
||||
|
||||
# Timestamps AN, AO, AP, AX leeren.
|
||||
an_letter = self.sheet_handler._get_col_letter(
|
||||
an_letter = _get_col_letter(
|
||||
col_indices["Wikipedia Timestamp"] + 1) # AN (Wiki Extraction TS)
|
||||
ao_letter = self.sheet_handler._get_col_letter(
|
||||
ao_letter = _get_col_letter(
|
||||
col_indices["Timestamp letzte Pruefung"] +
|
||||
1) # AO (Chat Evaluation TS)
|
||||
ap_letter = self.sheet_handler._get_col_letter(
|
||||
ap_letter = _get_col_letter(
|
||||
col_indices["Version"] + 1) # AP (Version)
|
||||
ax_letter = self.sheet_handler._get_col_letter(
|
||||
ax_letter = _get_col_letter(
|
||||
col_indices["Wiki Verif. Timestamp"] + 1) # AX (Wiki Verif. TS)
|
||||
|
||||
# --- Verarbeitung ---
|
||||
@@ -3345,15 +3345,15 @@ class DataProcessor:
|
||||
|
||||
# Ermitteln Sie die Spaltenbuchstaben fuer Updates (AI-AL, AM) (nutzt
|
||||
# interne Helfer _get_col_letter Block 14)
|
||||
ts_am_letter = self.sheet_handler._get_col_letter(
|
||||
ts_am_letter = _get_col_letter(
|
||||
col_indices["Contact Search Timestamp"] + 1) # AM
|
||||
ai_letter = self.sheet_handler._get_col_letter(
|
||||
ai_letter = _get_col_letter(
|
||||
col_indices["Linked Serviceleiter gefunden"] + 1) # AI
|
||||
aj_letter = self.sheet_handler._get_col_letter(
|
||||
aj_letter = _get_col_letter(
|
||||
col_indices["Linked It-Leiter gefunden"] + 1) # AJ
|
||||
ak_letter = self.sheet_handler._get_col_letter(
|
||||
ak_letter = _get_col_letter(
|
||||
col_indices["Linked Management gefunden"] + 1) # AK
|
||||
al_letter = self.sheet_handler._get_col_letter(
|
||||
al_letter = _get_col_letter(
|
||||
col_indices["Linked Disponent gefunden"] + 1) # AL
|
||||
|
||||
# Positionen, nach denen gesucht wird (kann in Config verschoben werden Block 1)
|
||||
@@ -3408,7 +3408,7 @@ class DataProcessor:
|
||||
# (Block 14)
|
||||
contacts_sheet.update(
|
||||
values=[contacts_header],
|
||||
range_name=f"A1:{self.sheet_handler._get_col_letter(num_cols_contacts_sheet)}1")
|
||||
range_name=f"A1:{_get_col_letter(num_cols_contacts_sheet)}1")
|
||||
# <<< GEÄNDERT
|
||||
self.logger.info(
|
||||
"Neues Blatt 'Contacts' erstellt und Header eingetragen.")
|
||||
@@ -3860,24 +3860,24 @@ class DataProcessor:
|
||||
f"FEHLER: Benoetigte Spaltenschluessel fehlen in COLUMN_MAP fuer process_url_check: {missing}. Breche ab.")
|
||||
return
|
||||
|
||||
ar_letter = self.sheet_handler._get_col_letter(
|
||||
ar_letter = _get_col_letter(
|
||||
col_indices["Website Rohtext"] + 1)
|
||||
d_letter = self.sheet_handler._get_col_letter(
|
||||
d_letter = _get_col_letter(
|
||||
col_indices["CRM Website"] + 1)
|
||||
a_letter = self.sheet_handler._get_col_letter(
|
||||
a_letter = _get_col_letter(
|
||||
col_indices["ReEval Flag"] + 1)
|
||||
at_letter = self.sheet_handler._get_col_letter(
|
||||
at_letter = _get_col_letter(
|
||||
col_indices["Website Scrape Timestamp"] + 1)
|
||||
ao_letter = self.sheet_handler._get_col_letter(
|
||||
ao_letter = _get_col_letter(
|
||||
col_indices["Timestamp letzte Pruefung"] + 1)
|
||||
an_letter = self.sheet_handler._get_col_letter(
|
||||
an_letter = _get_col_letter(
|
||||
col_indices["Wikipedia Timestamp"] + 1)
|
||||
ax_letter = self.sheet_handler._get_col_letter(
|
||||
ax_letter = _get_col_letter(
|
||||
col_indices["Wiki Verif. Timestamp"] + 1)
|
||||
ay_letter = self.sheet_handler._get_col_letter(
|
||||
ay_letter = _get_col_letter(
|
||||
col_indices["SerpAPI Wiki Search Timestamp"] +
|
||||
1) # Timestamp dieser Funktion
|
||||
ap_letter = self.sheet_handler._get_col_letter(
|
||||
ap_letter = _get_col_letter(
|
||||
col_indices["Version"] + 1)
|
||||
|
||||
ka_error_patterns = [
|
||||
@@ -4131,11 +4131,11 @@ class DataProcessor:
|
||||
self.logger.info(
|
||||
f"Zeile {row_num_sheet}: SITZ-UPDATE. Input: '{input_sitz_string[:60]}...' Alt: '{aktuelle_stadt} / {aktuelle_land}' -> Neu: '{neue_stadt} / {neues_land}'")
|
||||
updates_fuer_sheet.append({
|
||||
'range': f'{self.sheet_handler._get_col_letter(stadt_col_idx + 1)}{row_num_sheet}',
|
||||
'range': f'{_get_col_letter(stadt_col_idx + 1)}{row_num_sheet}',
|
||||
'values': [[neue_stadt]]
|
||||
})
|
||||
updates_fuer_sheet.append({
|
||||
'range': f'{self.sheet_handler._get_col_letter(land_col_idx + 1)}{row_num_sheet}',
|
||||
'range': f'{_get_col_letter(land_col_idx + 1)}{row_num_sheet}',
|
||||
'values': [[neues_land]]
|
||||
})
|
||||
updated_rows_count += 1
|
||||
@@ -4515,12 +4515,12 @@ class DataProcessor:
|
||||
|
||||
current_row_updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Finaler Umsatz (Wiki>CRM)") + 1)}{row_num_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Finaler Umsatz (Wiki>CRM)") + 1)}{row_num_sheet}',
|
||||
'values': [
|
||||
[final_umsatz_str_konsolidiert]]})
|
||||
current_row_updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Finaler Mitarbeiter (Wiki>CRM)") + 1)}{row_num_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Finaler Mitarbeiter (Wiki>CRM)") + 1)}{row_num_sheet}',
|
||||
'values': [
|
||||
[final_ma_str_konsolidiert]]})
|
||||
|
||||
@@ -4544,7 +4544,7 @@ class DataProcessor:
|
||||
|
||||
current_row_updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Plausibilität Umsatz") + 1)}{row_num_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Plausibilität Umsatz") + 1)}{row_num_sheet}',
|
||||
'values': [
|
||||
[
|
||||
plausi_results.get(
|
||||
@@ -4552,7 +4552,7 @@ class DataProcessor:
|
||||
"ERR_FLAG")]]})
|
||||
current_row_updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Plausibilität Mitarbeiter") + 1)}{row_num_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Plausibilität Mitarbeiter") + 1)}{row_num_sheet}',
|
||||
'values': [
|
||||
[
|
||||
plausi_results.get(
|
||||
@@ -4560,7 +4560,7 @@ class DataProcessor:
|
||||
"ERR_FLAG")]]})
|
||||
current_row_updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Plausibilität Umsatz/MA Ratio") + 1)}{row_num_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Plausibilität Umsatz/MA Ratio") + 1)}{row_num_sheet}',
|
||||
'values': [
|
||||
[
|
||||
plausi_results.get(
|
||||
@@ -4568,7 +4568,7 @@ class DataProcessor:
|
||||
"ERR_FLAG")]]})
|
||||
current_row_updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Abweichung Umsatz CRM/Wiki") + 1)}{row_num_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Abweichung Umsatz CRM/Wiki") + 1)}{row_num_sheet}',
|
||||
'values': [
|
||||
[
|
||||
plausi_results.get(
|
||||
@@ -4576,7 +4576,7 @@ class DataProcessor:
|
||||
"ERR_FLAG")]]})
|
||||
current_row_updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Abweichung MA CRM/Wiki") + 1)}{row_num_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Abweichung MA CRM/Wiki") + 1)}{row_num_sheet}',
|
||||
'values': [
|
||||
[
|
||||
plausi_results.get(
|
||||
@@ -4584,7 +4584,7 @@ class DataProcessor:
|
||||
"ERR_FLAG")]]})
|
||||
current_row_updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Plausibilität Begründung") + 1)}{row_num_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Plausibilität Begründung") + 1)}{row_num_sheet}',
|
||||
'values': [
|
||||
[
|
||||
plausi_results.get(
|
||||
@@ -4602,12 +4602,12 @@ class DataProcessor:
|
||||
"Abweichung MA CRM/Wiki"]:
|
||||
current_row_updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP[key_flag] + 1)}{row_num_sheet}',
|
||||
'range': f'{_get_col_letter(COLUMN_MAP[key_flag] + 1)}{row_num_sheet}',
|
||||
'values': [
|
||||
['FEHLER_CALL']]})
|
||||
current_row_updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Plausibilität Begründung") + 1)}{row_num_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Plausibilität Begründung") + 1)}{row_num_sheet}',
|
||||
'values': [
|
||||
[f"Systemfehler: {str(e_plausi_run_batch)[:100]}"]]})
|
||||
else: # Fehler bei Konsolidierung
|
||||
@@ -4621,18 +4621,18 @@ class DataProcessor:
|
||||
"Abweichung MA CRM/Wiki"]:
|
||||
current_row_updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(COLUMN_MAP[key_flag] + 1)}{row_num_sheet}',
|
||||
'range': f'{_get_col_letter(COLUMN_MAP[key_flag] + 1)}{row_num_sheet}',
|
||||
'values': [
|
||||
['INPUT_FEHLER_KONSO']]})
|
||||
current_row_updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Plausibilität Begründung") + 1)}{row_num_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Plausibilität Begründung") + 1)}{row_num_sheet}',
|
||||
'values': [
|
||||
["Konsolidierung fehlgeschlagen"]]})
|
||||
|
||||
current_row_updates.append(
|
||||
{
|
||||
'range': f'{self.sheet_handler._get_col_letter(get_col_idx("Plausibilität Prüfdatum") + 1)}{row_num_sheet}',
|
||||
'range': f'{_get_col_letter(get_col_idx("Plausibilität Prüfdatum") + 1)}{row_num_sheet}',
|
||||
'values': [
|
||||
[now_timestamp_str]]})
|
||||
|
||||
@@ -4862,11 +4862,11 @@ class DataProcessor:
|
||||
f"FEHLER: Spaltenschlüssel für Parent Suggestion Batch fehlen: {missing}. Abbruch.")
|
||||
return
|
||||
|
||||
col_o_letter = self.sheet_handler._get_col_letter(
|
||||
col_o_letter = _get_col_letter(
|
||||
COLUMN_MAP[col_o_key] + 1)
|
||||
col_p_letter = self.sheet_handler._get_col_letter(
|
||||
col_p_letter = _get_col_letter(
|
||||
COLUMN_MAP[col_p_key] + 1)
|
||||
col_q_letter = self.sheet_handler._get_col_letter(
|
||||
col_q_letter = _get_col_letter(
|
||||
COLUMN_MAP[col_q_key] + 1)
|
||||
|
||||
openai_sem = threading.Semaphore(
|
||||
@@ -5874,15 +5874,15 @@ class DataProcessor:
|
||||
"FEHLER: Weder 'Website Details' noch 'Website Rohtext' Spaltenindex in COLUMN_MAP gefunden.") # <<< GEÄNDERT
|
||||
return # Beende die Methode bei kritischem Fehler
|
||||
self.logger.warning(
|
||||
f"Keine Spalte 'Website Details' in COLUMN_MAP, nutze '{details_col_key_for_logging}' ({self.sheet_handler._get_col_letter(details_col_idx+1)}) als Fallback.") # <<< GEÄNDERT
|
||||
f"Keine Spalte 'Website Details' in COLUMN_MAP, nutze '{details_col_key_for_logging}' ({_get_col_letter(details_col_idx+1)}) als Fallback.") # <<< GEÄNDERT
|
||||
else:
|
||||
# Logge die Verwendung der dedizierten Spalte
|
||||
self.logger.info(
|
||||
f"Nutze Spalte '{details_col_key_for_logging}' ({self.sheet_handler._get_col_letter(details_col_idx+1)}) fuer Website Details.") # <<< GEÄNDERT
|
||||
f"Nutze Spalte '{details_col_key_for_logging}' ({_get_col_letter(details_col_idx+1)}) fuer Website Details.") # <<< GEÄNDERT
|
||||
|
||||
# Ermitteln Sie den Spaltenbuchstaben der Zielspalte (nutzt interne
|
||||
# Helfer _get_col_letter Block 14)
|
||||
details_col_letter = self.sheet_handler._get_col_letter(
|
||||
details_col_letter = _get_col_letter(
|
||||
details_col_idx + 1)
|
||||
|
||||
# --- Verarbeitung ---
|
||||
@@ -6181,13 +6181,13 @@ class DataProcessor:
|
||||
|
||||
# Ermitteln Sie die Spaltenbuchstaben fuer Updates/Leerung (nutzt
|
||||
# interne Helfer _get_col_letter Block 14)
|
||||
s_letter = self.sheet_handler._get_col_letter(
|
||||
s_letter = _get_col_letter(
|
||||
col_indices["Chat Wiki Konsistenzpruefung"] + 1) # Status S
|
||||
u_letter = self.sheet_handler._get_col_letter(
|
||||
u_letter = _get_col_letter(
|
||||
col_indices["Chat Vorschlag Wiki Artikel"] + 1) # Vorschlag U
|
||||
m_letter = self.sheet_handler._get_col_letter(
|
||||
m_letter = _get_col_letter(
|
||||
col_indices["Wiki URL"] + 1) # Wiki URL M
|
||||
a_letter = self.sheet_handler._get_col_letter(
|
||||
a_letter = _get_col_letter(
|
||||
col_indices["ReEval Flag"] + 1) # ReEval Flag A
|
||||
|
||||
# Spalten N-V leeren.
|
||||
@@ -6195,24 +6195,24 @@ class DataProcessor:
|
||||
n_idx = col_indices["Wiki Absatz"]
|
||||
v_idx = col_indices["Begruendung bei Abweichung"]
|
||||
# Erstellen Sie den Bereichsnamen (z.B. "N:V")
|
||||
n_letter = self.sheet_handler._get_col_letter(n_idx + 1)
|
||||
v_letter = self.sheet_handler._get_col_letter(v_idx + 1)
|
||||
n_letter = _get_col_letter(n_idx + 1)
|
||||
v_letter = _get_col_letter(v_idx + 1)
|
||||
nv_range_letter = f'{n_letter}:{v_letter}' # z.B. N:V
|
||||
# Erstellen Sie eine Liste von leeren Strings fuer diesen Bereich
|
||||
# Anzahl der Spalten = V_Index - N_Index + 1
|
||||
empty_nv_values = [''] * (v_idx - n_idx + 1)
|
||||
|
||||
# Timestamps AN, AO, AX, AP, AY leeren.
|
||||
an_letter = self.sheet_handler._get_col_letter(
|
||||
an_letter = _get_col_letter(
|
||||
col_indices["Wikipedia Timestamp"] + 1) # AN (Wiki Extraction TS)
|
||||
ao_letter = self.sheet_handler._get_col_letter(
|
||||
ao_letter = _get_col_letter(
|
||||
col_indices["Timestamp letzte Pruefung"] +
|
||||
1) # AO (Chat Evaluation TS)
|
||||
ap_letter = self.sheet_handler._get_col_letter(
|
||||
ap_letter = _get_col_letter(
|
||||
col_indices["Version"] + 1) # AP (Version)
|
||||
ax_letter = self.sheet_handler._get_col_letter(
|
||||
ax_letter = _get_col_letter(
|
||||
col_indices["Wiki Verif. Timestamp"] + 1) # AX (Wiki Verif. TS)
|
||||
ay_letter = self.sheet_handler._get_col_letter(
|
||||
ay_letter = _get_col_letter(
|
||||
col_indices["SerpAPI Wiki Search Timestamp"] +
|
||||
1) # AY (SerpAPI Wiki TS)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user