Fix: Analytics Worker berechnet jetzt alle Tabellen pro Tag
All checks were successful
Deployment / deploy-docker (push) Successful in 18s

This commit is contained in:
Melchior Reimers
2026-01-27 14:20:27 +01:00
parent 459c24fcd3
commit 77651d64c1
2 changed files with 23 additions and 8 deletions

View File

@@ -788,7 +788,8 @@ class AnalyticsWorker:
return dates
def get_missing_dates(self) -> List[datetime.date]:
"""Ermittelt fehlende Tage, die noch berechnet werden müssen"""
"""Ermittelt fehlende Tage, die noch berechnet werden müssen.
Prüft alle drei Analytics-Tabellen: analytics_custom, analytics_exchange_daily, analytics_daily_summary"""
logger.info("=== get_missing_dates() called ===")
# Hole das Datum des ersten Trades
query = "select min(date_trunc('day', timestamp)) as first_date from trades"
@@ -803,8 +804,13 @@ class AnalyticsWorker:
else:
first_date = datetime.datetime.fromtimestamp(first_date_value / 1000000, tz=datetime.timezone.utc).date()
# Hole bereits berechnete Daten
existing_dates = self.get_existing_dates('analytics_custom')
# Hole bereits berechnete Daten aus allen drei Tabellen
existing_custom = self.get_existing_dates('analytics_custom')
existing_exchange = self.get_existing_dates('analytics_exchange_daily')
existing_summary = self.get_existing_dates('analytics_daily_summary')
# Kombiniere alle vorhandenen Daten (Union)
existing_dates = existing_custom | existing_exchange | existing_summary
# Generiere alle Tage vom ersten Trade bis heute
today = datetime.date.today()
@@ -825,13 +831,14 @@ class AnalyticsWorker:
else:
last_trade_date = datetime.datetime.fromtimestamp(last_date_value / 1000000, tz=datetime.timezone.utc).date()
# Finde fehlende Tage
# Finde fehlende Tage (Tage, die in mindestens einer Tabelle fehlen)
missing_dates = [d for d in all_dates if d not in existing_dates]
# Debug-Logs (immer ausgeben)
last_trade_str = str(last_trade_date) if last_trade_date else "None"
logger.info(f"Date range: first trade={first_date}, last trade={last_trade_str}, today={today}")
logger.info(f"Existing dates in analytics_custom: {len(existing_dates)} dates")
logger.info(f"Existing dates - analytics_custom: {len(existing_custom)}, analytics_exchange_daily: {len(existing_exchange)}, analytics_daily_summary: {len(existing_summary)}")
logger.info(f"Total unique existing dates across all tables: {len(existing_dates)}")
if existing_dates:
existing_sorted = sorted(existing_dates)
logger.info(f" First existing: {existing_sorted[0]}, Last existing: {existing_sorted[-1]}")
@@ -839,7 +846,7 @@ class AnalyticsWorker:
if missing_dates:
logger.info(f" First missing: {missing_dates[0]}, Last missing: {missing_dates[-1]}")
else:
logger.info(" No missing dates - all dates are already calculated")
logger.info(" No missing dates - all dates are already calculated in all tables")
return sorted(missing_dates)
@@ -876,7 +883,11 @@ class AnalyticsWorker:
yesterday = today - datetime.timedelta(days=1)
logger.info(f"Ensuring yesterday ({yesterday}) and today ({today}) are processed...")
existing_dates = self.get_existing_dates('analytics_custom')
# Prüfe alle drei Tabellen
existing_custom = self.get_existing_dates('analytics_custom')
existing_exchange = self.get_existing_dates('analytics_exchange_daily')
existing_summary = self.get_existing_dates('analytics_daily_summary')
existing_dates = existing_custom | existing_exchange | existing_summary
if yesterday not in existing_dates:
logger.info(f"Processing yesterday's data: {yesterday}")
@@ -909,7 +920,11 @@ class AnalyticsWorker:
# Stelle sicher, dass gestern und heute verarbeitet wurden
today = now.date()
yesterday = today - datetime.timedelta(days=1)
existing_dates = self.get_existing_dates('analytics_custom')
# Prüfe alle drei Tabellen
existing_custom = self.get_existing_dates('analytics_custom')
existing_exchange = self.get_existing_dates('analytics_exchange_daily')
existing_summary = self.get_existing_dates('analytics_daily_summary')
existing_dates = existing_custom | existing_exchange | existing_summary
if yesterday not in existing_dates:
logger.info(f"Processing yesterday's data: {yesterday}")