45 lines
1.3 KiB
Go
45 lines
1.3 KiB
Go
package logic
|
|
|
|
// Team represents a football team.
|
|
type Team struct {
|
|
Name string `json:"name"`
|
|
Group string `json:"group"` // e.g., "A", "B", ..., "L"
|
|
}
|
|
|
|
// Match represents a group stage match between two teams.
|
|
type Match struct {
|
|
TeamA string `json:"team_a"`
|
|
TeamB string `json:"team_b"`
|
|
IsCompleted bool `json:"is_completed"`
|
|
ScoreA int `json:"score_a"`
|
|
ScoreB int `json:"score_b"`
|
|
}
|
|
|
|
// ScoreOutcome represents a possible match score and its probability.
|
|
type ScoreOutcome struct {
|
|
ScoreA int `json:"score_a"`
|
|
ScoreB int `json:"score_b"`
|
|
Probability float64 `json:"probability"`
|
|
}
|
|
|
|
// TeamStats holds the metrics used to rank teams within a group or across third-place teams.
|
|
type TeamStats struct {
|
|
TeamName string
|
|
Points int
|
|
GoalDifference int
|
|
GoalsScored int
|
|
// Fields used for tie-breaking comparison within the group
|
|
H2HPoints int
|
|
H2HGD int
|
|
H2HGS int
|
|
}
|
|
|
|
// TeamProbability represents the calculated qualification probabilities for a single team.
|
|
type TeamProbability struct {
|
|
TeamName string `json:"team_name"`
|
|
Group string `json:"group"`
|
|
DirectQualProb float64 `json:"direct_qual_prob"`
|
|
ThirdQualProb float64 `json:"third_qual_prob"`
|
|
TotalQualProb float64 `json:"total_qual_prob"`
|
|
}
|