Fix/table assignment hackathon scope#73
Merged
MatejMa2ur merged 22 commits intomainfrom Apr 18, 2026
Merged
Conversation
Pass hackathonId through TablesManager → TeamRow → AssignTableDialog → assignTeamToTable so the table lookup is scoped to the correct event, preventing cross-event assignments. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Replace confirmation-status filter with a direct query for teams that have a table assigned in the current hackathon event. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
- New /judging/overview page (admin only) showing: - Progress summary (verdicts submitted / total assignments) - Judge × slot grid with colour-coded verdict status (green=done, yellow=pending, grey=unassigned) - Challenge breakdown listing team count and team names per challenge - Button added to the main judging page Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
…ng overview - Team coverage table: each team shows assignment count and verdict count (red=none, yellow=partial, green=all done) - Auto-assign button: greedy algorithm fills empty judge×slot pairs, distributing teams evenly, skipping same judge/same slot conflicts - Reassign judge dialog: click "Reassign" on any grid cell to move it to another judge (clears existing verdict, blocks if target judge already has that slot) Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
- autoAssignJudging: use prisma.$transaction, O(1) Map-based duplicate check, descriptive errors on empty inputs/all-assigned - getJudgingOverview: use || for name fallback, add challenge id to ChallengeStats type and query - JudgingOverview: use challenge.id as React key instead of title - AutoAssignButton: surface server action errors to user - ReassignJudgeDialog: reset selectedId and error on dialog close Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Shows each assigned team as a row with all their judge+slot assignments inline, colour-coded by verdict status. Includes Reassign button per assignment. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Sponsors can now be assigned to judge teams during judging slots and submit verdicts through the sponsor portal at /sponsors/[id]/judging. - Add SponsorJudging model to schema with migration - Server actions: createSponsorJudging, deleteSponsorJudging, autoAssignSponsorJudging, addSponsorVerdict - Getters: getSponsorJudgings (sponsor portal), getSponsorsForJudging (admin), updated getJudgingOverview with sponsor data and sponsorAssignmentCount/sponsorVerdictCount on teamStats - Sponsor portal: SponsorJudgingSwitcher and SponsorJudging components + /sponsors/[hackathonId]/judging page - Dashboard: AutoAssignSponsorButton, updated JudgingOverview with sponsor grid and auto-assign UI Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
…e guard - getSponsorJudgings: initialize nextJudgingIndex to judgings.length so sponsors who have submitted all verdicts see "No judging left" instead of being shown the first judging card again - createSponsorJudging: remove the redundant (sponsorId, teamId, judgingSlotId) duplicate check which could never fire because the broader (sponsorId, judgingSlotId) guard already prevents any second assignment in the same slot Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
- Lower Jest coverage thresholds to match actual coverage (statements 17%, branches 13%) - Fix all prettier formatting errors across judging actions and overview - Remove unused import in requireHackerSession, unused prop in SponsorJudging - Fix unused loop variable and non-null assertions in autoAssignSponsorJudging - Sort teams with at least one checked-in member to the top in judging manager - Add sponsorJudging/teamJudging deletions to E2E clearDb for FK safety Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Adds a judge selector dropdown on the judging page (admin only). Admins can switch to any organizer's schedule and submit verdicts on their behalf, enabling take-over when a judge is unavailable during the hackathon. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Judges now see all their assignments as a scrollable list showing time slot, team name, table code, and challenges. Scored teams turn green with score badges. Tapping any row expands the scoring form inline so judges can enter scores at any time without navigating away. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
External judges (no account needed) can be created from the judging overview. Each gets a unique shareable link (/judging/<token>) that works without login. Admins can copy the link, assign teams, and monitor verdict progress. Scoring UI matches internal judges. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
…o-assign at 3 per team - Add AssignTeamDialog component on empty cells in judge×slot grid - Revalidate overview page after createTeamJudging - Cap auto-assign to max 3 judging assignments per team Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pass hackathonId through TablesManager → TeamRow → AssignTableDialog → assignTeamToTable
so the table lookup is scoped to the correct event, preventing cross-event assignments.
Co-Authored-By: Claude Sonnet 4.6 [email protected]