feat: 添加缓存监控和使用量统计 API 端点

This commit is contained in:
fawney19
2025-12-11 17:47:59 +08:00
parent 22ea0e245d
commit abc41c7d3c
5 changed files with 707 additions and 7 deletions

View File

@@ -121,6 +121,18 @@ async def get_my_active_requests(
return await pipeline.run(adapter=adapter, http_request=request, db=db, mode=adapter.mode)
@router.get("/usage/interval-timeline")
async def get_my_interval_timeline(
request: Request,
hours: int = Query(168, ge=1, le=720, description="分析最近多少小时的数据"),
limit: int = Query(1000, ge=100, le=5000, description="最大返回数据点数量"),
db: Session = Depends(get_db),
):
"""获取当前用户的请求间隔时间线数据,用于散点图展示"""
adapter = GetMyIntervalTimelineAdapter(hours=hours, limit=limit)
return await pipeline.run(adapter=adapter, http_request=request, db=db, mode=adapter.mode)
@router.get("/providers")
async def list_available_providers(request: Request, db: Session = Depends(get_db)):
adapter = ListAvailableProvidersAdapter()
@@ -676,6 +688,27 @@ class GetActiveRequestsAdapter(AuthenticatedApiAdapter):
return {"requests": requests}
@dataclass
class GetMyIntervalTimelineAdapter(AuthenticatedApiAdapter):
"""获取当前用户的请求间隔时间线适配器"""
hours: int
limit: int
async def handle(self, context): # type: ignore[override]
db = context.db
user = context.user
result = UsageService.get_interval_timeline(
db=db,
hours=self.hours,
limit=self.limit,
user_id=str(user.id),
)
return result
class ListAvailableProvidersAdapter(AuthenticatedApiAdapter):
async def handle(self, context): # type: ignore[override]
from sqlalchemy.orm import selectinload