From 018053db193ec56dcb6c34c312d92cb03d95542b Mon Sep 17 00:00:00 2001 From: Desmond Zhang Date: Sat, 2 May 2026 10:36:33 +1000 Subject: [PATCH] feat(usage): expanded daily stats with detailed token breakdown (#385) * feat(usage): expanded daily stats with detailed token breakdown * feat(usage): separate cache read and cache write in daily trend table --- packages/client/src/api/hermes/sessions.ts | 7 ++- .../components/hermes/usage/DailyTrend.vue | 63 +++++++++++-------- packages/client/src/i18n/locales/de.ts | 2 + packages/client/src/i18n/locales/en.ts | 2 + packages/client/src/i18n/locales/es.ts | 4 +- packages/client/src/i18n/locales/fr.ts | 2 + packages/client/src/i18n/locales/ja.ts | 2 + packages/client/src/i18n/locales/ko.ts | 2 + packages/client/src/i18n/locales/pt.ts | 2 + packages/client/src/i18n/locales/zh.ts | 2 + packages/client/src/stores/hermes/usage.ts | 7 ++- .../server/src/controllers/hermes/sessions.ts | 9 ++- packages/server/src/db/hermes/sessions-db.ts | 13 ++-- packages/server/src/db/hermes/usage-store.ts | 17 +++-- 14 files changed, 88 insertions(+), 46 deletions(-) diff --git a/packages/client/src/api/hermes/sessions.ts b/packages/client/src/api/hermes/sessions.ts index 785f0aa..e122a40 100644 --- a/packages/client/src/api/hermes/sessions.ts +++ b/packages/client/src/api/hermes/sessions.ts @@ -153,9 +153,12 @@ export interface UsageStatsResponse { }> daily_usage: Array<{ date: string - tokens: number - cache: number + input_tokens: number + output_tokens: number + cache_read_tokens: number + cache_write_tokens: number sessions: number + errors: number cost: number }> } diff --git a/packages/client/src/components/hermes/usage/DailyTrend.vue b/packages/client/src/components/hermes/usage/DailyTrend.vue index 630dd8f..44fdf19 100644 --- a/packages/client/src/components/hermes/usage/DailyTrend.vue +++ b/packages/client/src/components/hermes/usage/DailyTrend.vue @@ -1,4 +1,5 @@ +function cacheHitRate(d: { input_tokens: number; cache_read_tokens: number }): string { + const total = d.input_tokens + d.cache_read_tokens + if (total === 0) return '--' + return ((d.cache_read_tokens / total) * 100).toFixed(1) + '%' +} -