Skip to content

Fix/table assignment hackathon scope#73

Merged
MatejMa2ur merged 22 commits intomainfrom
fix/table-assignment-hackathon-scope
Apr 18, 2026
Merged

Fix/table assignment hackathon scope#73
MatejMa2ur merged 22 commits intomainfrom
fix/table-assignment-hackathon-scope

Conversation

@MatejMa2ur
Copy link
Copy Markdown
Member

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]

MatejMa2ur and others added 22 commits April 17, 2026 22:40
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]>
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]>
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]>
…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]>
@MatejMa2ur MatejMa2ur merged commit 13b404b into main Apr 18, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant