updated dashboard
All checks were successful
Deployment / deploy-docker (push) Successful in 18s

This commit is contained in:
Melchior Reimers
2026-01-27 13:07:01 +01:00
parent 01f4c23f51
commit 996cf0b1a1
2 changed files with 63 additions and 4 deletions

View File

@@ -84,6 +84,23 @@ async def get_trades(isin: str = None, days: int = 7):
"""
data = query_questdb(query)
# Fallback: Wenn analytics_exchange_daily leer ist, berechne direkt aus trades
if not data or not data.get('dataset') or len(data.get('dataset', [])) == 0:
logger.info(f"analytics_exchange_daily is empty, calculating from trades table")
query = f"""
select
date_trunc('day', timestamp) as date,
exchange,
count(*) as trade_count,
sum(price * quantity) as volume
from trades
where timestamp >= dateadd('d', -{days}, now())
group by date, exchange
order by date desc, exchange asc
"""
data = query_questdb(query)
return format_questdb_response(data)
@app.get("/api/metadata")
@@ -118,6 +135,27 @@ async def get_summary(days: int = None):
"""
data = query_questdb(query)
# Fallback: Wenn analytics_daily_summary leer ist, berechne direkt aus trades
if not data or not data.get('dataset') or not data['dataset']:
logger.info(f"analytics_daily_summary is empty, calculating from trades table")
if days:
query = f"""
select
count(*) as total_trades,
sum(price * quantity) as total_volume
from trades
where timestamp >= dateadd('d', -{days}, now())
"""
else:
query = """
select
count(*) as total_trades,
sum(price * quantity) as total_volume
from trades
"""
data = query_questdb(query)
if data and data.get('dataset') and data['dataset']:
total_trades = data['dataset'][0][0] if data['dataset'][0][0] else 0
total_volume = data['dataset'][0][1] if data['dataset'][0][1] else 0.0
@@ -337,6 +375,27 @@ async def get_moving_average(days: int = 7, exchange: str = None):
query += " order by date asc, exchange asc"
data = query_questdb(query, timeout=5)
# Fallback: Wenn analytics_exchange_daily leer ist, berechne direkt aus trades
if not data or not data.get('dataset') or len(data.get('dataset', [])) == 0:
logger.info(f"analytics_exchange_daily is empty, calculating moving average from trades table")
# Berechne Moving Average direkt aus trades (vereinfacht, ohne echte MA-Berechnung)
query = f"""
select
date_trunc('day', timestamp) as date,
exchange,
count(*) as trade_count,
sum(price * quantity) as volume,
count(*) as ma_count,
sum(price * quantity) as ma_volume
from trades
where timestamp >= dateadd('d', -{days}, now())
"""
if exchange:
query += f" and exchange = '{exchange}'"
query += " group by date, exchange order by date asc, exchange asc"
data = query_questdb(query, timeout=10)
return format_questdb_response(data)
@app.get("/api/statistics/volume-changes")