Skip to content

Commit e18d7bb

Browse files
committed
Fix weekly runs showing total: include weekly_runs in data
1 parent 1d32a2b commit e18d7bb

File tree

5 files changed

+43
-41
lines changed

5 files changed

+43
-41
lines changed

web/src/app/api/agents/route.ts

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ const getCachedAgents = unstable_cache(
6363
.select({
6464
publisher_id: schema.agentRun.publisher_id,
6565
agent_name: schema.agentRun.agent_name,
66+
weekly_runs: sql<number>`COUNT(*)`,
6667
weekly_dollars: sql<number>`COALESCE(SUM(${schema.agentRun.total_credits}) / 100.0, 0)`,
6768
})
6869
.from(schema.agentRun)
@@ -111,6 +112,7 @@ const getCachedAgents = unstable_cache(
111112
publisher_id: schema.agentRun.publisher_id,
112113
agent_name: schema.agentRun.agent_name,
113114
agent_version: schema.agentRun.agent_version,
115+
weekly_runs: sql<number>`COUNT(*)`,
114116
weekly_dollars: sql<number>`COALESCE(SUM(${schema.agentRun.total_credits}) / 100.0, 0)`,
115117
})
116118
.from(schema.agentRun)
@@ -135,7 +137,10 @@ const getCachedAgents = unstable_cache(
135137
weeklyMetrics.forEach((metric) => {
136138
if (metric.publisher_id && metric.agent_name) {
137139
const key = `${metric.publisher_id}/${metric.agent_name}`
138-
weeklyMap.set(key, Number(metric.weekly_dollars))
140+
weeklyMap.set(key, {
141+
weekly_runs: Number(metric.weekly_runs),
142+
weekly_dollars: Number(metric.weekly_dollars),
143+
})
139144
}
140145
})
141146

@@ -144,8 +149,13 @@ const getCachedAgents = unstable_cache(
144149
usageMetrics.forEach((metric) => {
145150
if (metric.publisher_id && metric.agent_name) {
146151
const key = `${metric.publisher_id}/${metric.agent_name}`
152+
const weeklyData = weeklyMap.get(key) || {
153+
weekly_runs: 0,
154+
weekly_dollars: 0,
155+
}
147156
metricsMap.set(key, {
148-
weekly_dollars: weeklyMap.get(key) || 0,
157+
weekly_runs: weeklyData.weekly_runs,
158+
weekly_dollars: weeklyData.weekly_dollars,
149159
total_dollars: Number(metric.total_dollars),
150160
total_invocations: Number(metric.total_invocations),
151161
avg_cost_per_run: Number(metric.avg_cost_per_run),
@@ -160,7 +170,10 @@ const getCachedAgents = unstable_cache(
160170
perVersionWeeklyMetrics.forEach((metric) => {
161171
if (metric.publisher_id && metric.agent_name && metric.agent_version) {
162172
const key = `${metric.publisher_id}/${metric.agent_name}@${metric.agent_version}`
163-
perVersionWeeklyMap.set(key, Number(metric.weekly_dollars))
173+
perVersionWeeklyMap.set(key, {
174+
weekly_runs: Number(metric.weekly_runs),
175+
weekly_dollars: Number(metric.weekly_dollars),
176+
})
164177
}
165178
})
166179

@@ -169,8 +182,13 @@ const getCachedAgents = unstable_cache(
169182
perVersionMetrics.forEach((metric) => {
170183
if (metric.publisher_id && metric.agent_name && metric.agent_version) {
171184
const key = `${metric.publisher_id}/${metric.agent_name}@${metric.agent_version}`
185+
const weeklyData = perVersionWeeklyMap.get(key) || {
186+
weekly_runs: 0,
187+
weekly_dollars: 0,
188+
}
172189
perVersionMetricsMap.set(key, {
173-
weekly_dollars: perVersionWeeklyMap.get(key) || 0,
190+
weekly_runs: weeklyData.weekly_runs,
191+
weekly_dollars: weeklyData.weekly_dollars,
174192
total_dollars: Number(metric.total_dollars),
175193
total_invocations: Number(metric.total_invocations),
176194
avg_cost_per_run: Number(metric.avg_cost_per_run),
@@ -212,6 +230,7 @@ const getCachedAgents = unstable_cache(
212230
({ agent, agentData, agentName }) => {
213231
const agentKey = `${agent.publisher.id}/${agentName}`
214232
const metrics = metricsMap.get(agentKey) || {
233+
weekly_runs: 0,
215234
weekly_dollars: 0,
216235
total_dollars: 0,
217236
total_invocations: 0,
@@ -233,6 +252,7 @@ const getCachedAgents = unstable_cache(
233252
created_at: agent.created_at,
234253
// Aggregated stats across all versions (for agent store)
235254
usage_count: metrics.total_invocations,
255+
weekly_runs: metrics.weekly_runs,
236256
weekly_spent: metrics.weekly_dollars,
237257
total_spent: metrics.total_dollars,
238258
avg_cost_per_invocation: metrics.avg_cost_per_run,

web/src/app/publishers/[id]/agents/[agentId]/[version]/agent-usage-metrics.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@ interface AgentData {
1616
id: string
1717
}
1818
usage_count?: number
19+
weekly_runs?: number
1920
weekly_spent?: number
2021
avg_cost_per_invocation?: number
2122
unique_users?: number
2223
last_used?: string
2324
version_stats?: Record<
2425
string,
2526
{
27+
weekly_runs: number
2628
weekly_dollars: number
2729
total_dollars: number
2830
total_invocations: number
@@ -70,6 +72,7 @@ export const AgentUsageMetrics = ({
7072
const usageMetrics = version
7173
? agent?.version_stats?.[version]
7274
? {
75+
weekly_runs: agent.version_stats[version].weekly_runs,
7376
weekly_spent: agent.version_stats[version].weekly_dollars,
7477
usage_count: agent.version_stats[version].total_invocations,
7578
avg_cost_per_invocation:
@@ -78,6 +81,7 @@ export const AgentUsageMetrics = ({
7881
last_used: agent.version_stats[version].last_used?.toString(),
7982
}
8083
: {
84+
weekly_runs: 0,
8185
weekly_spent: 0,
8286
usage_count: 0,
8387
avg_cost_per_invocation: 0,
@@ -105,15 +109,24 @@ export const AgentUsageMetrics = ({
105109

106110
return (
107111
<div>
108-
<div className="grid grid-cols-1 xs:grid-cols-2 lg:grid-cols-4 gap-4 sm:gap-6">
112+
<div className="grid grid-cols-2 xs:grid-cols-3 lg:grid-cols-5 gap-4 sm:gap-6">
109113
<div className="flex flex-col items-center gap-2">
110114
<div className="flex items-center gap-2">
111115
<TrendingUp className="h-4 w-4 text-emerald-400" />
112116
<span className="font-medium text-emerald-300">
113117
{formatCurrency(usageMetrics.weekly_spent)}
114118
</span>
115119
</div>
116-
<span className="text-xs text-muted-foreground">Weekly Usage</span>
120+
<span className="text-xs text-muted-foreground">Weekly Spend</span>
121+
</div>
122+
<div className="flex flex-col items-center gap-2">
123+
<div className="flex items-center gap-2">
124+
<Play className="h-4 w-4 text-blue-400" />
125+
<span className="font-medium text-blue-300">
126+
{formatUsageCount(usageMetrics.weekly_runs)}
127+
</span>
128+
</div>
129+
<span className="text-xs text-muted-foreground">Weekly Runs</span>
117130
</div>
118131
<div className="flex flex-col items-center gap-2">
119132
<div className="flex items-center gap-2">

web/src/app/store/agents-data.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ interface AgentData {
1414
version: string
1515
created_at: string
1616
usage_count?: number
17+
weekly_runs?: number
1718
weekly_spent?: number
1819
total_spent?: number
1920
avg_cost_per_invocation?: number
@@ -28,7 +29,7 @@ export const getAgentsData = unstable_cache(
2829
async (): Promise<AgentData[]> => {
2930
const baseUrl =
3031
process.env.NEXT_PUBLIC_CODEBUFF_APP_URL || 'http://localhost:3000'
31-
32+
3233
try {
3334
const response = await fetch(`${baseUrl}/api/agents`, {
3435
headers: {

web/src/app/store/page.tsx

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -3,39 +3,6 @@ import { Suspense } from 'react'
33
import AgentStoreClient from './store-client'
44
import { getAgentsData } from './agents-data'
55

6-
// Types
7-
interface AgentData {
8-
id: string
9-
name: string
10-
description?: string
11-
publisher: {
12-
id: string
13-
name: string
14-
verified: boolean
15-
avatar_url?: string | null
16-
}
17-
version: string
18-
created_at: string
19-
usage_count?: number
20-
weekly_spent?: number // In dollars
21-
total_spent?: number // In dollars
22-
avg_cost_per_invocation?: number // In dollars
23-
unique_users?: number
24-
last_used?: string
25-
version_stats?: Record<
26-
string,
27-
{
28-
weekly_dollars: number
29-
total_dollars: number
30-
total_invocations: number
31-
avg_cost_per_run: number
32-
unique_users: number
33-
last_used?: Date
34-
}
35-
>
36-
tags?: string[]
37-
}
38-
396
interface PublisherProfileResponse {
407
id: string
418
name: string

web/src/app/store/store-client.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ interface AgentData {
4747
version: string
4848
created_at: string
4949
usage_count?: number
50+
weekly_runs?: number
5051
weekly_spent?: number
5152
total_spent?: number
5253
avg_cost_per_invocation?: number
@@ -483,7 +484,7 @@ export default function AgentStoreClient({
483484
<div className="flex items-center gap-2">
484485
<Play className="h-4 w-4 text-muted-foreground" />
485486
<span className="font-semibold">
486-
{formatUsageCount(agent.usage_count)}
487+
{formatUsageCount(agent.weekly_runs)}
487488
</span>
488489
</div>
489490
<p className="text-xs text-muted-foreground">Weekly runs</p>

0 commit comments

Comments
 (0)