Overhaul applicant portal: timeline, evaluations, nav, resources
All checks were successful
Build and Push Docker Image / build (push) Successful in 9m6s

- Fix programId/competitionId bug in competition timeline
- Add applicantVisibility config to EvaluationConfigSchema (JSONB)
- Add admin UI card for controlling applicant feedback visibility
- Add 6 new tRPC procedures: getNavFlags, getMyCompetitionTimeline,
  getMyEvaluations, getUpcomingDeadlines, getDocumentCompleteness,
  and extend getMyDashboard with hasPassedIntake
- Rewrite competition timeline to show only EVALUATION + Grand Finale,
  synthesize FILTERING rejections, handle manually-created projects
- Dynamic ApplicantNav with conditional Evaluations/Mentoring/Resources
- Dashboard: conditional timeline, jury feedback card, deadlines,
  document completeness, conditional mentor tile
- New /applicant/evaluations page with anonymous jury feedback
- New /applicant/resources pages (clone of jury learning hub)
- Rename /applicant/competitions → /applicant/competition
- Remove broken /applicant/competitions/[windowId] page
- Add permission info banner to team invite dialog

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-21 19:51:17 +01:00
parent ee2f10e080
commit 5a609457c2
13 changed files with 1291 additions and 314 deletions

View File

@@ -109,6 +109,20 @@ export const EvaluationConfigSchema = z.object({
generateAiShortlist: z.boolean().default(false),
aiParseFiles: z.boolean().default(false),
applicantVisibility: z
.object({
enabled: z.boolean().default(false),
showGlobalScore: z.boolean().default(false),
showCriterionScores: z.boolean().default(false),
showFeedbackText: z.boolean().default(false),
})
.default({
enabled: false,
showGlobalScore: false,
showCriterionScores: false,
showFeedbackText: false,
}),
advancementMode: z
.enum(['auto_top_n', 'admin_selection', 'ai_recommended'])
.default('admin_selection'),