mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-25 13:45:03 +08:00
feat(frontend): update usage types and API for pagination support
Types (usage.ts): - Add isStreaming, firstTokenMs, durationMs to RequestLog - Add PaginatedLogs interface with data, total, page, pageSize - Change LogFilters: providerId -> appType + providerName API (usage.ts): - Change getRequestLogs params from limit/offset to page/pageSize - Return PaginatedLogs instead of RequestLog[] - Pass filters object directly to backend Query (usage.ts): - Update usageKeys.logs key generation for pagination - Update useRequestLogs hook signature
This commit is contained in:
+7
-10
@@ -8,6 +8,7 @@ import type {
|
||||
LogFilters,
|
||||
ModelPricing,
|
||||
ProviderLimitStatus,
|
||||
PaginatedLogs,
|
||||
} from "@/types/usage";
|
||||
import type { UsageResult } from "@/types";
|
||||
import type { AppId } from "./types";
|
||||
@@ -62,17 +63,13 @@ export const usageApi = {
|
||||
|
||||
getRequestLogs: async (
|
||||
filters: LogFilters,
|
||||
limit: number = 50,
|
||||
offset: number = 0,
|
||||
): Promise<RequestLog[]> => {
|
||||
page: number = 0,
|
||||
pageSize: number = 20,
|
||||
): Promise<PaginatedLogs> => {
|
||||
return invoke("get_request_logs", {
|
||||
providerId: filters.providerId,
|
||||
model: filters.model,
|
||||
statusCode: filters.statusCode,
|
||||
startDate: filters.startDate,
|
||||
endDate: filters.endDate,
|
||||
limit,
|
||||
offset,
|
||||
filters,
|
||||
page,
|
||||
pageSize,
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ export const usageKeys = {
|
||||
trends: (days: number) => [...usageKeys.all, "trends", days] as const,
|
||||
providerStats: () => [...usageKeys.all, "provider-stats"] as const,
|
||||
modelStats: () => [...usageKeys.all, "model-stats"] as const,
|
||||
logs: (filters: LogFilters, limit: number, offset: number) =>
|
||||
[...usageKeys.all, "logs", filters, limit, offset] as const,
|
||||
logs: (filters: LogFilters, page: number, pageSize: number) =>
|
||||
[...usageKeys.all, "logs", filters, page, pageSize] as const,
|
||||
detail: (requestId: string) =>
|
||||
[...usageKeys.all, "detail", requestId] as const,
|
||||
pricing: () => [...usageKeys.all, "pricing"] as const,
|
||||
@@ -50,12 +50,12 @@ export function useModelStats() {
|
||||
|
||||
export function useRequestLogs(
|
||||
filters: LogFilters,
|
||||
limit: number = 50,
|
||||
offset: number = 0,
|
||||
page: number = 0,
|
||||
pageSize: number = 20,
|
||||
) {
|
||||
return useQuery({
|
||||
queryKey: usageKeys.logs(filters, limit, offset),
|
||||
queryFn: () => usageApi.getRequestLogs(filters, limit, offset),
|
||||
queryKey: usageKeys.logs(filters, page, pageSize),
|
||||
queryFn: () => usageApi.getRequestLogs(filters, page, pageSize),
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
+12
-1
@@ -22,12 +22,22 @@ export interface RequestLog {
|
||||
cacheReadCostUsd: string;
|
||||
cacheCreationCostUsd: string;
|
||||
totalCostUsd: string;
|
||||
isStreaming: boolean;
|
||||
latencyMs: number;
|
||||
firstTokenMs?: number;
|
||||
durationMs?: number;
|
||||
statusCode: number;
|
||||
errorMessage?: string;
|
||||
createdAt: number;
|
||||
}
|
||||
|
||||
export interface PaginatedLogs {
|
||||
data: RequestLog[];
|
||||
total: number;
|
||||
page: number;
|
||||
pageSize: number;
|
||||
}
|
||||
|
||||
export interface ModelPricing {
|
||||
modelId: string;
|
||||
displayName: string;
|
||||
@@ -77,7 +87,8 @@ export interface ModelStats {
|
||||
}
|
||||
|
||||
export interface LogFilters {
|
||||
providerId?: string;
|
||||
appType?: string;
|
||||
providerName?: string;
|
||||
model?: string;
|
||||
statusCode?: number;
|
||||
startDate?: number;
|
||||
|
||||
Reference in New Issue
Block a user