From 7ff87888a364ae2e18115ae4a89a515bf3d6e54d Mon Sep 17 00:00:00 2001 From: skycurtain Date: Wed, 7 Oct 2026 20:56:47 +0800 Subject: [PATCH] =?UTF-8?q?fix(server):=20=E6=80=BB=E8=A7=88=20by=5Fkey=20?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=20member=5Fname=EF=BC=8C=E5=BD=92=E5=B1=9E?= =?UTF-8?q?=E6=8C=89=E6=88=90=E5=91=98=E8=A1=A8=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/server/src/routes/admin-usage.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/server/src/routes/admin-usage.ts b/apps/server/src/routes/admin-usage.ts index c007e15..7c5738f 100644 --- a/apps/server/src/routes/admin-usage.ts +++ b/apps/server/src/routes/admin-usage.ts @@ -49,6 +49,7 @@ const overviewSchema = z.object({ key_id: z.number().int(), token_name: z.string(), member_id: z.number().int().nullable(), + member_name: z.string().nullable(), status: z.string(), data_cutoff: z.number().int().nullable(), usage: usageTotals, @@ -184,11 +185,15 @@ export function adminUsageRoutes() { } >(); const keyMeta = await repos.keysExtra.listIdsWithCutoff(); + const memberNameById = new Map( + (await repos.members.listAll()).map((m) => [m.id, m.name]), + ); for (const k of keyMeta) { keyMap.set(k.id, { token_name: k.token_name, member_id: k.member_id, - member_name: null, + member_name: + k.member_id == null ? null : (memberNameById.get(k.member_id) ?? null), status: k.status, log_synced_at: k.log_synced_at, rows: [], @@ -207,6 +212,7 @@ export function adminUsageRoutes() { key_id, token_name: v.token_name, member_id: v.member_id, + member_name: v.member_name, status: v.status, data_cutoff: toUnixSec(v.log_synced_at), usage: sumUsage(v.rows, timeline),