Add audio duration and processing factor per minute to dashboard statistics
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user