feat: Token-Nutzung nach Quelle (Monitor/Globe) aufgeschluesselt
- Backend liefert usage_by_source im current-Endpoint - Monatliche Tabelle zeigt Quelle-Badge (Monitor/Globe) - Source-Split unter den Kosten-KPIs sichtbar Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -606,6 +606,14 @@ async function loadOrgTokenUsage(orgId) {
|
||||
el('tokenBudgetUsd', budget.token_budget_usd != null ? '$' + Number(budget.token_budget_usd).toFixed(2) : '-');
|
||||
el('tokenCostUsd', usage.total_cost_usd != null ? '$' + Number(usage.total_cost_usd).toFixed(2) : '-');
|
||||
|
||||
// Source-Split anzeigen
|
||||
var bySource = current.usage_by_source || {};
|
||||
var splitHtml = '';
|
||||
if (bySource.monitor) splitHtml += '<span class="source-badge badge-monitor">Monitor</span> $' + Number(bySource.monitor.total_cost_usd).toFixed(2) + ' (' + bySource.monitor.api_calls + ' Calls) ';
|
||||
if (bySource.globe) splitHtml += '<span class="source-badge badge-globe">Globe</span> $' + Number(bySource.globe.total_cost_usd).toFixed(2) + ' (' + bySource.globe.api_calls + ' Calls)';
|
||||
var splitEl = document.getElementById('tokenSourceSplit');
|
||||
if (splitEl) splitEl.innerHTML = splitHtml;
|
||||
|
||||
const bar = document.getElementById('tokenBudgetBar');
|
||||
const percentEl = document.getElementById('tokenBudgetPercent');
|
||||
const percent = budget.credits_percent_used || 0;
|
||||
@@ -622,8 +630,11 @@ async function loadOrgTokenUsage(orgId) {
|
||||
const tbody = document.getElementById('tokenMonthlyTable');
|
||||
if (tbody) {
|
||||
tbody.innerHTML = monthly.map(function(m) {
|
||||
var srcLabel = (m.source || 'monitor') === 'globe' ? 'Globe' : 'Monitor';
|
||||
var srcClass = (m.source || 'monitor') === 'globe' ? 'badge-globe' : 'badge-monitor';
|
||||
return '<tr>' +
|
||||
'<td>' + esc(m.year_month) + '</td>' +
|
||||
'<td><span class="source-badge ' + srcClass + '">' + srcLabel + '</span></td>' +
|
||||
'<td>' + m.refresh_count + '</td>' +
|
||||
'<td>' + m.api_calls.toLocaleString('de-DE') + '</td>' +
|
||||
'<td>' + m.input_tokens.toLocaleString('de-DE') + '</td>' +
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren