fix: Preise aus letztem Scan-Lauf (MAX-20min Fenster) statt 3h

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Cursor 2026-02-25 21:00:22 +07:00
parent 37c8c38876
commit 3e6c1011dd

View file

@ -396,13 +396,17 @@ def api_preise_heute():
Fallback auf den ganzen heutigen Tag wenn keine neueren Daten vorhanden.
"""
conn = get_conn()
# Erst: Preise aus den letzten 3 Stunden (neuester Lauf = mit Screenshots)
# Neuester Scan-Lauf: ab MAX(scraped_at) - 20 Minuten
# Damit werden immer die Preise des letzten Laufs gezeigt — alle mit Screenshot
rows = conn.execute("""
SELECT * FROM prices
WHERE scraped_at >= datetime('now', '-3 hours')
WHERE scraped_at >= datetime(
(SELECT MAX(scraped_at) FROM prices WHERE date(scraped_at) = date('now')),
'-20 minutes'
)
ORDER BY preis ASC LIMIT 100
""").fetchall()
# Fallback: ganzer Tag (z.B. wenn lange kein Lauf war)
# Fallback: ganzer Tag (z.B. erster Lauf des Tages noch nicht abgeschlossen)
if not rows:
rows = conn.execute("""
SELECT * FROM prices
@ -418,11 +422,14 @@ def api_preise_vergleich():
"""Pro Scanner: günstigster Preis je Node + Delta zum Vortag."""
conn = get_conn()
# Heute: günstigster Preis pro Scanner+Node — aus letzten 3h (mit Screenshot)
# Heute: günstigster Preis pro Scanner+Node — aus letztem Scan-Lauf
heute = conn.execute("""
SELECT scanner, node, MIN(preis) as preis, booking_url, abflug, ankunft
FROM prices
WHERE scraped_at >= datetime('now', '-3 hours')
WHERE scraped_at >= datetime(
(SELECT MAX(scraped_at) FROM prices WHERE date(scraped_at) = date('now')),
'-20 minutes'
)
GROUP BY scanner, node
ORDER BY scanner, preis
""").fetchall()