Commit Graph

304 Commits

Author SHA1 Message Date
04585f2b20 debug 2025-04-17 18:16:24 +00:00
d905c547ec bugfix 2025-04-17 16:53:26 +00:00
b81f182706 bugfix 2025-04-17 15:28:11 +00:00
2ae3a4aa34 bugfix 2025-04-17 15:18:14 +00:00
23bac0c585 bugfix 2025-04-17 14:53:46 +00:00
99338dc9cf bugfix 2025-04-17 14:48:10 +00:00
4c2ef0d251 bugfix 2025-04-17 14:36:23 +00:00
5c00505dff v1.6.4: Implementiere ML-Modelltraining zur Technikerschätzung
- Füge neuen Betriebsmodus `--mode train_technician_model` hinzu.
- Implementiere Datenvorbereitung in `DataProcessor.prepare_data_for_modeling`:
    - Lädt relevante Spalten.
    - Konsolidiert Umsatz/Mitarbeiter (Wiki > CRM Priorität).
    - Filtert nach gültiger Technikerzahl (>0).
    - Erstellt Zielvariable `Techniker_Bucket` (7 Kategorien).
    - Führt One-Hot Encoding für Branchen durch.
- Implementiere Logik im `train_technician_model`-Modus in `main`:
    - Führt Train/Test-Split durch (stratifiziert).
    - Imputiert fehlende numerische Werte mit Median (fittet auf Train, transformiert Train/Test).
    - Trainiert einen `DecisionTreeClassifier` mittels `GridSearchCV` zur Hyperparameter-Optimierung (Fokus auf `f1_weighted`).
    - Evaluiert das beste Modell auf dem Test-Set (Accuracy, Classification Report, Confusion Matrix).
    - Extrahiert Baumregeln mittels `export_text`.
    - Speichert den trainierten Imputer, das beste Modell (`.pkl`) und die extrahierten Regeln (`.txt`).
