fix(web): resolve practice/qualifying partial session bug by flagging starting_grid as N/A

This commit is contained in:
2026-05-25 14:33:14 -04:00
parent 937674f808
commit e060bcba24
9 changed files with 43 additions and 9 deletions

View File

@@ -1,5 +1,7 @@
package query
import "strings"
const (
DatasetStatusAvailable = "available"
DatasetStatusMissing = "missing"
@@ -20,6 +22,25 @@ type DatasetInfo struct {
Count int `json:"count,omitempty"`
}
func skippedNA() DatasetInfo {
return DatasetInfo{
Status: "skipped",
Source: "na",
Count: 0,
}
}
func isGridExpected(sessionType, sessionName string) bool {
t := strings.ToLower(sessionType)
n := strings.ToLower(sessionName)
// Grid is only expected on main Sprint or Race sessions, not qualifying, practice, or shootout
return (strings.Contains(t, "race") || strings.Contains(n, "race") ||
strings.Contains(t, "sprint") || strings.Contains(n, "sprint")) &&
!strings.Contains(t, "qualifying") && !strings.Contains(n, "qualifying") &&
!strings.Contains(t, "shootout") && !strings.Contains(n, "shootout") &&
!strings.Contains(t, "practice") && !strings.Contains(n, "practice")
}
func availableLocal(count int) DatasetInfo {
return DatasetInfo{
Status: DatasetStatusAvailable,

View File

@@ -64,8 +64,12 @@ func (s *Service) GetWeekend(meetingKey int) (Weekend, error) {
return Weekend{}, err
}
datasets := datasetsFromCounts(true, true, counts)
sessionModel := sessionToModel(sess)
if datasets["starting_grid"].Status == DatasetStatusMissing && !isGridExpected(sessionModel.SessionType, sessionModel.SessionName) {
datasets["starting_grid"] = skippedNA()
}
out.Sessions = append(out.Sessions, WeekendSession{
Session: sessionToModel(sess),
Session: sessionModel,
Source: responseSource(datasets),
Datasets: datasets,
})

View File

@@ -166,6 +166,8 @@ func (s *Service) GetRaceHub(sessionKey int) (RaceHub, error) {
}
hub.StartingGrid = enriched
hub.Datasets["starting_grid"] = availableLocal(len(enriched))
} else if !isGridExpected(sessionModel.SessionType, sessionModel.SessionName) {
hub.Datasets["starting_grid"] = skippedNA()
}
stints, err := s.store.ListStints(sessionKey)