fix: use real usage tracking in usage page

This commit is contained in:
2026-03-04 12:22:39 -08:00
parent 4c65c520fd
commit 6d3bac8c19

View File

@@ -597,6 +597,28 @@ function initAgentsPage() {
// ============ USAGE ============
async function loadUsage() {
// Try real usage first, fallback to tracked usage
try {
const realRes = await fetch("/api/usage/real");
if (realRes.ok) {
const realData = await realRes.json();
usageStats = {
totalRequests: Object.values(realData.models || {}).reduce((sum, m) => sum + (m.requests || 0), 0),
totalTokens: realData.totals?.total || 0,
totalCost: realData.totals?.cost || 0,
agents: realData.agents,
models: realData.models
};
renderUsageStats();
if (typeof renderRealUsageCharts === 'function') {
renderRealUsageCharts(realData);
}
return;
}
} catch (e) {
console.warn("Real usage not available, falling back");
}
const from = document.getElementById('usage-from')?.value;
const to = document.getElementById('usage-to')?.value;
@@ -621,7 +643,47 @@ async function loadUsage() {
}
}
function renderUsageStats() {
function renderRealUsageCharts(data) {
if (typeof Chart === 'undefined') return;
// Agent chart
const agentCanvas = document.getElementById('chart-agent');
if (agentCanvas && data.agents) {
const agents = Object.entries(data.agents)
.filter(([_, v]) => v.total > 0)
.sort((a, b) => b[1].total - a[1].total)
.slice(0, 10);
new Chart(agentCanvas, {
type: 'bar',
data: {
labels: agents.map(([k]) => k),
datasets: [{
label: 'Tokens',
data: agents.map(([_, v]) => v.total),
backgroundColor: 'rgba(54, 162, 235, 0.6)'
}]
},
options: {
responsive: true,
indexAxis: 'y'
}
});
}
// Provider grid
const grid = document.getElementById('provider-grid');
if (grid && data.models) {
grid.innerHTML = Object.entries(data.models)
.map(([model, stats]) => `
<div class="provider-card">
<h4>${model}</h4>
<p>Requests: ${stats.requests || 0}</p>
<p>Tokens: ${(stats.input || 0) + (stats.output || 0)}</p>
</div>
`).join('');
}
}
const requestsEl = document.getElementById('stat-requests');
const tokensEl = document.getElementById('stat-tokens');
const costEl = document.getElementById('stat-cost');