- Füge notwendige Imports für `pandas`, `numpy`, `sklearn`, `pickle`, `json` hinzu.
- Ergänze neue Konfigurationsparameter für ML in `Config` (Worker, Limits).
- Füge Kommandozeilenargumente für Modell-Ausgabedateien hinzu.
2025-04-17 14:00:30 +00:00
ac1fde7f65 bugfix 2025-04-17 13:08:19 +00:00
0207fa0410 bugfix 2025-04-17 13:03:25 +00:00
1dd59f5abb bugfix 2025-04-17 12:53:10 +00:00
e1f86b918d bugfix 2025-04-17 12:48:03 +00:00
ad62e88946 bugfix 2025-04-17 12:26:07 +00:00
f26b9c3758 bugfix 2025-04-17 11:01:49 +00:00
baa503a949 bugfix 2025-04-17 10:56:02 +00:00
afd82fcd05 bugfix 2025-04-17 10:55:04 +00:00
c3930c49f4 bugfix 2025-04-17 10:53:59 +00:00
114d3ee96f bugfix 2025-04-17 10:52:30 +00:00
a9fd711a61 bugfix 2025-04-17 10:28:13 +00:00
91906f7340 bugfix 2025-04-17 10:23:09 +00:00
e8104d9920 bugfix 2025-04-17 10:05:07 +00:00
6d764458d4 bugfix 2025-04-17 09:57:44 +00:00
cf029f342c bugfix 2025-04-17 09:53:56 +00:00
8d38803e1c bugfix 2025-04-17 09:48:32 +00:00
c0e5605754 bugfix 2025-04-17 09:39:57 +00:00
d80b6cda47 bugfix 2025-04-17 09:31:25 +00:00
ab1601cf98 bugfix 2025-04-17 09:19:48 +00:00
b2d60dabac bugfix 2025-04-17 09:12:23 +00:00
b955ee1862 bugfix 2025-04-17 09:02:42 +00:00
e8b5944e8f v1.6.3: Beschleunige Website-Scraping durch gebündelte Sheet-Updates
- Überarbeite `process_website_batch` zur Leistungssteigerung.
- Implementiere das Sammeln von Zell-Updates (`AR`, `AS`, `AT`, `AP`) für mehrere Zeilen in einer Liste (`all_sheet_updates`).
- Sende die gesammelten Updates gebündelt über einen einzigen `batch_update_cells`-Aufruf an Google Sheets, wenn ein Limit (`update_batch_row_limit`) erreicht ist oder die Schleife endet.
- Ziel: Reduzierung der Anzahl von Google Sheets API-Aufrufen und Beschleunigung des Website-Scraping-Prozesses.
- Stelle sicher, dass auch ein letzter, unvollständiger Batch nach der Hauptschleife gesendet wird.
2025-04-17 08:45:18 +00:00
4d982637e9 bugfix 2025-04-16 16:08:49 +00:00
2d107cc7ee bugfix 2025-04-16 15:38:57 +00:00
654253e535 bugfix 2025-04-16 15:31:29 +00:00
8c4074fe7e bugfix 2025-04-16 15:20:33 +00:00
567eceded3 bugfix 2025-04-16 14:42:01 +00:00
1e2205e2ce bugfix 2025-04-16 14:24:12 +00:00
1c3e2786ac bugfix 2025-04-16 14:11:26 +00:00
924a0fe2ca bugfix 2025-04-16 14:02:01 +00:00
3339376f3a bugfix 2025-04-16 13:50:32 +00:00
3478a68e2f bugfix 2025-04-16 13:33:00 +00:00
110e83bee5 bugfix 2025-04-16 13:23:32 +00:00
dfcfedf9fe bugfix 2025-04-16 12:59:17 +00:00
ab84a41aef bugfix 2025-04-16 12:43:30 +00:00
3e1c4e63b8 bugfix 2025-04-16 12:34:16 +00:00
9eb9a19246 bugfix 2025-04-16 12:13:09 +00:00
403898843f v1.6.2: Verfeinere Timestamp-Logik & integriere ML-Datenvorbereitung
- Passe Dispatcher (`run_dispatcher`) und `GoogleSheetHandler.get_start_row_index` an, um den Startpunkt basierend auf dem Website Scrape Timestamp (Spalte AT) zu bestimmen.
- Implementiere individuelle Timestamp-Prüfungen in den Batch-Funktionen (`process_verification_only` (AN), `process_website_batch` (AT), `process_branch_batch` (AO)), um das erneute Verarbeiten abgeschlossener Zeilen zu verhindern.
- Überarbeite `_process_single_row` (`full_run`, `reeval`), um für jeden Teilbereich (Wiki, Website, Chat) den zugehörigen Timestamp zu prüfen und nur bei Bedarf auszuführen.
- Passe `_process_batch` an, sodass es nur noch Ergebnisspalten (S-Y) schreibt; Timestamps werden jetzt von der aufrufenden Funktion gesetzt.
- Füge neue Spalten (AT: Website TS, AU: Gesch. Techniker Bucket, AV: Finaler Umsatz, AW: Finaler MA) zur `alignment_demo` und `COLUMN_MAP` hinzu.
- Integriere die Funktion `prepare_data_for_modeling` als Methode in die `DataProcessor`-Klasse (wird noch nicht aktiv in einem Modus aufgerufen).
2025-04-16 11:56:39 +00:00
5a06d777c9 v1.6.2: Bereite Techniker-Modell vor & korrigiere/ergänze Modi (Alignment, Args)
- Füge neuen Modus `--mode alignment` hinzu, um die Header-Definitionen (Zeilen 1-5) über die Funktion `alignment_demo` ins Hauptblatt zu schreiben (inkl. Sicherheitsabfrage).
- Korrigiere das Kommandozeilenargument für das Zeilenlimit von `--row_limit` zu `--limit` im `argparse`-Setup in `main`.
- Verbessere die `main`-Funktion, um interaktive `input()`-Abfragen für Modus und Limit nur dann zu stellen, wenn die entsprechenden Argumente nicht über die Kommandozeile bereitgestellt wurden (verhindert Fehler bei `nohup`). Füge Fehlerbehandlung für `input()` hinzu.
- Integriere die neue Funktion `prepare_data_for_modeling` zur Aufbereitung der Daten für das geplante Decision-Tree-Modell zur Technikerschätzung (Funktion wird in den bestehenden Modi noch nicht aufgerufen).
2025-04-16 09:27:53 +00:00
fa884c2a10 Alignment Demo Update 2025-04-16 08:55:49 +00:00
daab0caa5c v1.6.1: Verbessere Website-Scraping zur Umgehung von Cookie-Bannern
- Überarbeite `get_website_raw` zur besseren Handhabung von Cookie-Bannern.
- Priorisiere Scraping von Hauptinhalt-Tags (`<main>`, `<article>`, spezifische IDs/Klassen).
- Implementiere Fallback auf `<body>` mit Versuch, häufige Banner-Elemente zu entfernen (`.decompose()`).
- Füge Heuristik hinzu, um extrahierten Text zu verwerfen, wenn er wahrscheinlich nur Banner-Inhalt ist.
- Erhöhe Request-Timeout in `get_website_raw` leicht auf 15 Sekunden.
2025-04-15 20:14:47 +00:00
c5b3089c1c bugfix 2025-04-15 14:54:01 +00:00