生产备份

This commit is contained in:
zhanggangyong
2026-03-13 02:53:27 +00:00
parent 7ddac1bea7
commit 648921b26c
23 changed files with 1800 additions and 1627 deletions
+18 -7
View File
@@ -2841,8 +2841,8 @@ async def get_running_agents_billing(
@router.get("/billing/overview", response_model=SuccessResponse)
async def get_billing_overview(
startTime: str = Query(...),
endTime: str = Query(...),
startTime: Optional[str] = Query(None, description="开始时间(ISO 8601格式),不传则默认为当前时间前1个月"),
endTime: Optional[str] = Query(None, description="结束时间(ISO 8601格式),不传则默认为当前时间"),
channelName: Optional[str] = Query(None),
tenantName: Optional[str] = Query(None),
minCalls: Optional[int] = Query(None),
@@ -2857,13 +2857,24 @@ async def get_billing_overview(
从 AgentBillingRecord 和 ModelBillingRecord 表查询计费数据,
返回渠道维度、租户维度和调用记录三个维度的统计。
时间参数:
- 不传参数时,默认查询最近1个月(endTime=当前时间,startTime=当前时间-30天)
- 传参时按照传入的时间范围查询,格式为 ISO 8601(如:2026-02-10T09:43:48.048Z)
EU 计算规则:1 EU = 10 秒运行时间(向上取整)
"""
_verify_read_permission(principal)
# 解析时间,移除时区信息以匹配数据库中的 naive datetime
start_dt = datetime.fromisoformat(startTime.replace("Z", "+00:00"))
end_dt = datetime.fromisoformat(endTime.replace("Z", "+00:00"))
# 处理时间参数:不传则使用默认值(最近1个月)
if endTime is None:
end_dt = datetime.utcnow()
else:
end_dt = datetime.fromisoformat(endTime.replace("Z", "+00:00"))
if startTime is None:
start_dt = end_dt - timedelta(days=30)
else:
start_dt = datetime.fromisoformat(startTime.replace("Z", "+00:00"))
# 转换为 naive datetime(移除时区信息)
if start_dt.tzinfo is not None:
@@ -3048,8 +3059,8 @@ async def get_billing_overview(
"timestamp": record.start_time.isoformat() if record.start_time else None,
"channelName": channel_name or "无渠道",
"tenantName": user_name,
"agentName": record.agent_name,
"modelName": record.model_name,
"agentName": record.agent_name or "unknown", # ✅ 提供默认值
"modelName": record.model_name or "N/A", # ✅ 提供默认值
"duration": record.duration_seconds or 0,
"eu": record.eu_consumed or 0,
"cost": float(record.cost or 0),