o2o-triple-pick/lib/types.ts

53 lines
1.4 KiB
TypeScript

// TriplePick 도메인 타입 — 기능정의서 데이터모델과 정합
// Firebase 연결 시 이 타입을 Firestore 변환기(converter)에 그대로 사용한다.
export type Outcome = "TEAM_A_WIN" | "DRAW" | "TEAM_B_WIN";
export type ModelName = "GPT" | "Claude" | "Gemini";
export type MatchStatus = "upcoming" | "locked" | "live" | "finished";
export interface Team {
name: string; // 표시명 (예: Korea Republic)
shortName: string; // 짧은 표시 (예: 한국)
code: string; // KOR / CZE
flag: string; // 이모지 국기 (1차), 추후 에셋 교체 가능
}
export interface Match {
matchId: string;
roundLabel: string; // "Match 01"
group: string; // "A"
teamA: Team;
teamB: Team;
kickoffKst: string; // ISO with +09:00
venue: string;
lockAt: string; // ISO (킥오프 -10분)
status: MatchStatus;
hookText: string; // "한국 첫 경기, AI의 선택은 갈렸다"
result?: { scoreA: number; scoreB: number; outcome: Outcome } | null;
}
export interface AIPrediction {
matchId: string;
model: ModelName;
outcome: Outcome;
scoreA: number;
scoreB: number;
confidencePct: number; // 0-100
reasonShort: string;
generatedAt: string; // 데이터 기준일
}
export interface CrowdStats {
matchId: string;
total: number;
teamAWin: number;
draw: number;
teamBWin: number;
}
export interface UserPick {
outcome: Outcome;
scoreA: number;
scoreB: number;
}