Add audio duration and processing factor per minute to dashboard statistics

This commit is contained in:
Dominic Ballenthin
2026-01-29 02:27:20 +01:00
parent 9529a284c8
commit 9aa911ac45
2 changed files with 41 additions and 3 deletions

View File

@@ -76,6 +76,26 @@ async def get_usage_stats(db: Session, days: int = 30):
UsageLog.status == "success"
).scalar() or 0
# Average audio duration
avg_duration = db.query(func.avg(UsageLog.duration_seconds)).filter(
UsageLog.created_at >= since,
UsageLog.status == "success",
UsageLog.duration_seconds.isnot(None)
).scalar() or 0
# Processing factor (seconds processing time per minute of audio)
# Formula: (processing_time_ms / 1000) / duration_seconds * 60
processing_factor = db.query(
func.avg(
(UsageLog.processing_time_ms / 1000.0) / UsageLog.duration_seconds * 60
)
).filter(
UsageLog.created_at >= since,
UsageLog.status == "success",
UsageLog.duration_seconds.isnot(None),
UsageLog.duration_seconds > 0
).scalar() or 0
# Daily stats for chart
daily_stats = db.query(
func.date(UsageLog.created_at).label("date"),
@@ -96,6 +116,8 @@ async def get_usage_stats(db: Session, days: int = 30):
"total_requests": total_requests,
"success_rate": round(success_rate, 2),
"avg_processing_time_ms": round(avg_time, 2),
"avg_duration_seconds": round(avg_duration, 2),
"processing_factor": round(processing_factor, 2),
"daily_stats": [
{"date": str(stat.date), "count": stat.count, "avg_time": round(stat.avg_time or 0, 2)}
for stat in daily_stats