Split player model architecture into dedicated documentation files for clarity and maintainability. Added Phase 1 status tracking and comprehensive player model specs covering API models, game models, mappers, and testing strategy. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
228 lines
7.3 KiB
Markdown
228 lines
7.3 KiB
Markdown
# Phase 1 Catch-Up Plan
|
|
|
|
**Created**: 2025-10-25
|
|
**Status**: Planning
|
|
**Reason**: Jumped ahead to Phase 2 (game engine) without completing all Phase 1 deliverables
|
|
|
|
## Current State Assessment
|
|
|
|
### ✅ What's Complete (Backend Infrastructure)
|
|
|
|
1. **Backend Foundation** ✅
|
|
- FastAPI server with async support
|
|
- PostgreSQL database with SQLAlchemy 2.0
|
|
- Pydantic models for validation
|
|
- Logging system with rotating file handlers
|
|
- Health check endpoints (`/api/health`, `/api/health/db`)
|
|
- CORS configuration
|
|
|
|
2. **Database Layer** ✅
|
|
- All database models created (Game, Play, Lineup, GameSession, RosterLink, GameCardsetLink)
|
|
- Async database operations (DatabaseOperations class)
|
|
- Polymorphic model support (PD/SBA)
|
|
- State persistence and recovery
|
|
|
|
3. **WebSocket Infrastructure** ✅
|
|
- Socket.io integration with FastAPI
|
|
- ConnectionManager class for room management
|
|
- Basic event handlers (connect, disconnect, join_game, leave_game, heartbeat)
|
|
- JWT token verification in connection handler
|
|
|
|
4. **Authentication Stubs** ✅
|
|
- JWT token creation (`create_token()`)
|
|
- JWT token verification (`verify_token()`)
|
|
- Basic auth endpoints (`/api/auth/token`, `/api/auth/verify`)
|
|
|
|
### ⚠️ What's Incomplete/Missing
|
|
|
|
1. **Discord OAuth** - STUB ONLY
|
|
- `/api/auth/token` endpoint exists but just creates tokens from provided data
|
|
- No actual OAuth flow with Discord
|
|
- No Discord API integration
|
|
- No session management with Discord
|
|
|
|
2. **Frontend Applications** - SCAFFOLDING ONLY
|
|
- `frontend-sba/` ✅ Nuxt 3 initialized with dependencies
|
|
- `frontend-pd/` ✅ Nuxt 3 initialized with dependencies
|
|
- ❌ Only bare `app.vue` - no pages, components, or logic
|
|
- ❌ No authentication UI
|
|
- ❌ No game creation UI
|
|
- ❌ No gameplay UI
|
|
- ❌ No WebSocket integration
|
|
- ❌ No Pinia stores
|
|
- ❌ No composables
|
|
|
|
3. **WebSocket Game Events** - BASIC ONLY
|
|
- Only have: connect, disconnect, join_game, leave_game, heartbeat
|
|
- Missing: game action events, state updates, error handling
|
|
- No integration with GameEngine for real-time updates
|
|
|
|
4. **Full Auth Flow** - INCOMPLETE
|
|
- Can create tokens, but no OAuth flow
|
|
- No user database/storage
|
|
- No session persistence
|
|
- No refresh tokens
|
|
|
|
## Prioritization Strategy
|
|
|
|
### Option A: Skip Phase 1, Continue with Phase 2/3 (Recommended)
|
|
**Rationale**:
|
|
- Game engine is the core value proposition
|
|
- Can build and test game logic without frontend
|
|
- OAuth and frontend can be added later without blocking progress
|
|
- Manual testing via Python scripts works fine
|
|
|
|
**Benefits**:
|
|
- Faster time to working game engine
|
|
- Can validate game mechanics without UI complexity
|
|
- Easier to test and debug game logic
|
|
|
|
**Risks**:
|
|
- No user-facing application yet
|
|
- Can't demo to stakeholders easily
|
|
|
|
### Option B: Complete Phase 1 Fully
|
|
**Rationale**:
|
|
- Follow the original plan
|
|
- Have end-to-end system working
|
|
- Can demo to users immediately
|
|
|
|
**Benefits**:
|
|
- Complete vertical slice
|
|
- Better for early user feedback
|
|
|
|
**Risks**:
|
|
- Significant frontend work (4-6 weeks minimum)
|
|
- Delays game engine enhancements
|
|
- May build UI for features that change
|
|
|
|
### Option C: Hybrid Approach (Build Minimum Viable Frontend)
|
|
**Rationale**:
|
|
- Build just enough frontend to test game flows
|
|
- Skip Discord OAuth, use simple token auth
|
|
- Single-page app instead of full Nuxt setup
|
|
|
|
**Benefits**:
|
|
- Can see game in action
|
|
- Minimal frontend work (1-2 weeks)
|
|
- Unblocks user testing
|
|
|
|
## Recommended Plan: **Option A** (Skip Phase 1, Continue Phase 2/3)
|
|
|
|
### Reasoning
|
|
1. **Game Engine is Core IP**: The game simulation logic is what makes this project unique. Frontend can be built on any framework later.
|
|
|
|
2. **Phase 2 is Working Well**: We have a solid game engine with:
|
|
- Complete at-bat flow working
|
|
- Dice system with audit trail
|
|
- State management and persistence
|
|
- 54+ unit tests
|
|
- Integration tests
|
|
|
|
3. **OAuth is Not Blocking**: We can:
|
|
- Use stub auth for development/testing
|
|
- Add real Discord OAuth later (2-3 days of work)
|
|
- Many games launch without OAuth initially
|
|
|
|
4. **Frontend Can Wait**:
|
|
- Frontend is 4-6 weeks of work minimum
|
|
- Game logic may still evolve
|
|
- Building UI now might mean rebuilding later
|
|
- Can use scripts/Postman for testing
|
|
|
|
5. **Current Approach is Working**:
|
|
- Manual test scripts validate functionality
|
|
- pytest integration tests cover critical paths
|
|
- Can run complete games via Python
|
|
|
|
### Immediate Next Steps (Continue Phase 2/3)
|
|
|
|
**Week 6 (Phase 2)**: League Features & Integration
|
|
- [ ] League configuration system (SBA and PD configs)
|
|
- [ ] Complete result charts (beyond simplified)
|
|
- [ ] API client for league data
|
|
- [ ] Player/card data integration
|
|
|
|
**Weeks 7-9 (Phase 3)**: Complete Game Features
|
|
- [ ] All strategic decisions (steals, bunts, hit-and-run)
|
|
- [ ] Substitution system
|
|
- [ ] Pitcher fatigue and changes
|
|
- [ ] AI opponent implementation
|
|
|
|
**Weeks 10-11 (Phase 4)**: Polish & Testing
|
|
- [ ] Comprehensive test coverage
|
|
- [ ] Performance optimization
|
|
- [ ] Game state recovery testing
|
|
- [ ] Documentation
|
|
|
|
### When to Revisit Phase 1
|
|
|
|
**Trigger Points**:
|
|
1. **After Phase 3 Complete**: Game mechanics fully implemented and tested
|
|
2. **When Ready for User Testing**: Need UI for stakeholders to test
|
|
3. **Before Public Launch**: Real auth required for production
|
|
|
|
**Estimated Effort**:
|
|
- Discord OAuth integration: 2-3 days
|
|
- Basic frontend (SBA league only): 2-3 weeks
|
|
- Full frontend (both leagues): 4-6 weeks
|
|
- WebSocket game events: 1 week
|
|
|
|
## If You Choose to Complete Phase 1
|
|
|
|
### Phase 1 Completion Tasks
|
|
|
|
#### 1. Discord OAuth Implementation (3-5 days)
|
|
- [ ] Create Discord app in Discord Developer Portal
|
|
- [ ] Implement OAuth callback endpoint
|
|
- [ ] Add user model to database
|
|
- [ ] Store Discord user data
|
|
- [ ] Generate and manage sessions
|
|
- [ ] Add refresh token logic
|
|
|
|
#### 2. Frontend - SBA League (2-3 weeks)
|
|
- [ ] Initialize Nuxt 3 project (frontend-sba/)
|
|
- [ ] Setup Tailwind CSS
|
|
- [ ] Create authentication pages (login, callback)
|
|
- [ ] Create game lobby (list games, create game)
|
|
- [ ] Create game room (player view)
|
|
- [ ] WebSocket integration for real-time updates
|
|
- [ ] Basic UI components (scoreboard, lineup, decision panel)
|
|
|
|
#### 3. Frontend - PD League (1-2 weeks after SBA)
|
|
- [ ] Clone SBA frontend structure
|
|
- [ ] Customize branding/styling for PD
|
|
- [ ] Adjust for PD-specific features
|
|
- [ ] Test with PD league data
|
|
|
|
#### 4. WebSocket Game Events (1 week)
|
|
- [ ] Implement game state broadcast
|
|
- [ ] Add decision submission events
|
|
- [ ] Add play resolution events
|
|
- [ ] Handle errors and reconnection
|
|
- [ ] Test with multiple clients
|
|
|
|
## Decision Required
|
|
|
|
**What should we do?**
|
|
|
|
**Recommended**: Continue with Phase 2/3, defer Phase 1 completion until game engine is solid.
|
|
|
|
**Alternative**: Complete Phase 1 now if stakeholder demos are critical.
|
|
|
|
**Hybrid**: Build minimal frontend (just game room, no OAuth) for internal testing.
|
|
|
|
---
|
|
|
|
## Notes
|
|
|
|
- This document captures the gap between planned Phase 1 and actual implementation
|
|
- The backend infrastructure we have is **sufficient** for game engine development
|
|
- Frontend and OAuth are **nice to have**, not **required** for core development
|
|
- We can always come back and complete Phase 1 later
|
|
|
|
## Updates
|
|
|
|
- **2025-10-25**: Initial assessment created
|
|
- **Next Review**: After Week 6 (Phase 2 complete) or when stakeholder demo is requested
|