feat: implement variable team matchups with partner rotation

- Add manual team entry for permanent teams in Matchups tab
- Rename 'Teams' tab to 'Matchups' for clarity
- Implement partner rotation strategies (minimize_repeat, maximize_even, elo_based)
- Track partnerships across rounds to minimize repeat pairings
- Fix unit tests for team configuration and ELO calculations
- Add E2E test for 9+ participant tournaments with variable matchups

Key changes:
- TeamsSection.tsx: Added router.refresh(), manual team entry, and matchup display
- schedule-generator.ts: Enhanced generateVariableRoundRobin to track partnerships
- team-generator.ts: Fixed partnership frequency tracking across rounds
- API routes: Updated to support variable team durability with rotation strategies
This commit is contained in:
2026-04-04 00:24:57 -07:00
parent eeb0f7970a
commit 62ac6d1b79
24 changed files with 3106 additions and 868 deletions
+22
View File
@@ -0,0 +1,22 @@
# Future Work
## Navigation Header Enhancement
### Current Behavior
- Admin users see an "Admin" link in the navigation header
- Clicking "EuchreCamp" brand link goes to the home page
### Proposed Change
- Remove the "Admin" link from the navigation header
- For **admin users**: clicking "EuchreCamp" brand link should take them to `/admin`
- For **non-admin authenticated users**: clicking "EuchreCamp" brand link should take them to their player homepage (`/players/[id]/profile`)
### Implementation Notes
- This requires updating the Navigation component
- Need to check user role/permissions in the Navigation component
- May need to pass user info from server components to client Navigation
### Related Files
- `src/components/Navigation.tsx` - Main navigation component
- `src/lib/auth-simple.ts` - Authentication utilities
- `src/lib/permissions.ts` - Role checking utilities