diff --git a/src/analytics/__pycache__/worker.cpython-313.pyc b/src/analytics/__pycache__/worker.cpython-313.pyc index d238429..9ada7b6 100644 Binary files a/src/analytics/__pycache__/worker.cpython-313.pyc and b/src/analytics/__pycache__/worker.cpython-313.pyc differ diff --git a/src/analytics/worker.py b/src/analytics/worker.py index 438adbc..49253af 100644 --- a/src/analytics/worker.py +++ b/src/analytics/worker.py @@ -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}")