Files
kefu/deploy/token-usage-20260917/admin_api.py.diff
T
2026-09-21 10:34:06 +08:00

44 lines
1.9 KiB
Diff

--- server/admin_api.py
+++ local/admin_api.py
@@ -35,5 +35,5 @@
from typing import Any, Callable
-from fastapi import Depends, FastAPI, HTTPException, Request, status
+from fastapi import Depends, FastAPI, HTTPException, Query, Request, status
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import FileResponse, RedirectResponse
@@ -883,4 +883,30 @@
)
+ @app.get("/api/v2/stats/model-usage")
+ async def model_usage_stats(
+ days: int = Query(default=7, ge=1, le=90),
+ purpose: str = Query(default="", pattern="^(chat|guard|knowledge)?$"),
+ provider_id: str = Query(default="", max_length=256),
+ model: str = Query(default="", max_length=512),
+ account_id: int | None = None,
+ principal: Principal = Depends(require("stats:read")),
+ ) -> dict:
+ return database.model_usage_stats(
+ days, resolve_admin_tenant(principal, account_id), purpose, provider_id, model)
+
+ @app.get("/api/v2/stats/model-usage/log")
+ async def model_usage_log(
+ days: int = Query(default=7, ge=1, le=90),
+ limit: int = Query(default=50, ge=1, le=200),
+ offset: int = Query(default=0, ge=0),
+ purpose: str = Query(default="", pattern="^(chat|guard|knowledge)?$"),
+ provider_id: str = Query(default="", max_length=256),
+ model: str = Query(default="", max_length=512),
+ account_id: int | None = None,
+ principal: Principal = Depends(require("stats:read")),
+ ) -> dict:
+ return database.list_model_usage(
+ days, limit, offset, resolve_admin_tenant(principal, account_id), purpose, provider_id, model)
+
# ── 桌面端配置 ───────────────────────────────────────────────────────
# 这一组是从老网页后台整体搬过来的("能力开关 / 模型与身份 / MCP 服务器"