b091649e6a
fix: vision_preis_lokal von Ollama (qwen3-vl:32b) auf OpenRouter (gpt-4o-mini) umgestellt
...
GPU auf KI-Server wird fuer Coding-Agent (Qwen3-Coder-Next) benoetigt.
Roundtrip-Erkennung und Sidebar-Artefakt-Filter bleiben funktional.
Inkl. bisher uncommittete Aenderungen (Vision-Pipeline, Flex-Scans, Worker-Updates).
Ref: Issue #75 Phase 1
2026-04-11 05:56:01 +00:00
510ef99691
STATE: Status-Tabelle MU disabled, Stand 25.03.2026
2026-03-25 11:07:53 +00:00
427d5ee03d
Betrieb: flugscanner-mu disabled, Scraping nur Asia (instabile DE-Anbindung)
2026-03-25 11:07:36 +00:00
b1aaaa9d57
fix: KI-Fallback Filter verschaerft 650-1400 EUR (Trip One-Way raus)
...
- KI-Fallback nutzte 500-2000 EUR, jetzt 650-1400 EUR
- Preise unter 650 EUR aus Screenshot werden verworfen (One-Way)
- Alte Trip-Preise unter 650 EUR als implausibel markiert
2026-03-01 09:14:31 +00:00
35252246dc
fix: Telegram Bot + Morgenbericht zeigen alle aktiven Scanner
...
- Queries nutzen jetzt alle Scanner statt nur deaktivierte
- Morgenbericht auf 07:30 verschoben (nach 06:30-Scan)
- /preis zeigt Preise pro Quelle (Kayak, Momondo, Trip.com)
- Preis-Alerts fuer alle Scanner aktiv
- preis_korrigiert in Abfragen beruecksichtigt
2026-03-01 08:34:34 +00:00
a90a73b7cb
fix: KI-Augen blockiert keine Scraper-Ergebnisse mehr + Economy komplett
...
- scheduler.py: Scraper-Preise haben Vorrang vor KI-Screenshot-Analyse
- worker.py: Cabin-Check dynamisch (economy statt hardcoded PE)
- cathay_pacific Job deaktiviert (nicht auf Nodes implementiert)
- Doppelte momondo/trip Jobs bereinigt
- Economy QC-Filter 600-1400 EUR, Roundtrip 50-95 Tage
- Gepaeckzuschlag Economy Light +140 EUR Roundtrip
- Vision-AI Kabinen+Preis-Klassifizierung
- KI-Plausi in Batches, Telegram Bot, Source-Health
- Scan-Limits 3/Tag/Quelle, Geo-Skip Asia
- .gitignore hinzugefuegt
2026-03-01 03:25:54 +00:00
root
a9cb83871c
refactor: Economy-Fokus, CX via HKG, Telegram Bot, Anti-Bot
...
Komplette Neuausrichtung des Scanners:
- Premium Economy → Economy (CX via HKG als Hauptroute)
- Telegram Bot (@CX_HKG_Alert_bot) mit /preis, /best, /status
- SeleniumBase 4.34 → 4.47 (besserer UC/CDP Mode)
- Scrape-URL (.de) / Booking-URL (.com) Trennung
- GDPR-Consent-Handling für Kayak/Momondo
- NODE_SCANNER_SKIP: Geo-Block-Scanner pro Node konfigurierbar
- Alert-Zähler pro Node (kein Spam durch bekannte Geo-Blocks)
- .env Dateien aus Repo entfernt (Secrets)
- STATE.md mit aktuellem Stand
Made-with: Cursor
2026-02-26 18:01:38 +07:00
Cursor
8c6eb7128a
fix: KI-Plausi in Batches à 25 Preise (verhindert Token-Overflow)
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 22:47:04 +07:00
Cursor
4dde05ff01
feat: KI-Plausibilitätsprüfung für jeden Preis
...
- Jeder Preis wird nach dem Scan von der KI einzeln geprüft
- plausibel/verdächtig/ungeprüft Status in DB (prices.plausibel)
- Fallback auf Regelwerk wenn KI nicht erreichbar
- Dashboard: Farbcodierung (grün=PE bestätigt, rot=verdächtig)
- Nur plausible Preise in Stats/Vergleich/KI-Auswertung
- Scraper: Fallback ohne Gepäck komplett entfernt
- Scraper: Mindestpreis 700€ für PE (filtert Economy raus)
- Scraper: Kabinen-Verifikation auf jeder Seite
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 22:34:56 +07:00
Cursor
28235c9eda
disable: Wego deaktiviert (SPA-URL nicht kompatibel)
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 22:04:37 +07:00
Cursor
f1720ac629
fix: Momondo Consent+URL, Wego URL-Format, Traveloka USD→EUR Parsing
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 21:59:56 +07:00
Cursor
207485fb8f
feat: Momondo + Wego + Traveloka Scanner, Google Flights deaktiviert
...
- worker.py: scrape_momondo() — gleiche Firma wie Kayak, andere Preise
- worker.py: scrape_wego() — asiatische Flugsuchmaschine
- worker.py: scrape_traveloka() — größte SE-Asien Reiseplattform
- worker.py: Google Flights + Skyscanner auf _scrape_disabled gesetzt
- db.py: Dispatcher um momondo/wego/traveloka erweitert
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 21:39:46 +07:00
Cursor
f8797f3e08
fix: Google Flights Nach-Feld via combobox-Selector + JS-Fallback (zweites sichtbares Input)
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 21:24:58 +07:00
Cursor
aca9c7f431
fix: Google Flights Nach-Feld via active_element Fallback
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 21:22:10 +07:00
Cursor
27f78c9a40
fix: Google Flights — Keyboard-Nav für Autocomplete, JS-Fallback für Such-Button
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 21:17:23 +07:00
Cursor
c8dcce6c17
fix: Google Flights scraper — find_elements ohne timeout, robustere Formular-Logik
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 21:12:31 +07:00
Cursor
3e6c1011dd
fix: Preise aus letztem Scan-Lauf (MAX-20min Fenster) statt 3h
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 21:00:22 +07:00
Cursor
37c8c38876
fix: Detail-Tabelle zeigt nur letzte 3h Preise (mit Screenshots)
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 20:58:43 +07:00
Cursor
a03a58d01e
feat: Screenshot-Spalte im Dashboard — Full-Page CDP Screenshots
...
- worker.py: _take_screenshot() via Chrome CDP (JPEG 55%, max 3000px)
- worker.py: alle Scraper geben (results, screenshot_b64) Tuple zurück
- agent.py: screenshot_b64 in API-Response enthalten
- scheduler.py: speichere_screenshot() Funktion + Verknüpfung mit prices
- db.py: screenshots-Tabelle + screenshot_id FK in prices
- web.py: /api/screenshot/<id> Endpoint (base64→JPEG Response)
- web.py: 📷 Button in Preistabelle → Lightbox mit Full-Page Screenshot
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 20:51:10 +07:00
Cursor
2ce7d02bc5
feat: HKG Stopover Variante — Multi-City FRA→HKG→KTI
...
- db.py: jobs Tabelle um via/stopover_min_h/stopover_max_h erweitert
- db.py: 2 neue kayak_multicity Jobs (CX + alle Airlines) via HKG
- db.py: KI-Prompt um HKG_STOPOVER Vergleichsfeld ergänzt
- worker.py: scrape_kayak_multicity() Funktion implementiert
- worker.py: Kayak Multi-City URL FRA→HKG/D1→HKG→KTI/D2→KTI→FRA/D3
- agent.py: via/stopover_min_h/stopover_max_h Parameter entgegengenommen
- scheduler.py: neue Parameter an Node-Agent weitergegeben
- web.py: Multi-City Einträge im Dashboard lila hervorgehoben (+~150€ Hotel-Hinweis)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 16:59:53 +07:00
Cursor
639e6a4fc3
fix: Threading-Lock verhindert parallele Scans, Status-API, Button-Feedback
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 16:50:01 +07:00
Cursor
ba0893a337
feat: Scan alle 30 Minuten statt 4x täglich
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 16:31:51 +07:00
Cursor
6ddbc2bcfd
fix: IndentationError in web.py run_schedule entfernt
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 16:29:34 +07:00
Cursor
4ba004cc76
feat: 4x täglich (06/11/18/23h) + Flex-Lauf Di/Mi 23:30 mit ±3 Tage Datumsfenster
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 16:06:55 +07:00
Cursor
f85c049aca
feat: max_flugzeit_h (22h), max_stops (2), echtes PE, Kayak Flugzeit/Stops-Filter, db_migrate.py
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 15:50:46 +07:00
Cursor
36d671c301
feat: Airlines CZ/CX/SQ/TG, Kayak Umstiegszeit-Filter 2-5h, airline_filter Job-Parameter
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 15:46:51 +07:00
Cursor
c9e8684a88
fix: Google Flights Formular-Suche statt Hash-URL, alle scraper gepaeck-param fix
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 15:40:44 +07:00
Cursor
b70dbbcd13
fix: scrape_trip gepaeck param, Google Flights Homepage-Detection, Kayak Bags-Filter Fallback
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 15:35:16 +07:00
Cursor
838e8f4af8
feat: 1000 EUR Plausibilitaets-Schwelle, Vergleichstabelle MU vs Asia, Gepaeck-Filter Kayak
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 15:28:33 +07:00
Cursor
52b71d16f4
fix: Duplikate in Jobs-Tabelle verhindern, KTI als einziges Ziel
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 14:45:50 +07:00
Cursor
aad4e9b3c9
fix: KI auswerten() default nach=KTI, Prompt auf Roundtrip FRA→KTI aktualisiert
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 14:42:21 +07:00
Cursor
0a9e65b71a
feat: Roundtrip FRA→KTI (Phnom Penh Techo Airport), Premium Economy, HAN als Umstieg
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 14:37:47 +07:00
Cursor
190281e2bb
fix: KI-Default-Route auf HAN geändert
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 14:32:33 +07:00
Cursor
d4a94465b7
feat: trip.com Scanner hinzufügen (Premium Economy, gut für Asia-IPs)
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 14:28:22 +07:00
Cursor
5b5cf38bd6
debug: detailliertes Logging in worker.py + Kayak verbessert
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 14:26:41 +07:00
Cursor
9ad786e171
fix: nach Consent-Accept nochmal zur Such-URL navigieren
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 14:18:14 +07:00
Cursor
7cd39d0387
fix: Route FRA→HAN (Hanoi), Kabine Premium Economy
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 14:14:00 +07:00
Cursor
bf1d0eb071
fix: Google Consent-Seite für DE-IPs (DSGVO) wegklicken
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 14:12:34 +07:00
Cursor
7adc9529b7
fix: robusteres Scraping mit mehreren Selektoren + Regex-Fallback
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 14:08:05 +07:00
Cursor
f0a295a408
fix: Chrome via Google-Repo statt Distro-Paketen
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 13:47:31 +07:00
Cursor
3ca727cec3
Initial: Hub + Node Grundstruktur
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-25 13:45:23 +07:00