fix(review): U6 frontend field alignment + CLI top-users field fix
This commit is contained in:
parent
00c8386939
commit
278d76b381
|
|
@ -1403,7 +1403,6 @@ def usage_top_users(
|
|||
table = Table(title=f"Top {limit} Users by Tokens")
|
||||
table.add_column("Rank", style="cyan")
|
||||
table.add_column("User ID")
|
||||
table.add_column("Username")
|
||||
table.add_column("Requests")
|
||||
table.add_column("Tokens")
|
||||
table.add_column("Cost")
|
||||
|
|
@ -1411,7 +1410,6 @@ def usage_top_users(
|
|||
table.add_row(
|
||||
str(i),
|
||||
str(row.get("user_id", "")),
|
||||
str(row.get("username", "")),
|
||||
str(row.get("requests", "")),
|
||||
str(row.get("tokens", "")),
|
||||
str(row.get("cost", "")),
|
||||
|
|
|
|||
|
|
@ -86,9 +86,9 @@ export interface IUsageSummary {
|
|||
total_tokens: number
|
||||
total_cost: number
|
||||
total_requests: number
|
||||
by_model: Record<string, { tokens: number; cost: number; requests: number }>
|
||||
by_user: Record<string, { tokens: number; cost: number; requests: number }>
|
||||
by_department: Record<string, { tokens: number; cost: number; requests: number }>
|
||||
by_model: Record<string, { total_tokens: number; total_cost: number; count: number }>
|
||||
by_user: Record<string, { total_tokens: number; total_cost: number; count: number }>
|
||||
by_department: Record<string, { total_tokens: number; total_cost: number; count: number }>
|
||||
}
|
||||
|
||||
/** Usage timeseries bucket. */
|
||||
|
|
|
|||
|
|
@ -198,9 +198,9 @@ interface ISelectOption {
|
|||
|
||||
/** Per-bucket usage metric (matches ``IUsageSummary.by_*`` value shape). */
|
||||
interface IUsageMetric {
|
||||
tokens: number
|
||||
cost: number
|
||||
requests: number
|
||||
total_tokens: number
|
||||
total_cost: number
|
||||
count: number
|
||||
}
|
||||
|
||||
/** Flattened per-department usage row (derived from ``IUsageSummary.by_department``). */
|
||||
|
|
@ -247,9 +247,9 @@ const deptRows = computed<IDeptUsageRow[]>(() => {
|
|||
const map: Record<string, IUsageMetric> = summary.value?.by_department ?? {}
|
||||
return Object.entries(map).map(([departmentId, v]) => ({
|
||||
department_id: departmentId,
|
||||
tokens: v.tokens,
|
||||
cost: v.cost,
|
||||
requests: v.requests,
|
||||
tokens: v.total_tokens,
|
||||
cost: v.total_cost,
|
||||
requests: v.count,
|
||||
}))
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -722,7 +722,6 @@ class TestUsageCommands:
|
|||
mock_client.get.return_value = [
|
||||
{
|
||||
"user_id": "user-1",
|
||||
"username": "alice",
|
||||
"requests": 100,
|
||||
"tokens": 50000,
|
||||
"cost": 1.5,
|
||||
|
|
@ -730,7 +729,7 @@ class TestUsageCommands:
|
|||
]
|
||||
result = runner.invoke(admin_app, ["usage", "top-users", "--limit", "5"])
|
||||
assert result.exit_code == 0
|
||||
assert "alice" in result.stdout
|
||||
assert "user-1" in result.stdout
|
||||
params = mock_client.get.call_args.kwargs["params"]
|
||||
assert params["limit"] == 5
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue