Jury evaluation UX overhaul + admin review features
All checks were successful
Build and Push Docker Image / build (push) Successful in 8m53s
All checks were successful
Build and Push Docker Image / build (push) Successful in 8m53s
- Fix project documents not displaying on jury project page (rewrote MultiWindowDocViewer to use file.listByProject) - Add working download/preview for project files via presigned URLs - Display project tags on jury project detail page - Add autosave for evaluation drafts (debounced 3s + save on unmount/beforeunload) - Support mixed criterion types: numeric scores, yes/no booleans, text responses, section headers - Replace inline criteria editor with rich EvaluationFormBuilder on admin round page - Remove COI dialog from evaluation page - Update AI summary service to handle boolean/text criteria (yes/no counts, text synthesis) - Update EvaluationSummaryCard to show boolean criteria bars and text responses - Add evaluation detail sheet on admin project page (click juror row to view full scores + feedback) - Add Recent Evaluations dashboard widget showing latest jury reviews Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -465,4 +465,37 @@ export const dashboardRouter = router({
|
||||
recentActivity,
|
||||
}
|
||||
}),
|
||||
|
||||
getRecentEvaluations: adminProcedure
|
||||
.input(z.object({ editionId: z.string(), limit: z.number().int().min(1).max(50).optional() }))
|
||||
.query(async ({ ctx, input }) => {
|
||||
const take = input.limit ?? 10
|
||||
|
||||
const evaluations = await ctx.prisma.evaluation.findMany({
|
||||
where: {
|
||||
status: 'SUBMITTED',
|
||||
assignment: {
|
||||
round: { competition: { programId: input.editionId } },
|
||||
},
|
||||
},
|
||||
orderBy: { submittedAt: 'desc' },
|
||||
take,
|
||||
select: {
|
||||
id: true,
|
||||
globalScore: true,
|
||||
binaryDecision: true,
|
||||
submittedAt: true,
|
||||
feedbackText: true,
|
||||
assignment: {
|
||||
select: {
|
||||
project: { select: { id: true, title: true } },
|
||||
round: { select: { id: true, name: true } },
|
||||
user: { select: { id: true, name: true, email: true } },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
return evaluations
|
||||
}),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user