Current State
Scoring is hardcoded in utils/scoring.py:
- Exact score: 3 pts
- Correct outcome: 1 pt
- Wrong: 0 pts
- Late: 100% penalty (0 pts)
These values are referenced in help text and standings calculations.
Problem
Different leagues/communities want different scoring:
- Some want 5/2/0 instead of 3/1/0
- Some want partial credit for late predictions
- Some want bonus points for streaks or exact scores on important matches
Scope
Make scoring rules configurable per-league/season without code changes.
Key Areas
- Storage: New table
scoring_rules with fixture_id/season reference
- Admin commands:
/admin config scoring to set point values
- Calculation: Update
calculate_points() to use rules from DB
- Display: Dynamic help text showing current rules
- Migration: Default rules = current hardcoded values
Open Questions
- Per-fixture rules or global per-league?
- How to handle historical data if rules change mid-season?
- Should we support "special" rules (e.g., double points for final match)?
Priority
Low - current hardcoded system works for most use cases. This is future-proofing.
Current State
Scoring is hardcoded in
utils/scoring.py:These values are referenced in help text and standings calculations.
Problem
Different leagues/communities want different scoring:
Scope
Make scoring rules configurable per-league/season without code changes.
Key Areas
scoring_ruleswith fixture_id/season reference/admin config scoringto set point valuescalculate_points()to use rules from DBOpen Questions
Priority
Low - current hardcoded system works for most use cases. This is future-proofing.