Week 6 Progress: 75% Complete ## Components Implemented ### 1. League Configuration System ✅ - Created BaseGameConfig abstract class for league-agnostic rules - Implemented SbaConfig and PdConfig with league-specific settings - Immutable configs (frozen=True) with singleton registry - 28 unit tests, all passing Files: - backend/app/config/base_config.py - backend/app/config/league_configs.py - backend/tests/unit/config/test_league_configs.py ### 2. PlayOutcome Enum ✅ - Universal enum for all play outcomes (both SBA and PD) - Helper methods: is_hit(), is_out(), is_uncapped(), is_interrupt() - Supports standard hits, uncapped hits, interrupt plays, ballpark power - 30 unit tests, all passing Files: - backend/app/config/result_charts.py - backend/tests/unit/config/test_play_outcome.py ### 3. Player Model Refinements ✅ - Fixed PdPlayer.id field mapping (player_id → id) - Improved field docstrings for image types - Fixed position checking logic in SBA helper methods - Added safety checks for missing image data Files: - backend/app/models/player_models.py (updated) ### 4. Documentation ✅ - Updated backend/CLAUDE.md with Week 6 section - Documented card-based resolution mechanics - Detailed config system and PlayOutcome usage ## Architecture Decisions 1. **Card-Based Resolution**: Both SBA and PD use same mechanics - 1d6 (column) + 2d6 (row) + 1d20 (split resolution) - PD: Digitized cards with auto-resolution - SBA: Manual entry from physical cards 2. **Immutable Configs**: Prevent accidental modification using Pydantic frozen 3. **Universal PlayOutcome**: Single enum for both leagues reduces duplication ## Testing - Total: 58 tests, all passing - Config tests: 28 - PlayOutcome tests: 30 ## Remaining Work (25%) - Update dice system (check_d20 → chaos_d20) - Integrate PlayOutcome into PlayResolver - Add Play.metadata support for uncapped hits 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
36 lines
833 B
Python
36 lines
833 B
Python
"""
|
|
League configuration system for game rules and settings.
|
|
|
|
Provides:
|
|
- League configurations (BaseGameConfig, SbaConfig, PdConfig)
|
|
- Play outcome definitions (PlayOutcome enum)
|
|
|
|
Usage:
|
|
from app.config import get_league_config, PlayOutcome
|
|
|
|
# Get config for specific league
|
|
config = get_league_config("sba")
|
|
api_url = config.get_api_base_url()
|
|
|
|
# Use play outcomes
|
|
if outcome == PlayOutcome.SINGLE_UNCAPPED:
|
|
# Handle uncapped hit decision tree
|
|
"""
|
|
from app.config.base_config import BaseGameConfig
|
|
from app.config.league_configs import (
|
|
SbaConfig,
|
|
PdConfig,
|
|
LEAGUE_CONFIGS,
|
|
get_league_config
|
|
)
|
|
from app.config.result_charts import PlayOutcome
|
|
|
|
__all__ = [
|
|
'BaseGameConfig',
|
|
'SbaConfig',
|
|
'PdConfig',
|
|
'LEAGUE_CONFIGS',
|
|
'get_league_config',
|
|
'PlayOutcome'
|
|
]
|