v1.7.5: Spaltenreihenfolge für Timestamps und Plausi-Checks optimiert

- "Contact Search Timestamp" nach "Geschaetzter Techniker Bucket" verschoben.
- 6 Plausibilitäts-Check-Spalten danach eingefügt.
- Neue Spalte "Plausibilität Prüfdatum" hinzugefügt.
- COLUMN_MAP und alignment_demo entsprechend der neuen 64-Spalten-Struktur (A-BL) aktualisiert.
This commit is contained in:
2025-05-12 18:11:08 +00:00
parent 6673ab4b86
commit 28a869f87d

View File

@@ -134,6 +134,17 @@ class Config:
SERPAPI_DELAY = 1.5 # Pause zwischen einzelnen SerpAPI-Aufrufen (Sekunden) SERPAPI_DELAY = 1.5 # Pause zwischen einzelnen SerpAPI-Aufrufen (Sekunden)
PLAUSI_UMSATZ_MIN_WARNUNG = 50000
PLAUSI_UMSATZ_MAX_WARNUNG = 200000000000
PLAUSI_MA_MIN_WARNUNG_ABS = 1
PLAUSI_MA_MIN_WARNUNG_BEI_UMSATZ = 3
PLAUSI_UMSATZ_MIN_SCHWELLE_FUER_MA_CHECK = 1000000
PLAUSI_MA_MAX_WARNUNG = 1000000
PLAUSI_RATIO_UMSATZ_PRO_MA_MIN = 25000
PLAUSI_RATIO_UMSATZ_PRO_MA_MAX = 1500000
PLAUSI_ABWEICHUNG_CRM_WIKI_PROZENT = 30
# --- API Schluessel Speicherung (werden in main() geladen) --- # --- API Schluessel Speicherung (werden in main() geladen) ---
API_KEYS = {} API_KEYS = {}
@@ -248,24 +259,22 @@ COLUMN_MAP = {
"Linked Management gefunden": 48, # AW (vorher AV) "Linked Management gefunden": 48, # AW (vorher AV)
"Linked Disponent gefunden": 49, # AX (vorher AW) "Linked Disponent gefunden": 49, # AX (vorher AW)
# Konsolidierte Werte & ML (AY-BA) - VORHER AX-AZ "Contact Search Timestamp": 50, # AY (KORREKT VERSCHOBEN)
"Finaler Umsatz (Wiki>CRM)": 50, # AY (vorher AX) "Finaler Umsatz (Wiki>CRM)": 51, # AZ (war AY)
"Finaler Mitarbeiter (Wiki>CRM)": 51, # AZ (vorher AY) "Finaler Mitarbeiter (Wiki>CRM)": 52, # BA (war AZ)
"Geschaetzter Techniker Bucket": 52, # BA (vorher AZ) "Geschaetzter Techniker Bucket": 53, # BB (war BA)
"Plausibilität Umsatz": 54, # BC
"Plausibilität Mitarbeiter": 55, # BD
"Plausibilität Umsatz/MA Ratio": 56, # BE
"Abweichung Umsatz CRM/Wiki": 57, # BF
"Abweichung MA CRM/Wiki": 58, # BG
"Plausibilität Begründung": 59, # BH
"Plausibilität Prüfdatum": 60, # BI
# NEUE PLAUSIBILITÄTS-SPALTEN (BB-BG) # Systemspalten (BJ-BL)
"Plausibilität Umsatz": 53, # BB (NEU) "Timestamp letzte Pruefung": 61, # BJ (ChatGPT Eval TS)
"Plausibilität Mitarbeiter": 54, # BC (NEU) "Version": 62, # BK
"Plausibilität Umsatz/MA Ratio": 55, # BD (NEU) "Tokens": 63, # BL
"Abweichung Umsatz CRM/Wiki": 56, # BE (NEU)
"Abweichung MA CRM/Wiki": 57, # BF (NEU)
"Plausibilität Begründung": 58, # BG (NEU)
# Timestamps (Rest) & System (BH-BJ) - Indizes angepasst
"Contact Search Timestamp": 59, # BH (vorher 53 -> BA)
"Timestamp letzte Pruefung": 60, # BI (vorher 54 -> BB)
"Version": 61, # BJ (vorher 55 -> BC)
"Tokens": 62, # BK (vorher 56 -> BD) # Ups, hier war ein Fehler in meiner Zählung. 58+3=61, also BK
} }
# --- Globale Variablen fuer Branch Mapping (werden von load_target_schema() befuellt) --- # --- Globale Variablen fuer Branch Mapping (werden von load_target_schema() befuellt) ---
@@ -2505,14 +2514,17 @@ def alignment_demo(sheet):
new_headers = [ new_headers = [
[ # Zeile 1: Spaltenname [ # Zeile 1: Spaltenname
# ... (A-AX unverändert lassen bis "Linked Disponent gefunden") ...
"ReEval Flag", "CRM Name", "CRM Kurzform", "CRM Website", "CRM Ort", "CRM Land", "CRM Beschreibung", "CRM Branche", "CRM Beschreibung Branche extern", "CRM Anzahl Techniker", "CRM Umsatz", "CRM Anzahl Mitarbeiter", "CRM Vorschlag Wiki URL", "ReEval Flag", "CRM Name", "CRM Kurzform", "CRM Website", "CRM Ort", "CRM Land", "CRM Beschreibung", "CRM Branche", "CRM Beschreibung Branche extern", "CRM Anzahl Techniker", "CRM Umsatz", "CRM Anzahl Mitarbeiter", "CRM Vorschlag Wiki URL",
"Wiki URL", "Wiki Sitz Stadt", "Wiki Sitz Land", "Wiki Absatz", "Wiki Branche", "Wiki Umsatz", "Wiki Mitarbeiter", "Wiki Kategorien", "Wikipedia Timestamp", "Wiki Verif. Timestamp", "SerpAPI Wiki Search Timestamp", "Chat Wiki Konsistenzpruefung", "Chat Begründung Wiki Inkonsistenz", "Chat Vorschlag Wiki Artikel", "Begründung bei Abweichung", "Wiki URL", "Wiki Sitz Stadt", "Wiki Sitz Land", "Wiki Absatz", "Wiki Branche", "Wiki Umsatz", "Wiki Mitarbeiter", "Wiki Kategorien", "Wikipedia Timestamp", "Wiki Verif. Timestamp", "SerpAPI Wiki Search Timestamp", "Chat Wiki Konsistenzpruefung", "Chat Begründung Wiki Inkonsistenz", "Chat Vorschlag Wiki Artikel", "Begründung bei Abweichung",
"Website Rohtext", "Website Zusammenfassung", "Website Meta-Details", "Website Scrape Timestamp", "URL Prüfstatus", "Website Rohtext", "Website Zusammenfassung", "Website Meta-Details", "Website Scrape Timestamp", "URL Prüfstatus",
"Chat Vorschlag Branche", "Chat Branche Konfidenz", "Chat Konsistenz Branche", "Chat Begruendung Abweichung Branche", "Chat Prüfung FSM Relevanz", "Chat Begründung für FSM Relevanz", "Chat Schätzung Anzahl Mitarbeiter", "Chat Konsistenzprüfung Mitarbeiterzahl", "Chat Begründung Abweichung Mitarbeiterzahl", "Chat Einschätzung Anzahl Servicetechniker", "Chat Begründung Abweichung Anzahl Servicetechniker", "Chat Schätzung Umsatz", "Chat Begründung Abweichung Umsatz", "Chat Vorschlag Branche", "Chat Branche Konfidenz", "Chat Konsistenz Branche", "Chat Begruendung Abweichung Branche", "Chat Prüfung FSM Relevanz", "Chat Begründung für FSM Relevanz", "Chat Schätzung Anzahl Mitarbeiter", "Chat Konsistenzprüfung Mitarbeiterzahl", "Chat Begründung Abweichung Mitarbeiterzahl", "Chat Einschätzung Anzahl Servicetechniker", "Chat Begründung Abweichung Anzahl Servicetechniker", "Chat Schätzung Umsatz", "Chat Begründung Abweichung Umsatz",
"Linked Serviceleiter gefunden", "Linked It-Leiter gefunden", "Linked Management gefunden", "Linked Disponent gefunden", "Linked Serviceleiter gefunden", "Linked It-Leiter gefunden", "Linked Management gefunden", "Linked Disponent gefunden",
"Finaler Umsatz (Wiki>CRM)", "Finaler Mitarbeiter (Wiki>CRM)", "Geschaetzter Techniker Bucket", # --- KORRIGIERTE REIHENFOLGE / NEUE SPALTEN AB AY ---
"Plausibilität Umsatz", "Plausibilität Mitarbeiter", "Plausibilität Umsatz/MA Ratio", "Abweichung Umsatz CRM/Wiki", "Abweichung MA CRM/Wiki", "Plausibilität Begründung", # NEU "Contact Search Timestamp", "Finaler Umsatz (Wiki>CRM)", "Finaler Mitarbeiter (Wiki>CRM)", "Geschaetzter Techniker Bucket",
"Contact Search Timestamp", "Timestamp letzte Prüfung", "Version", "Tokens" "Plausibilität Umsatz", "Plausibilität Mitarbeiter", "Plausibilität Umsatz/MA Ratio", "Abweichung Umsatz CRM/Wiki", "Abweichung MA CRM/Wiki", "Plausibilität Begründung",
"Plausibilität Prüfdatum",
"Timestamp letzte Prüfung", "Version", "Tokens"
], ],
[ # Zeile 2: Quelle der Daten [ # Zeile 2: Quelle der Daten
"CRM", "CRM", "CRM", "CRM", "CRM", "CRM/Manuell", "CRM", "CRM", "CRM", "CRM", "CRM", "CRM", "CRM", "CRM", "CRM", "CRM", "CRM", "CRM", "CRM/Manuell", "CRM", "CRM", "CRM", "CRM", "CRM", "CRM", "CRM",
@@ -2520,8 +2532,14 @@ def alignment_demo(sheet):
"Web Scraper", "ChatGPT API", "Web Scraper", "System", "System/Web Scraper", "Web Scraper", "ChatGPT API", "Web Scraper", "System", "System/Web Scraper",
"ChatGPT API", "ChatGPT API", "System/ChatGPT API", "ChatGPT API", "ChatGPT API", "ChatGPT API", "ChatGPT API", "System/ChatGPT API", "ChatGPT API", "ChatGPT API", "ChatGPT API", "ChatGPT API", "ChatGPT API", "ChatGPT API", "ChatGPT API", "System/ChatGPT API", "ChatGPT API", "ChatGPT API", "ChatGPT API", "ChatGPT API", "System/ChatGPT API", "ChatGPT API", "ChatGPT API", "ChatGPT API", "ChatGPT API", "ChatGPT API",
"LinkedIn (via SerpApi)", "LinkedIn (via SerpApi)", "LinkedIn (via SerpApi)", "LinkedIn (via SerpApi)", "LinkedIn (via SerpApi)", "LinkedIn (via SerpApi)", "LinkedIn (via SerpApi)", "LinkedIn (via SerpApi)",
"Skript (Wiki/CRM Logik)", "Skript (Wiki/CRM Logik)", "Skript (Plausi-Check)", "Skript (Plausi-Check)", "Skript (Plausi-Check)", "Skript (Plausi-Check)", "Skript (Plausi-Check)", "Skript (Plausi-Check)", # NEU "System", # AY: Contact Search Timestamp
"System", "System", "System", "System", "System" "Skript (Wiki/CRM Logik)", # AZ: Finaler Umsatz
"Skript (Wiki/CRM Logik)", # BA: Finaler Mitarbeiter
"ML Modell / Skript", # BB: Geschaetzter Techniker Bucket
"Skript (Plausi-Check)", "Skript (Plausi-Check)", "Skript (Plausi-Check)", "Skript (Plausi-Check)", "Skript (Plausi-Check)", "Skript (Plausi-Check)", # BC-BH: Plausi
"System (Plausi-Check TS)",# BI: Plausi Prüfdatum
"System", "System", "System" # BJ-BL: Rest
],
], ],
[ # Zeile 3: Feldkategorie [ # Zeile 3: Feldkategorie
"Prozess", "Firmenname", "Firmenname", "Website", "Ort", "Land", "Beschreibung (Text)", "Branche", "Branche", "Anzahl Servicetechniker", "Umsatz", "Anzahl Mitarbeiter", "Wikipedia Artikel URL", "Prozess", "Firmenname", "Firmenname", "Website", "Ort", "Land", "Beschreibung (Text)", "Branche", "Branche", "Anzahl Servicetechniker", "Umsatz", "Anzahl Mitarbeiter", "Wikipedia Artikel URL",
@@ -2529,9 +2547,13 @@ def alignment_demo(sheet):
"Website-Content", "Website-Content (Zusammenfassung)", "Website-Content (Meta)", "Timestamp", "Prozess-Status", "Website-Content", "Website-Content (Zusammenfassung)", "Website-Content (Meta)", "Timestamp", "Prozess-Status",
"Branche (Vorschlag KI)", "Branche (Konfidenz KI)", "Branche (Konsistenz)", "Branche (Begründung KI)", "FSM Relevanz (KI)", "FSM Relevanz (Begründung KI)", "Anzahl Mitarbeiter (KI)", "Anzahl Mitarbeiter (Konsistenz KI)", "Anzahl Mitarbeiter (Begründung KI)", "Anzahl Servicetechniker (KI)", "Anzahl Servicetechniker (Begründung KI)", "Umsatz (KI)", "Umsatz (Begründung KI)", "Branche (Vorschlag KI)", "Branche (Konfidenz KI)", "Branche (Konsistenz)", "Branche (Begründung KI)", "FSM Relevanz (KI)", "FSM Relevanz (Begründung KI)", "Anzahl Mitarbeiter (KI)", "Anzahl Mitarbeiter (Konsistenz KI)", "Anzahl Mitarbeiter (Begründung KI)", "Anzahl Servicetechniker (KI)", "Anzahl Servicetechniker (Begründung KI)", "Umsatz (KI)", "Umsatz (Begründung KI)",
"Kontakte (Anzahl)", "Kontakte (Anzahl)", "Kontakte (Anzahl)", "Kontakte (Anzahl)", "Kontakte (Anzahl)", "Kontakte (Anzahl)", "Kontakte (Anzahl)", "Kontakte (Anzahl)",
"Umsatz (Konsolidiert)", "Anzahl Mitarbeiter (Konsolidiert)", "Anzahl Servicetechniker (Bucket ML)", "Timestamp", # AY: Contact Search Timestamp
"Plausibilität", "Plausibilität", "Plausibilität", "Datenqualitäts-Indikator", "Datenqualitäts-Indikator", "Plausibilität (Text)", # NEU "Umsatz (Konsolidiert)", # AZ
"Timestamp", "Timestamp", "Skript Version", "API Tokens" "Anzahl Mitarbeiter (Konsolidiert)", # BA
"Anzahl Servicetechniker (Bucket ML)", # BB
"Plausibilität", "Plausibilität", "Plausibilität", "Datenqualitäts-Indikator", "Datenqualitäts-Indikator", "Plausibilität (Text)", # BC-BH: Plausi
"Timestamp (Plausi)", # BI: Plausi Prüfdatum
"Timestamp", "Skript Version", "API Tokens"
], ],
[ # Zeile 4: Kurze Beschreibung [ # Zeile 4: Kurze Beschreibung
"Systemspalte, irrelevant für den Prompt. 'x' markiert Zeile für Re-Evaluation.", #A "Systemspalte, irrelevant für den Prompt. 'x' markiert Zeile für Re-Evaluation.", #A
@@ -2584,19 +2606,20 @@ def alignment_demo(sheet):
"Anzahl der via SerpAPI gefundenen LinkedIn-Kontakte für die Kategorie 'IT-Leiter'.", #AV "Anzahl der via SerpAPI gefundenen LinkedIn-Kontakte für die Kategorie 'IT-Leiter'.", #AV
"Anzahl der via SerpAPI gefundenen LinkedIn-Kontakte für die Kategorie 'Management'.", #AW "Anzahl der via SerpAPI gefundenen LinkedIn-Kontakte für die Kategorie 'Management'.", #AW
"Anzahl der via SerpAPI gefundenen LinkedIn-Kontakte für die Kategorie 'Disponent'.", #AX "Anzahl der via SerpAPI gefundenen LinkedIn-Kontakte für die Kategorie 'Disponent'.", #AX
"Konsolidierter Umsatzwert in Mio. €. Priorisiert Wiki (S) > CRM (K).", #AY "Zeitstempel der letzten Kontaktsuche via SerpAPI für diese Zeile.", #AY
"Konsolidierte Mitarbeiterzahl. Priorisiert Wiki (T) > CRM (L).", #AZ "Konsolidierter Umsatzwert in Mio. €. Priorisiert Wiki (S) > CRM (K).", #AZ
"Ergebnis der Schätzung durch das trainierte Machine-Learning-Modell.", #BA "Konsolidierte Mitarbeiterzahl. Priorisiert Wiki (T) > CRM (L).", #BA
"Plausibilitätsstatus für den finalen Umsatzwert (z.B. OK, WARNUNG_HOCH).", #BB (NEU) "Ergebnis der Schätzung durch das trainierte Machine-Learning-Modell.", #BB
"Plausibilitätsstatus für die finale Mitarbeiterzahl (z.B. OK, WARNUNG_NIEDRIG).", #BC (NEU) "Plausibilitätsstatus für den finalen Umsatzwert (z.B. OK, WARNUNG_HOCH).", #BC
"Plausibilitätsstatus für die Umsatz-pro-Mitarbeiter-Ratio.", #BD (NEU) "Plausibilitätsstatus für die finale Mitarbeiterzahl (z.B. OK, WARNUNG_NIEDRIG).", #BD
"Indikator für Abweichung zwischen CRM- und Wiki-Umsatz.", #BE (NEU) "Plausibilitätsstatus für die Umsatz-pro-Mitarbeiter-Ratio.", #BE
"Indikator für Abweichung zwischen CRM- und Wiki-Mitarbeiterzahl.", #BF (NEU) "Indikator für Abweichung zwischen CRM- und Wiki-Umsatz.", #BF
"Gesammelte Begründungen für Plausibilitätswarnungen oder -fehler.", #BG (NEU) "Indikator für Abweichung zwischen CRM- und Wiki-Mitarbeiterzahl.", #BG
"Zeitstempel der letzten Kontaktsuche via SerpAPI für diese Zeile.", #BH "Gesammelte Begründungen für Plausibilitätswarnungen oder -fehler.", #BH
"Zeitstempel der letzten übergreifenden Prüfung/Bewertung durch ChatGPT (z.B. Branchenevaluation AH-AT).", #BI "Zeitstempel des letzten Plausibilitäts-Checks.", #BI
"Version des Skripts, die diese Zeile zuletzt signifikant bearbeitet hat.", #BJ "Zeitstempel der letzten übergreifenden Prüfung/Bewertung durch ChatGPT (z.B. Branchenevaluation AH-AT).", #BJ
"Verbrauchte Tokens für OpenAI API-Aufrufe für diese Zeile." #BK "Version des Skripts, die diese Zeile zuletzt signifikant bearbeitet hat.", #BK
"Verbrauchte Tokens für OpenAI API-Aufrufe für diese Zeile." #BL
], ],
[ # Zeile 5: Aufgabe / Funktion [ # Zeile 5: Aufgabe / Funktion
"Datenquelle/Prozesssteuerung: 'x' markiert Zeile für Re-Evaluation in Modus 'reeval'.", #A "Datenquelle/Prozesssteuerung: 'x' markiert Zeile für Re-Evaluation in Modus 'reeval'.", #A
@@ -2649,19 +2672,20 @@ def alignment_demo(sheet):
"Ziel: Anzahl gefundener LinkedIn-Kontakte (IT-Leiter) via SerpAPI.", #AV "Ziel: Anzahl gefundener LinkedIn-Kontakte (IT-Leiter) via SerpAPI.", #AV
"Ziel: Anzahl gefundener LinkedIn-Kontakte (Management) via SerpAPI.", #AW "Ziel: Anzahl gefundener LinkedIn-Kontakte (Management) via SerpAPI.", #AW
"Ziel: Anzahl gefundener LinkedIn-Kontakte (Disponent) via SerpAPI.", #AX "Ziel: Anzahl gefundener LinkedIn-Kontakte (Disponent) via SerpAPI.", #AX
"Ziel: Konsolidierter Umsatz (Wiki-Wert (S) > CRM-Wert (K)). Input für ML-Modell.", #AY "System: Timestamp der letzten Kontaktsuche (Modus 'contacts'). Steuert Wiederholung.", #AY
"Ziel: Konsolidierte Mitarbeiterzahl (Wiki-Wert (T) > CRM-Wert (L)). Input für ML-Modell.", #AZ "Ziel: Konsolidierter Umsatz (Wiki-Wert (S) > CRM-Wert (K)). Input für ML-Modell.", #AZ
"Vom ML-Modell vorhergesagter Bucket für die Anzahl der Servicetechniker.", #BA "Ziel: Konsolidierte Mitarbeiterzahl (Wiki-Wert (T) > CRM-Wert (L)). Input für ML-Modell.", #BA
"Ziel: Kennzeichnung der Plausibilität des finalen Umsatzwertes.", #BB (NEU) "Vom ML-Modell vorhergesagter Bucket für die Anzahl der Servicetechniker.", #BB
"Ziel: Kennzeichnung der Plausibilität der finalen Mitarbeiterzahl.", #BC (NEU) "Ziel: Kennzeichnung der Plausibilität des finalen Umsatzwertes.", #BC
"Ziel: Kennzeichnung der Plausibilität der Umsatz-pro-Mitarbeiter-Verhältniszahl.", #BD (NEU) "Ziel: Kennzeichnung der Plausibilität der finalen Mitarbeiterzahl.", #BD
"Ziel: Indikator zur Datenqualität bezüglich Umsatz CRM vs. Wiki.", #BE (NEU) "Ziel: Kennzeichnung der Plausibilität der Umsatz-pro-Mitarbeiter-Verhältniszahl.", #BE
"Ziel: Indikator zur Datenqualität bezüglich Mitarbeiter CRM vs. Wiki.", #BF (NEU) "Ziel: Indikator zur Datenqualität bezüglich Umsatz CRM vs. Wiki.", #BF
"Ziel: Zusammenfassung der Gründe für erkannte Plausibilitätsprobleme.", #BG (NEU) "Ziel: Indikator zur Datenqualität bezüglich Mitarbeiter CRM vs. Wiki.", #BG
"System: Timestamp der letzten Kontaktsuche (Modus 'contacts'). Steuert Wiederholung.", #BH "Ziel: Zusammenfassung der Gründe für erkannte Plausibilitätsprobleme.", #BH
"System: Timestamp der letzten übergreifenden ChatGPT-Evaluation (Branchen, FSM etc.). Steuert Wiederholung.", #BI "System: Timestamp des letzten Plausibilitäts-Checks. Steuert Wiederholung.", #BI
"System: Skriptversion, die die Zeile zuletzt signifikant bearbeitet hat.", #BJ "System: Timestamp der letzten übergreifenden ChatGPT-Evaluation (Branchen, FSM etc.). Steuert Wiederholung.", #BJ
"System: Verbrauchte Tokens für OpenAI API-Aufrufe für diese Zeile." #BK "System: Skriptversion, die die Zeile zuletzt signifikant bearbeitet hat.", #BK
"System: Verbrauchte Tokens für OpenAI API-Aufrufe für diese Zeile." #BL
] ]
] ]