feat(dashboard): add time-frame filtering and used-models-only pricing
Some checks failed
CI / Check (push) Has been cancelled
CI / Clippy (push) Has been cancelled
CI / Formatting (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Release Build (push) Has been cancelled

- All usage endpoints now accept ?period=today|24h|7d|30d|all|custom
  with optional &from=ISO&to=ISO for custom ranges
- Time-series chart adapts granularity: hourly for today/24h, daily for
  7d/30d/all
- Analytics and Costs pages have period selector buttons with custom
  date-range picker
- Pricing table on Costs page now only shows models that have actually
  been used (GET /models?used_only=true)
- Cache-bust version bumped to v=6
This commit is contained in:
2026-03-02 15:29:23 -05:00
parent 54c45cbfca
commit 5bf41be343
7 changed files with 498 additions and 144 deletions

View File

@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LLM Proxy Gateway - Admin Dashboard</title>
<link rel="stylesheet" href="/css/dashboard.css?v=5">
<link rel="stylesheet" href="/css/dashboard.css?v=6">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link rel="icon" href="img/logo-icon.png" type="image/png" sizes="any">
<link rel="apple-touch-icon" href="img/logo-icon.png">
@@ -166,19 +166,19 @@
</div>
<!-- Scripts (cache-busted with version query params) -->
<script src="/js/api.js?v=5"></script>
<script src="/js/auth.js?v=5"></script>
<script src="/js/dashboard.js?v=5"></script>
<script src="/js/websocket.js?v=5"></script>
<script src="/js/charts.js?v=5"></script>
<script src="/js/pages/overview.js?v=5"></script>
<script src="/js/pages/analytics.js?v=5"></script>
<script src="/js/pages/costs.js?v=5"></script>
<script src="/js/pages/clients.js?v=5"></script>
<script src="/js/pages/providers.js?v=5"></script>
<script src="/js/pages/models.js?v=5"></script>
<script src="/js/pages/monitoring.js?v=5"></script>
<script src="/js/pages/settings.js?v=5"></script>
<script src="/js/pages/logs.js?v=5"></script>
<script src="/js/api.js?v=6"></script>
<script src="/js/auth.js?v=6"></script>
<script src="/js/dashboard.js?v=6"></script>
<script src="/js/websocket.js?v=6"></script>
<script src="/js/charts.js?v=6"></script>
<script src="/js/pages/overview.js?v=6"></script>
<script src="/js/pages/analytics.js?v=6"></script>
<script src="/js/pages/costs.js?v=6"></script>
<script src="/js/pages/clients.js?v=6"></script>
<script src="/js/pages/providers.js?v=6"></script>
<script src="/js/pages/models.js?v=6"></script>
<script src="/js/pages/monitoring.js?v=6"></script>
<script src="/js/pages/settings.js?v=6"></script>
<script src="/js/pages/logs.js?v=6"></script>
</body>
</html>