forked from xiaohei/taiji-AI-PAD
生产备份
This commit is contained in:
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user