init
This commit is contained in:
62
lib/types.ts
Normal file
62
lib/types.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
// Datenmodell für die WM-Seite. Bewusst entkoppelt von den Feed-Formaten:
|
||||
// Adapter (siehe lib/feeds.ts) übersetzen football-data.org & Polymarket in diese Typen.
|
||||
|
||||
export type GroupId =
|
||||
| "A" | "B" | "C" | "D" | "E" | "F"
|
||||
| "G" | "H" | "I" | "J" | "K" | "L";
|
||||
|
||||
export const GROUP_IDS: GroupId[] = [
|
||||
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L",
|
||||
];
|
||||
|
||||
export interface Team {
|
||||
id: string; // stabile ID aus dem Feed
|
||||
name: string; // Anzeigename
|
||||
code: string; // 3-Buchstaben-Code, z.B. GER
|
||||
group: GroupId;
|
||||
}
|
||||
|
||||
export type MatchStatus =
|
||||
| "SCHEDULED" | "LIVE" | "IN_PLAY" | "PAUSED" | "FINISHED";
|
||||
|
||||
export interface Match {
|
||||
id: string;
|
||||
group: GroupId | null; // null = K.o.-Spiel
|
||||
stage: "GROUP" | "R32" | "R16" | "QF" | "SF" | "3RD" | "FINAL";
|
||||
matchNumber: number; // FIFA-Spielnummer (1..104)
|
||||
utcDate: string;
|
||||
status: MatchStatus;
|
||||
minute: number | null;
|
||||
homeTeamId: string | null;
|
||||
awayTeamId: string | null;
|
||||
homeScore: number | null;
|
||||
awayScore: number | null;
|
||||
// Wahrscheinlichkeiten 0..1 (Polymarket), falls vorhanden
|
||||
prob?: { home: number; draw: number | null; away: number } | null;
|
||||
}
|
||||
|
||||
// Eine berechnete Tabellenzeile innerhalb einer Gruppe.
|
||||
export interface StandingRow {
|
||||
teamId: string;
|
||||
played: number;
|
||||
won: number;
|
||||
drawn: number;
|
||||
lost: number;
|
||||
goalsFor: number;
|
||||
goalsAgainst: number;
|
||||
goalDiff: number;
|
||||
points: number;
|
||||
rank: number; // 1..4 innerhalb der Gruppe
|
||||
}
|
||||
|
||||
export interface GroupTable {
|
||||
group: GroupId;
|
||||
rows: StandingRow[]; // sortiert, rank gesetzt
|
||||
}
|
||||
|
||||
// Eintrag in der gruppenübergreifenden Drittplatzierten-Tabelle.
|
||||
export interface ThirdPlaceRow extends StandingRow {
|
||||
group: GroupId;
|
||||
qualifies: boolean; // true für die besten 8
|
||||
overallRank: number; // 1..12
|
||||
}
|
||||
Reference in New Issue
Block a user