fix: Detail-Tabelle zeigt nur letzte 3h Preise (mit Screenshots)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Cursor 2026-02-25 20:58:43 +07:00
parent a03a58d01e
commit 37c8c38876

View file

@ -390,10 +390,25 @@ def api_ki_latest():
@app.route("/api/preise/heute")
def api_preise_heute():
"""
Liefert Preise aus dem letzten Scan-Lauf (letzten 3 Stunden).
Damit haben alle Einträge einen Screenshot und sind aktuell.
Fallback auf den ganzen heutigen Tag wenn keine neueren Daten vorhanden.
"""
conn = get_conn()
rows = conn.execute(
"SELECT * FROM prices WHERE date(scraped_at)=date('now') ORDER BY preis ASC LIMIT 50"
).fetchall()
# Erst: Preise aus den letzten 3 Stunden (neuester Lauf = mit Screenshots)
rows = conn.execute("""
SELECT * FROM prices
WHERE scraped_at >= datetime('now', '-3 hours')
ORDER BY preis ASC LIMIT 100
""").fetchall()
# Fallback: ganzer Tag (z.B. wenn lange kein Lauf war)
if not rows:
rows = conn.execute("""
SELECT * FROM prices
WHERE date(scraped_at) = date('now')
ORDER BY preis ASC LIMIT 100
""").fetchall()
conn.close()
return jsonify([dict(r) for r in rows])
@ -403,14 +418,22 @@ def api_preise_vergleich():
"""Pro Scanner: günstigster Preis je Node + Delta zum Vortag."""
conn = get_conn()
# Heute: günstigster Preis pro Scanner+Node
# Heute: günstigster Preis pro Scanner+Node — aus letzten 3h (mit Screenshot)
heute = conn.execute("""
SELECT scanner, node, MIN(preis) as preis, booking_url, abflug, ankunft
FROM prices
WHERE date(scraped_at) = date('now')
WHERE scraped_at >= datetime('now', '-3 hours')
GROUP BY scanner, node
ORDER BY scanner, preis
""").fetchall()
if not heute:
heute = conn.execute("""
SELECT scanner, node, MIN(preis) as preis, booking_url, abflug, ankunft
FROM prices
WHERE date(scraped_at) = date('now')
GROUP BY scanner, node
ORDER BY scanner, preis
""").fetchall()
# Gestern: günstigster Preis pro Scanner+Node
gestern = conn.execute("""