Fix: Analytics Worker berechnet jetzt alle Tabellen pro Tag
All checks were successful
Deployment / deploy-docker (push) Successful in 18s
All checks were successful
Deployment / deploy-docker (push) Successful in 18s
This commit is contained in:
Binary file not shown.
@@ -788,7 +788,8 @@ class AnalyticsWorker:
|
|||||||
return dates
|
return dates
|
||||||
|
|
||||||
def get_missing_dates(self) -> List[datetime.date]:
|
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 ===")
|
logger.info("=== get_missing_dates() called ===")
|
||||||
# Hole das Datum des ersten Trades
|
# Hole das Datum des ersten Trades
|
||||||
query = "select min(date_trunc('day', timestamp)) as first_date from trades"
|
query = "select min(date_trunc('day', timestamp)) as first_date from trades"
|
||||||
@@ -803,8 +804,13 @@ class AnalyticsWorker:
|
|||||||
else:
|
else:
|
||||||
first_date = datetime.datetime.fromtimestamp(first_date_value / 1000000, tz=datetime.timezone.utc).date()
|
first_date = datetime.datetime.fromtimestamp(first_date_value / 1000000, tz=datetime.timezone.utc).date()
|
||||||
|
|
||||||
# Hole bereits berechnete Daten
|
# Hole bereits berechnete Daten aus allen drei Tabellen
|
||||||
existing_dates = self.get_existing_dates('analytics_custom')
|
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
|
# Generiere alle Tage vom ersten Trade bis heute
|
||||||
today = datetime.date.today()
|
today = datetime.date.today()
|
||||||
@@ -825,13 +831,14 @@ class AnalyticsWorker:
|
|||||||
else:
|
else:
|
||||||
last_trade_date = datetime.datetime.fromtimestamp(last_date_value / 1000000, tz=datetime.timezone.utc).date()
|
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]
|
missing_dates = [d for d in all_dates if d not in existing_dates]
|
||||||
|
|
||||||
# Debug-Logs (immer ausgeben)
|
# Debug-Logs (immer ausgeben)
|
||||||
last_trade_str = str(last_trade_date) if last_trade_date else "None"
|
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"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:
|
if existing_dates:
|
||||||
existing_sorted = sorted(existing_dates)
|
existing_sorted = sorted(existing_dates)
|
||||||
logger.info(f" First existing: {existing_sorted[0]}, Last existing: {existing_sorted[-1]}")
|
logger.info(f" First existing: {existing_sorted[0]}, Last existing: {existing_sorted[-1]}")
|
||||||
@@ -839,7 +846,7 @@ class AnalyticsWorker:
|
|||||||
if missing_dates:
|
if missing_dates:
|
||||||
logger.info(f" First missing: {missing_dates[0]}, Last missing: {missing_dates[-1]}")
|
logger.info(f" First missing: {missing_dates[0]}, Last missing: {missing_dates[-1]}")
|
||||||
else:
|
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)
|
return sorted(missing_dates)
|
||||||
|
|
||||||
@@ -876,7 +883,11 @@ class AnalyticsWorker:
|
|||||||
yesterday = today - datetime.timedelta(days=1)
|
yesterday = today - datetime.timedelta(days=1)
|
||||||
|
|
||||||
logger.info(f"Ensuring yesterday ({yesterday}) and today ({today}) are processed...")
|
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:
|
if yesterday not in existing_dates:
|
||||||
logger.info(f"Processing yesterday's data: {yesterday}")
|
logger.info(f"Processing yesterday's data: {yesterday}")
|
||||||
@@ -909,7 +920,11 @@ class AnalyticsWorker:
|
|||||||
# Stelle sicher, dass gestern und heute verarbeitet wurden
|
# Stelle sicher, dass gestern und heute verarbeitet wurden
|
||||||
today = now.date()
|
today = now.date()
|
||||||
yesterday = today - datetime.timedelta(days=1)
|
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:
|
if yesterday not in existing_dates:
|
||||||
logger.info(f"Processing yesterday's data: {yesterday}")
|
logger.info(f"Processing yesterday's data: {yesterday}")
|
||||||
|
|||||||
Reference in New Issue
Block a user