diff --git a/src/components/admin/round/ranking-dashboard.tsx b/src/components/admin/round/ranking-dashboard.tsx index 403fc47..46789dd 100644 --- a/src/components/admin/round/ranking-dashboard.tsx +++ b/src/components/admin/round/ranking-dashboard.tsx @@ -1112,6 +1112,18 @@ export function RankingDashboard({ competitionId: _competitionId, roundId }: Ran {selectedProjectId ? `ID: …${selectedProjectId.slice(-8)}` : ''} +
+ {projectDetail?.project.country && ( + + + + )} + {projectDetail?.project.teamName && ( + + {projectDetail.project.teamName} + + )} +
{selectedProjectId && ( + + {/* Project description (collapsible) */} + {projectDetail.project.description && ( + + + Description + + + + {projectDetail.project.description} + + + )} + {/* Stats summary: combined Avg card with Raw + Balanced side-by-side */} {projectDetail.stats && (() => { const raw = selectedProjectId @@ -1266,10 +1292,55 @@ export function RankingDashboard({ competitionId: _competitionId, roundId }: Ran })()} - {isExpanded && a.evaluation?.feedbackText && ( -

- {a.evaluation.feedbackText} -

+ {isExpanded && ( +
+ {/* Per-criterion scores */} + {(() => { + const scores = a.evaluation?.criterionScoresJson as Record | null + if (!scores || !evalForm?.criteriaJson) return null + const criteria = evalForm.criteriaJson as Array<{ + id: string + label: string + type?: string + trueLabel?: string + falseLabel?: string + scale?: number | string + }> + const rendered = criteria + .map((c) => { + const v = scores[c.id] + if (v == null || v === '') return null + let display: string + if (typeof v === 'boolean') { + display = v ? (c.trueLabel ?? 'Yes') : (c.falseLabel ?? 'No') + } else if (typeof v === 'number') { + display = String(v) + } else { + display = String(v) + } + return { label: c.label, display, type: c.type ?? 'numeric' } + }) + .filter((x): x is { label: string; display: string; type: string } => x != null) + if (rendered.length === 0) return null + return ( +
+ {rendered.map((c, i) => ( +
+ {c.label} + {c.display} +
+ ))} +
+ ) + })()} + + {/* Feedback text */} + {a.evaluation?.feedbackText && ( +

+ {a.evaluation.feedbackText} +

+ )} +
)} )