Skip to content

Commit b687583

Browse files
committed
chore(code-review): drop review flags
1 parent d52e923 commit b687583

30 files changed

Lines changed: 18145 additions & 1480 deletions

File tree

apps/web/src/app/(app)/code-reviews/[reviewId]/CodeReviewDetailClient.tsx

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -179,11 +179,6 @@ export function CodeReviewDetailClient({ reviewId }: CodeReviewDetailClientProps
179179
</div>
180180
</div>
181181
<div className="flex items-center gap-2">
182-
{review.agent_version && (
183-
<Badge variant="outline" className="mt-1 text-xs whitespace-nowrap">
184-
{review.agent_version}
185-
</Badge>
186-
)}
187182
<Badge variant={statusInfo.variant} className="mt-1 gap-1.5 text-sm whitespace-nowrap">
188183
<StatusIcon className={`h-4 w-4 ${status === 'running' ? 'animate-spin' : ''}`} />
189184
{statusInfo.label}

apps/web/src/app/admin/api/code-reviews/hooks.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ export type FilterParams = {
99
userId?: string;
1010
organizationId?: string;
1111
ownershipType?: 'all' | 'personal' | 'organization';
12-
agentVersion?: 'all' | 'v1' | 'v2';
1312
};
1413

1514
export function useCodeReviewOverviewStats(params: FilterParams) {

apps/web/src/app/admin/code-reviews/page.tsx

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ const breadcrumbs = (
3535

3636
type RangeType = '7d' | '30d' | '90d';
3737
type OwnershipType = 'all' | 'personal' | 'organization';
38-
type AgentVersionType = 'all' | 'v1' | 'v2';
3938

4039
type SelectedUser = {
4140
id: string;
@@ -59,7 +58,6 @@ export default function CodeReviewsPage() {
5958

6059
// Filter state
6160
const [ownershipType, setOwnershipType] = useState<OwnershipType>('all');
62-
const [agentVersion, setAgentVersion] = useState<AgentVersionType>('all');
6361
const [selectedUser, setSelectedUser] = useState<SelectedUser | null>(null);
6462
const [selectedOrg, setSelectedOrg] = useState<SelectedOrg | null>(null);
6563

@@ -98,9 +96,8 @@ export default function CodeReviewsPage() {
9896
userId: selectedUser?.id,
9997
organizationId: selectedOrg?.id,
10098
ownershipType: selectedUser || selectedOrg ? undefined : ownershipType,
101-
agentVersion,
10299
}),
103-
[startDate, endDate, selectedUser, selectedOrg, ownershipType, agentVersion]
100+
[startDate, endDate, selectedUser, selectedOrg, ownershipType]
104101
);
105102

106103
// Queries
@@ -160,13 +157,11 @@ export default function CodeReviewsPage() {
160157
setSelectedUser(null);
161158
setSelectedOrg(null);
162159
setOwnershipType('all');
163-
setAgentVersion('all');
164160
setUserSearchQuery('');
165161
setOrgSearchQuery('');
166162
};
167163

168-
const hasActiveFilter =
169-
selectedUser || selectedOrg || ownershipType !== 'all' || agentVersion !== 'all';
164+
const hasActiveFilter = selectedUser || selectedOrg || ownershipType !== 'all';
170165

171166
// Handle CSV export
172167
const handleExport = useCallback(async () => {
@@ -272,24 +267,6 @@ export default function CodeReviewsPage() {
272267
))}
273268
</div>
274269

275-
{/* Agent Version Filter */}
276-
<div className="flex flex-wrap items-center gap-4">
277-
<span className="text-sm font-medium">Agent Version:</span>
278-
{(['all', 'v1', 'v2'] as AgentVersionType[]).map(version => (
279-
<label key={version} className="flex cursor-pointer items-center gap-2 text-sm">
280-
<input
281-
type="radio"
282-
name="agentVersion"
283-
value={version}
284-
checked={agentVersion === version}
285-
onChange={() => setAgentVersion(version)}
286-
className="h-4 w-4"
287-
/>
288-
{version === 'all' ? 'All Versions' : version.toUpperCase()}
289-
</label>
290-
))}
291-
</div>
292-
293270
{/* User/Org Search Filters */}
294271
<div className="flex flex-wrap items-start gap-4">
295272
{/* User Search */}
@@ -444,12 +421,7 @@ export default function CodeReviewsPage() {
444421
{dailyQuery.data && <CodeReviewDailyChart data={dailyQuery.data} />}
445422

446423
{/* Performance Trend */}
447-
{performanceQuery.data && (
448-
<CodeReviewPerformanceChart
449-
data={performanceQuery.data}
450-
agentVersion={agentVersion}
451-
/>
452-
)}
424+
{performanceQuery.data && <CodeReviewPerformanceChart data={performanceQuery.data} />}
453425

454426
{/* User Segmentation */}
455427
{segmentationQuery.data && (

apps/web/src/app/admin/components/CodeReviewErrorAnalysis.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@ function ErrorSessionsModal({
106106
<TableHead>Session ID</TableHead>
107107
<TableHead>User / Org</TableHead>
108108
<TableHead>Repo</TableHead>
109-
<TableHead>Version</TableHead>
110109
<TableHead>Timestamp</TableHead>
111110
</TableRow>
112111
</TableHeader>
@@ -138,7 +137,6 @@ function ErrorSessionsModal({
138137
<TableCell className="max-w-[200px] truncate text-xs">
139138
{session.repoFullName}#{session.prNumber}
140139
</TableCell>
141-
<TableCell className="text-xs">{session.agentVersion ?? '—'}</TableCell>
142140
<TableCell className="text-muted-foreground text-xs">
143141
{formatDate(session.createdAt)}
144142
</TableCell>

apps/web/src/app/admin/components/CodeReviewPerformanceChart.tsx

Lines changed: 43 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,21 @@ import { format, parseISO } from 'date-fns';
1515

1616
type PerformanceRow = {
1717
day: string;
18-
agentVersion: string;
1918
avgSeconds: number;
2019
p50Seconds: number;
2120
p90Seconds: number;
2221
count: number;
2322
};
2423

25-
type PivotedDataPoint = {
24+
type ChartDataPoint = {
2625
day: string;
27-
v1Avg?: number;
28-
v1P50?: number;
29-
v1P90?: number;
30-
v2Avg?: number;
31-
v2P50?: number;
32-
v2P90?: number;
26+
avg: number;
27+
p50: number;
28+
p90: number;
3329
};
3430

3531
type TooltipPayload = {
36-
payload: PivotedDataPoint;
32+
payload: ChartDataPoint;
3733
dataKey: string;
3834
value: number;
3935
name: string;
@@ -57,43 +53,14 @@ function formatSeconds(seconds: number | undefined): string {
5753
return `${(seconds / 3600).toFixed(1)}h`;
5854
}
5955

60-
/**
61-
* Pivot interleaved rows [{day, agentVersion, ...}] into one row per day
62-
* with v1/v2 columns for recharts.
63-
*/
64-
function pivotByDay(rows: PerformanceRow[]): PivotedDataPoint[] {
65-
const map = new Map<string, PivotedDataPoint>();
66-
for (const row of rows) {
67-
const existing = map.get(row.day) ?? { day: row.day };
68-
if (row.agentVersion === 'v1') {
69-
existing.v1Avg = row.avgSeconds;
70-
existing.v1P50 = row.p50Seconds;
71-
existing.v1P90 = row.p90Seconds;
72-
} else if (row.agentVersion === 'v2') {
73-
existing.v2Avg = row.avgSeconds;
74-
existing.v2P50 = row.p50Seconds;
75-
existing.v2P90 = row.p90Seconds;
76-
}
77-
map.set(row.day, existing);
78-
}
79-
return Array.from(map.values()).sort((a, b) => a.day.localeCompare(b.day));
80-
}
81-
82-
export function CodeReviewPerformanceChart({
83-
data,
84-
agentVersion,
85-
}: {
86-
data: PerformanceRow[];
87-
agentVersion: 'all' | 'v1' | 'v2';
88-
}) {
89-
const chartData = pivotByDay(data).map(row => ({
90-
...row,
56+
export function CodeReviewPerformanceChart({ data }: { data: PerformanceRow[] }) {
57+
const chartData = data.map(row => ({
58+
avg: row.avgSeconds,
59+
p50: row.p50Seconds,
60+
p90: row.p90Seconds,
9161
day: format(parseISO(row.day), 'MM/dd'),
9262
}));
9363

94-
const showV1 = agentVersion === 'all' || agentVersion === 'v1';
95-
const showV2 = agentVersion === 'all' || agentVersion === 'v2';
96-
9764
const CustomTooltip = ({ active, payload, label }: CustomTooltipProps) => {
9865
if (!active || !payload || payload.length === 0) return null;
9966
const d = payload[0]?.payload;
@@ -103,30 +70,13 @@ export function CodeReviewPerformanceChart({
10370
<div className="bg-background rounded-lg border p-3 shadow-sm">
10471
<p className="text-sm font-medium">{label}</p>
10572
<div className="mt-2 space-y-1">
106-
{showV1 && d.v1Avg != null && (
107-
<>
108-
<p className="text-xs font-medium text-blue-600">V1</p>
109-
<p className="text-xs">
110-
<span className="text-muted-foreground">Avg:</span> {formatSeconds(d.v1Avg)}
111-
{' / '}
112-
<span className="text-muted-foreground">P50:</span> {formatSeconds(d.v1P50)}
113-
{' / '}
114-
<span className="text-muted-foreground">P90:</span> {formatSeconds(d.v1P90)}
115-
</p>
116-
</>
117-
)}
118-
{showV2 && d.v2Avg != null && (
119-
<>
120-
<p className="text-xs font-medium text-emerald-600">V2</p>
121-
<p className="text-xs">
122-
<span className="text-muted-foreground">Avg:</span> {formatSeconds(d.v2Avg)}
123-
{' / '}
124-
<span className="text-muted-foreground">P50:</span> {formatSeconds(d.v2P50)}
125-
{' / '}
126-
<span className="text-muted-foreground">P90:</span> {formatSeconds(d.v2P90)}
127-
</p>
128-
</>
129-
)}
73+
<p className="text-xs">
74+
<span className="text-muted-foreground">Avg:</span> {formatSeconds(d.avg)}
75+
{' / '}
76+
<span className="text-muted-foreground">P50:</span> {formatSeconds(d.p50)}
77+
{' / '}
78+
<span className="text-muted-foreground">P90:</span> {formatSeconds(d.p90)}
79+
</p>
13080
</div>
13181
</div>
13282
);
@@ -175,68 +125,32 @@ export function CodeReviewPerformanceChart({
175125
/>
176126
<Tooltip content={<CustomTooltip />} />
177127
<Legend />
178-
179-
{showV1 && (
180-
<>
181-
<Line
182-
type="monotone"
183-
dataKey="v1P90"
184-
stroke="#93c5fd"
185-
strokeWidth={1}
186-
strokeDasharray="4 2"
187-
dot={false}
188-
name="V1 P90"
189-
/>
190-
<Line
191-
type="monotone"
192-
dataKey="v1Avg"
193-
stroke="#3b82f6"
194-
strokeWidth={2}
195-
dot={{ r: 2 }}
196-
name="V1 Avg"
197-
/>
198-
<Line
199-
type="monotone"
200-
dataKey="v1P50"
201-
stroke="#1d4ed8"
202-
strokeWidth={1}
203-
strokeDasharray="4 2"
204-
dot={false}
205-
name="V1 P50"
206-
/>
207-
</>
208-
)}
209-
210-
{showV2 && (
211-
<>
212-
<Line
213-
type="monotone"
214-
dataKey="v2P90"
215-
stroke="#6ee7b7"
216-
strokeWidth={1}
217-
strokeDasharray="4 2"
218-
dot={false}
219-
name="V2 P90"
220-
/>
221-
<Line
222-
type="monotone"
223-
dataKey="v2Avg"
224-
stroke="#10b981"
225-
strokeWidth={2}
226-
dot={{ r: 2 }}
227-
name="V2 Avg"
228-
/>
229-
<Line
230-
type="monotone"
231-
dataKey="v2P50"
232-
stroke="#047857"
233-
strokeWidth={1}
234-
strokeDasharray="4 2"
235-
dot={false}
236-
name="V2 P50"
237-
/>
238-
</>
239-
)}
128+
<Line
129+
type="monotone"
130+
dataKey="p90"
131+
stroke="#93c5fd"
132+
strokeWidth={1}
133+
strokeDasharray="4 2"
134+
dot={false}
135+
name="P90"
136+
/>
137+
<Line
138+
type="monotone"
139+
dataKey="avg"
140+
stroke="#3b82f6"
141+
strokeWidth={2}
142+
dot={{ r: 2 }}
143+
name="Avg"
144+
/>
145+
<Line
146+
type="monotone"
147+
dataKey="p50"
148+
stroke="#1d4ed8"
149+
strokeWidth={1}
150+
strokeDasharray="4 2"
151+
dot={false}
152+
name="P50"
153+
/>
240154
</ComposedChart>
241155
</ResponsiveContainer>
242156
</div>

0 commit comments

Comments
 (0)