website refactor
This commit is contained in:
101
docs/DEBUGGING_STANDINGS.md
Normal file
101
docs/DEBUGGING_STANDINGS.md
Normal file
@@ -0,0 +1,101 @@
|
||||
# Debugging Standings Issues
|
||||
|
||||
## Issue: "No standings data available for this season"
|
||||
|
||||
### Root Cause
|
||||
|
||||
Standings are only created from **completed races** with results. If a league has:
|
||||
- No completed races
|
||||
- Or completed races but no results
|
||||
|
||||
Then no standings will be created, and the API will return an empty array.
|
||||
|
||||
### How Standings Are Created
|
||||
|
||||
1. **During seeding**: The `RacingStandingFactory.create()` method only creates standings for leagues that have completed races
|
||||
2. **When races are completed**: Standings are recalculated when race results are imported
|
||||
|
||||
### Debugging Steps
|
||||
|
||||
1. **Check if the league has any races**:
|
||||
```bash
|
||||
curl http://localhost:3000/api/leagues/{leagueId}/races
|
||||
```
|
||||
|
||||
2. **Check if any races are completed**:
|
||||
- Look at the `status` field in the race data
|
||||
- Completed races have `status: "completed"`
|
||||
|
||||
3. **Check if completed races have results**:
|
||||
- Results are stored separately from races
|
||||
- Without results, standings cannot be calculated
|
||||
|
||||
4. **Check if standings exist**:
|
||||
```bash
|
||||
curl http://localhost:3000/api/leagues/{leagueId}/standings
|
||||
```
|
||||
- If this returns an empty array `[]`, no standings exist
|
||||
|
||||
### Solutions
|
||||
|
||||
#### Option 1: Add Completed Races with Results
|
||||
|
||||
1. Create completed races for the league
|
||||
2. Add race results for those races
|
||||
3. Standings will be automatically calculated
|
||||
|
||||
#### Option 2: Use the Recalculate Endpoint (if available)
|
||||
|
||||
If there's a standings recalculate endpoint, call it to generate standings from existing race results.
|
||||
|
||||
#### Option 3: Reseed the Database
|
||||
|
||||
If the league was created manually and you want to start fresh:
|
||||
|
||||
```bash
|
||||
npm run docker:dev:reseed
|
||||
```
|
||||
|
||||
This will:
|
||||
1. Stop all containers
|
||||
2. Remove the database volume
|
||||
3. Start fresh with seed data
|
||||
4. Create standings for leagues with completed races
|
||||
|
||||
### Related Issues
|
||||
|
||||
#### Schedule Empty
|
||||
|
||||
If the schedule is empty but races exist, it's likely because:
|
||||
1. No seasons are configured for the league
|
||||
2. The season's date window doesn't include the races
|
||||
|
||||
**Fix**: The `GetLeagueScheduleUseCase` now handles leagues without seasons by showing all races.
|
||||
|
||||
#### Standings Empty
|
||||
|
||||
If standings are empty but races exist, it's likely because:
|
||||
1. No completed races exist
|
||||
2. No results exist for completed races
|
||||
|
||||
**Fix**: Add completed races with results, or use the recalculate endpoint.
|
||||
|
||||
### Example: Creating Standings Manually
|
||||
|
||||
If you need to create standings for testing:
|
||||
|
||||
1. Create completed races with results
|
||||
2. Call the standings endpoint - it will automatically calculate standings from the results
|
||||
|
||||
Or, if you have a recalculate endpoint:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:3000/api/leagues/{leagueId}/standings/recalculate
|
||||
```
|
||||
|
||||
### Prevention
|
||||
|
||||
To avoid this issue in the future:
|
||||
1. Always create seasons when creating leagues
|
||||
2. Add completed races with results
|
||||
3. Use the `docker:dev:reseed` command to ensure a clean database state
|
||||
Reference in New Issue
Block a user