Merge pull request #811 from SuanmoSuanyangTechnology/fix/update-calculation

fix:The number of API calls has been changed to the total count up to…
This commit is contained in:
山程漫悟
2026-04-07 23:56:52 +08:00
committed by GitHub

View File

@@ -536,7 +536,7 @@ def get_dashboard_yesterday_changes(
"total_api_call_change": float | None "total_api_call_change": float | None
} }
""" """
from datetime import datetime, timedelta from datetime import datetime
from sqlalchemy import func from sqlalchemy import func
from app.models.api_key_model import ApiKey, ApiKeyLog from app.models.api_key_model import ApiKey, ApiKeyLog
from app.models.knowledge_model import Knowledge from app.models.knowledge_model import Knowledge
@@ -547,7 +547,6 @@ def get_dashboard_yesterday_changes(
now_local = datetime.now() now_local = datetime.now()
today_start = now_local.replace(hour=0, minute=0, second=0, microsecond=0) today_start = now_local.replace(hour=0, minute=0, second=0, microsecond=0)
yesterday_start = today_start - timedelta(days=1)
changes = { changes = {
"total_memory_change": None, "total_memory_change": None,
@@ -562,7 +561,7 @@ def get_dashboard_yesterday_changes(
return None return None
return round((today_val - yesterday_val) / yesterday_val, 4) return round((today_val - yesterday_val) / yesterday_val, 4)
# --- total_api_call_change: (今日调用量 - 昨日调用量) / 昨日调用量 --- # --- total_api_call_change: (截止今日累计总数 - 截止昨日累计总数) / 截止昨日累计总数 ---
try: try:
api_key_ids = [ api_key_ids = [
row[0] for row in db.query(ApiKey.id).filter( row[0] for row in db.query(ApiKey.id).filter(
@@ -570,19 +569,17 @@ def get_dashboard_yesterday_changes(
).all() ).all()
] ]
if api_key_ids: if api_key_ids:
# 今日累计调用 # 截止今日累计调用总数
today_api_count = db.query(func.count(ApiKeyLog.id)).filter( total_api_until_now = db.query(func.count(ApiKeyLog.id)).filter(
ApiKeyLog.api_key_id.in_(api_key_ids), ApiKeyLog.api_key_id.in_(api_key_ids),
ApiKeyLog.created_at >= today_start,
ApiKeyLog.created_at < now_local ApiKeyLog.created_at < now_local
).scalar() or 0 ).scalar() or 0
# 昨日全天调用量 # 截止昨日的累计调用总数today_start 即昨日结束)
yesterday_api_count = db.query(func.count(ApiKeyLog.id)).filter( total_api_until_yesterday = db.query(func.count(ApiKeyLog.id)).filter(
ApiKeyLog.api_key_id.in_(api_key_ids), ApiKeyLog.api_key_id.in_(api_key_ids),
ApiKeyLog.created_at >= yesterday_start,
ApiKeyLog.created_at < today_start ApiKeyLog.created_at < today_start
).scalar() or 0 ).scalar() or 0
changes["total_api_call_change"] = _calc_percentage(today_api_count, yesterday_api_count) changes["total_api_call_change"] = _calc_percentage(total_api_until_now, total_api_until_yesterday)
else: else:
changes["total_api_call_change"] = None changes["total_api_call_change"] = None
except Exception as e: except Exception as e:
@@ -1081,15 +1078,11 @@ def get_dashboard_common_stats(db: Session, workspace_id) -> dict:
except Exception as e: except Exception as e:
business_logger.warning(f"获取知识库数量失败: {e}") business_logger.warning(f"获取知识库数量失败: {e}")
# total_api_call: 仅统计当天 api_key_log 调用 # total_api_call: 截止当前的历史累计调用
try: try:
from datetime import datetime
from sqlalchemy import func as _api_func from sqlalchemy import func as _api_func
from app.models.api_key_model import ApiKey as _ApiKey, ApiKeyLog as _ApiKeyLog from app.models.api_key_model import ApiKey as _ApiKey, ApiKeyLog as _ApiKeyLog
_now = datetime.now()
_today_start = _now.replace(hour=0, minute=0, second=0, microsecond=0)
_api_key_ids = [ _api_key_ids = [
row[0] for row in db.query(_ApiKey.id).filter( row[0] for row in db.query(_ApiKey.id).filter(
_ApiKey.workspace_id == workspace_id _ApiKey.workspace_id == workspace_id
@@ -1097,9 +1090,7 @@ def get_dashboard_common_stats(db: Session, workspace_id) -> dict:
] ]
if _api_key_ids: if _api_key_ids:
total_api_calls = db.query(_api_func.count(_ApiKeyLog.id)).filter( total_api_calls = db.query(_api_func.count(_ApiKeyLog.id)).filter(
_ApiKeyLog.api_key_id.in_(_api_key_ids), _ApiKeyLog.api_key_id.in_(_api_key_ids)
_ApiKeyLog.created_at >= _today_start,
_ApiKeyLog.created_at < _now
).scalar() or 0 ).scalar() or 0
else: else:
total_api_calls = 0 total_api_calls = 0