From 4a10eb60138b7ea1ce10b94db326e84234af0f88 Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Wed, 8 Jul 2026 22:58:11 +0300 Subject: [PATCH] UI update changed --- packages/tracker/meshnet_tracker/billing.py | 25 +- .../tracker/meshnet_tracker/dashboard.html | 536 +++++++++++++----- .../meshnet_tracker/model_presets.json | 32 ++ packages/tracker/meshnet_tracker/server.py | 37 +- tests/test_accounts.py | 14 + tests/test_dashboard.py | 34 +- tests/test_hf_pricing.py | 21 + 7 files changed, 541 insertions(+), 158 deletions(-) diff --git a/packages/tracker/meshnet_tracker/billing.py b/packages/tracker/meshnet_tracker/billing.py index 0a87865..d3e9442 100644 --- a/packages/tracker/meshnet_tracker/billing.py +++ b/packages/tracker/meshnet_tracker/billing.py @@ -453,13 +453,12 @@ class BillingLedger: with self._lock: return self._node_pending.get(wallet, 0.0) - def usage_for(self, api_keys: list[str], *, recent_limit: int | None = None) -> dict: - """Aggregate charge history for a set of API keys (dashboard view).""" + def usage_totals_for(self, api_keys: list[str]) -> dict: + """Aggregate charge totals without per-request records (dashboard summary).""" keys = set(api_keys) requests = 0 total_tokens = 0 total_cost = 0.0 - records: list[dict] = [] with self._lock: for event in self._event_log: if event.get("type") != "charge" or event.get("api_key") not in keys: @@ -467,6 +466,20 @@ class BillingLedger: requests += 1 total_tokens += int(event.get("total_tokens", 0)) total_cost += float(event.get("cost", 0.0)) + return { + "requests": requests, + "total_tokens": total_tokens, + "total_cost": total_cost, + } + + def usage_for(self, api_keys: list[str], *, recent_limit: int | None = None) -> dict: + """Aggregate charge history for a set of API keys (dashboard view).""" + keys = set(api_keys) + records: list[dict] = [] + with self._lock: + for event in self._event_log: + if event.get("type") != "charge" or event.get("api_key") not in keys: + continue records.append({ "api_key": event["api_key"], "model": event.get("model"), @@ -476,9 +489,9 @@ class BillingLedger: }) recent = records[-recent_limit:] if recent_limit is not None else records return { - "requests": requests, - "total_tokens": total_tokens, - "total_cost": total_cost, + "requests": len(records), + "total_tokens": sum(int(r.get("total_tokens", 0)) for r in records), + "total_cost": sum(float(r.get("cost", 0.0)) for r in records), "records": records, "recent": recent, } diff --git a/packages/tracker/meshnet_tracker/dashboard.html b/packages/tracker/meshnet_tracker/dashboard.html index a302228..ea30ac6 100644 --- a/packages/tracker/meshnet_tracker/dashboard.html +++ b/packages/tracker/meshnet_tracker/dashboard.html @@ -219,6 +219,7 @@

meshnet tracker

+