diff --git a/server/pagination.mjs b/server/pagination.mjs index c6b68f2..26bfabd 100644 --- a/server/pagination.mjs +++ b/server/pagination.mjs @@ -156,7 +156,7 @@ export async function listUsagePaged(pool, query) { ); const [rows] = await pool.query( `SELECT r.id, r.user_id, u.username, u.display_name, r.agent_session_id, r.request_id, - r.input_tokens, r.output_tokens, r.cost_cents, r.balance_after_cents, r.created_at + r.input_tokens, r.output_tokens, r.cost_cents, r.balance_after_cents, r.billing_source, r.created_at FROM h5_usage_records r JOIN h5_users u ON u.id = r.user_id ${where} @@ -176,6 +176,7 @@ export async function listUsagePaged(pool, query) { outputTokens: Number(row.output_tokens), costCents: Number(row.cost_cents), balanceAfterCents: Number(row.balance_after_cents), + billingSource: row.billing_source ?? 'wallet', createdAt: Number(row.created_at), })), total: Number(total), diff --git a/src/admin/pages/BillingPage.tsx b/src/admin/pages/BillingPage.tsx index 7a9eaa4..2e1054f 100644 --- a/src/admin/pages/BillingPage.tsx +++ b/src/admin/pages/BillingPage.tsx @@ -450,6 +450,11 @@ function UsageRecordsTable({ result: PagedResult; onPage: (page: number) => void; }) { + const formatBillingSource = (row: UsageRecord) => { + if (row.billingSource === 'subscription') return '套餐额度'; + return `¥${formatYuan(row.costCents)}`; + }; + return ( <>
@@ -474,8 +479,10 @@ function UsageRecordsTable({ {row.inputTokens.toLocaleString()} {row.outputTokens.toLocaleString()} - ¥{formatYuan(row.costCents)} - ¥{formatYuan(row.balanceAfterCents)} + {formatBillingSource(row)} + + {row.billingSource === 'subscription' ? '—' : `¥${formatYuan(row.balanceAfterCents)}`} + ))} diff --git a/src/admin/pages/DashboardPage.tsx b/src/admin/pages/DashboardPage.tsx index 300f5a5..066d573 100644 --- a/src/admin/pages/DashboardPage.tsx +++ b/src/admin/pages/DashboardPage.tsx @@ -238,7 +238,9 @@ export function DashboardPage() { in {row.inputTokens} / out {row.outputTokens} - ¥{formatYuan(row.costCents)} + + {row.billingSource === 'subscription' ? '套餐额度' : `¥${formatYuan(row.costCents)}`} + )) )} diff --git a/src/types.ts b/src/types.ts index f14046c..c85e56e 100644 --- a/src/types.ts +++ b/src/types.ts @@ -244,6 +244,7 @@ export type UsageRecord = { outputTokens: number; costCents: number; balanceAfterCents: number; + billingSource: 'wallet' | 'subscription'; createdAt: number; };