UI update changed
This commit is contained in:
@@ -2707,6 +2707,8 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
|
||||
self._handle_billing_summary()
|
||||
elif parsed.path == "/v1/billing/settlements":
|
||||
self._handle_billing_settlements()
|
||||
elif parsed.path == "/v1/account/usage":
|
||||
self._handle_account_usage(parsed)
|
||||
elif parsed.path == "/v1/account":
|
||||
self._handle_account_me()
|
||||
elif parsed.path == "/v1/admin/accounts":
|
||||
@@ -4536,7 +4538,7 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
|
||||
self._send_json(200, {"ok": True}, headers={"Set-Cookie": _session_cookie_header(None)})
|
||||
|
||||
def _handle_account_me(self):
|
||||
"""Balance, usage, and API keys for the logged-in account."""
|
||||
"""Balance, usage totals, and API keys for the logged-in account."""
|
||||
server: _TrackerHTTPServer = self.server # type: ignore[assignment]
|
||||
if self._require_accounts() is None:
|
||||
return
|
||||
@@ -4546,10 +4548,10 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
|
||||
return
|
||||
keys = server.accounts.keys_for(account["account_id"]) # type: ignore[union-attr]
|
||||
balances = {}
|
||||
usage: dict = {"requests": 0, "total_tokens": 0, "total_cost": 0.0, "recent": [], "records": []}
|
||||
usage: dict = {"requests": 0, "total_tokens": 0, "total_cost": 0.0}
|
||||
if server.billing is not None:
|
||||
balances = {key: server.billing.get_client_balance(key) for key in keys}
|
||||
usage = server.billing.usage_for(keys)
|
||||
usage = server.billing.usage_totals_for(keys)
|
||||
self._send_json(200, {
|
||||
"account": account,
|
||||
"api_keys": keys,
|
||||
@@ -4559,6 +4561,35 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
|
||||
"topup_amount": server.devnet_topup_amount if server.billing is not None else 0.0,
|
||||
})
|
||||
|
||||
def _handle_account_usage(self, parsed: urllib.parse.ParseResult):
|
||||
"""Per-request charge history for the logged-in account (billing tab)."""
|
||||
server: _TrackerHTTPServer = self.server # type: ignore[assignment]
|
||||
if self._require_accounts() is None:
|
||||
return
|
||||
account = self._session_account()
|
||||
if account is None:
|
||||
self._send_json(401, {"error": "login required"})
|
||||
return
|
||||
keys = server.accounts.keys_for(account["account_id"]) # type: ignore[union-attr]
|
||||
if server.billing is None:
|
||||
self._send_json(200, {
|
||||
"requests": 0,
|
||||
"total_tokens": 0,
|
||||
"total_cost": 0.0,
|
||||
"records": [],
|
||||
"recent": [],
|
||||
})
|
||||
return
|
||||
limit = None
|
||||
raw_limit = urllib.parse.parse_qs(parsed.query).get("limit", [None])[0]
|
||||
if raw_limit is not None:
|
||||
try:
|
||||
limit = max(1, int(raw_limit))
|
||||
except ValueError:
|
||||
self._send_json(400, {"error": "limit must be an integer"})
|
||||
return
|
||||
self._send_json(200, server.billing.usage_for(keys, recent_limit=limit))
|
||||
|
||||
def _handle_account_profile(self):
|
||||
accounts = self._require_accounts()
|
||||
if accounts is None:
|
||||
|
||||
Reference in New Issue
Block a user