From dac9006b3e0c9626619d4bdb08af6dd046b41348 Mon Sep 17 00:00:00 2001 From: Zhicheng Han <43314240+hanzckernel@users.noreply.github.com> Date: Thu, 30 Apr 2026 13:46:31 +0200 Subject: [PATCH] fix: align usage analytics with Hermes state db (#350) --- packages/client/src/api/hermes/sessions.ts | 9 +- .../hermes/usage/ModelBreakdown.vue | 4 +- packages/client/src/stores/hermes/usage.ts | 6 +- .../server/src/controllers/hermes/sessions.ts | 122 ++++----- packages/server/src/db/hermes/sessions-db.ts | 120 +++++++++ packages/server/src/db/hermes/usage-store.ts | 59 +++-- tests/client/usage-store.test.ts | 77 ++++++ tests/server/sessions-controller.test.ts | 70 ++++++ tests/server/sessions-routes.test.ts | 5 + tests/server/usage-analytics-db.test.ts | 232 ++++++++++++++++++ 10 files changed, 591 insertions(+), 113 deletions(-) create mode 100644 tests/client/usage-store.test.ts create mode 100644 tests/server/usage-analytics-db.test.ts diff --git a/packages/client/src/api/hermes/sessions.ts b/packages/client/src/api/hermes/sessions.ts index a545c61..eeba736 100644 --- a/packages/client/src/api/hermes/sessions.ts +++ b/packages/client/src/api/hermes/sessions.ts @@ -103,6 +103,8 @@ export interface UsageStatsResponse { total_reasoning_tokens: number total_sessions: number total_cost: number + total_api_calls?: number + period_days?: number model_usage: Array<{ model: string input_tokens: number @@ -121,8 +123,11 @@ export interface UsageStatsResponse { }> } -export async function fetchUsageStats(): Promise { - return request('/api/hermes/usage/stats') +export async function fetchUsageStats(days = 30): Promise { + const safeDays = Number.isFinite(days) ? Math.max(1, Math.floor(days)) : 30 + const params = new URLSearchParams() + params.set('days', String(safeDays)) + return request(`/api/hermes/usage/stats?${params}`) } export async function fetchSessionUsage(ids: string[]): Promise> { diff --git a/packages/client/src/components/hermes/usage/ModelBreakdown.vue b/packages/client/src/components/hermes/usage/ModelBreakdown.vue index e15437f..01984b9 100644 --- a/packages/client/src/components/hermes/usage/ModelBreakdown.vue +++ b/packages/client/src/components/hermes/usage/ModelBreakdown.vue @@ -1,9 +1,11 @@