diff --git a/src/app/(admin)/admin/rounds/[roundId]/page.tsx b/src/app/(admin)/admin/rounds/[roundId]/page.tsx
index f196e6f..05be48c 100644
--- a/src/app/(admin)/admin/rounds/[roundId]/page.tsx
+++ b/src/app/(admin)/admin/rounds/[roundId]/page.tsx
@@ -81,6 +81,7 @@ import {
Check,
ChevronsUpDown,
Search,
+ MoreHorizontal,
} from 'lucide-react'
import {
Command,
@@ -2331,6 +2332,14 @@ function IndividualAssignmentsTable({
onError: (err) => toast.error(err.message),
})
+ const resetEvalMutation = trpc.evaluation.resetEvaluation.useMutation({
+ onSuccess: () => {
+ utils.assignment.listByStage.invalidate({ roundId })
+ toast.success('Evaluation reset — juror can now start over')
+ },
+ onError: (err) => toast.error(err.message),
+ })
+
const createMutation = trpc.assignment.create.useMutation({
onSuccess: () => {
utils.assignment.listByStage.invalidate({ roundId })
@@ -2457,17 +2466,17 @@ function IndividualAssignmentsTable({
) : (
-
+
Juror
Project
Status
-
+ Actions
{assignments.map((a: any, idx: number) => (
@@ -2479,22 +2488,50 @@ function IndividualAssignmentsTable({
'text-[10px] justify-center',
a.evaluation?.status === 'SUBMITTED'
? 'bg-emerald-50 text-emerald-700 border-emerald-200'
- : a.evaluation?.status === 'IN_PROGRESS'
+ : a.evaluation?.status === 'DRAFT'
? 'bg-blue-50 text-blue-700 border-blue-200'
: 'bg-gray-50 text-gray-600 border-gray-200',
)}
>
{a.evaluation?.status || 'PENDING'}
-
+
+
+
+
+
+ {a.evaluation && (
+ <>
+ {
+ if (confirm(`Reset evaluation by ${a.user?.name || a.user?.email} for "${a.project?.title}"? This will erase all scores and feedback so they can start over.`)) {
+ resetEvalMutation.mutate({ assignmentId: a.id })
+ }
+ }}
+ disabled={resetEvalMutation.isPending}
+ >
+
+ Reset Evaluation
+
+
+ >
+ )}
+ {
+ if (confirm(`Remove assignment for ${a.user?.name || a.user?.email} on "${a.project?.title}"?`)) {
+ deleteMutation.mutate({ id: a.id })
+ }
+ }}
+ disabled={deleteMutation.isPending}
+ >
+
+ Delete Assignment
+
+
+
))}
diff --git a/src/app/(jury)/jury/competitions/[roundId]/projects/[projectId]/evaluate/page.tsx b/src/app/(jury)/jury/competitions/[roundId]/projects/[projectId]/evaluate/page.tsx
index 1927fb9..0832e02 100644
--- a/src/app/(jury)/jury/competitions/[roundId]/projects/[projectId]/evaluate/page.tsx
+++ b/src/app/(jury)/jury/competitions/[roundId]/projects/[projectId]/evaluate/page.tsx
@@ -14,6 +14,7 @@ import { Skeleton } from '@/components/ui/skeleton'
import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group'
import { cn } from '@/lib/utils'
import { MultiWindowDocViewer } from '@/components/jury/multi-window-doc-viewer'
+import { Badge } from '@/components/ui/badge'
import { ArrowLeft, Save, Send, AlertCircle, ThumbsUp, ThumbsDown, Clock, CheckCircle2 } from 'lucide-react'
import { toast } from 'sonner'
import type { EvaluationConfig } from '@/types/competition-configs'
@@ -433,7 +434,21 @@ export default function JuryEvaluatePage({ params: paramsPromise }: PageProps) {
Evaluate Project
-
{project.title}
+
+
{project.title}
+ {project.competitionCategory && (
+
+ {project.competitionCategory === 'STARTUP' ? 'Startup' : 'Business Concept'}
+
+ )}
+
diff --git a/src/app/(jury)/jury/competitions/[roundId]/projects/[projectId]/page.tsx b/src/app/(jury)/jury/competitions/[roundId]/projects/[projectId]/page.tsx
index 9f1abc7..4ffcd94 100644
--- a/src/app/(jury)/jury/competitions/[roundId]/projects/[projectId]/page.tsx
+++ b/src/app/(jury)/jury/competitions/[roundId]/projects/[projectId]/page.tsx
@@ -95,15 +95,24 @@ export default function JuryProjectDetailPage() {