This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
/**
|
||||
* Prediction Card DTO
|
||||
*
|
||||
* Typed data structure for rendering match prediction cards
|
||||
* and generating social media captions.
|
||||
*/
|
||||
|
||||
export interface TopPick {
|
||||
/** Market name in Turkish, e.g. "Üst 2.5 Gol" */
|
||||
market: string;
|
||||
/** Market name in English, e.g. "Over 2.5" */
|
||||
marketEn: string;
|
||||
/** Pick label, e.g. "Üst" */
|
||||
pick: string;
|
||||
/** Confidence 0-100 */
|
||||
confidence: number;
|
||||
/** Odds value */
|
||||
odds: number;
|
||||
}
|
||||
|
||||
export interface PredictionCardDto {
|
||||
// ─── Match Info ───
|
||||
matchId: string;
|
||||
homeTeam: string;
|
||||
awayTeam: string;
|
||||
homeLogo: string;
|
||||
awayLogo: string;
|
||||
leagueName: string;
|
||||
leagueLogo?: string;
|
||||
/** Formatted date, e.g. "01 Mar 2026 - 21:00" */
|
||||
matchDate: string;
|
||||
|
||||
// ─── Score Predictions ───
|
||||
/** HT score, e.g. "1-0" */
|
||||
htScore: string;
|
||||
/** FT score, e.g. "2-1" */
|
||||
ftScore: string;
|
||||
/** Overall confidence 0-100 */
|
||||
scoreConfidence: number;
|
||||
|
||||
// ─── Top 3 Best Bets ───
|
||||
topPicks: TopPick[];
|
||||
|
||||
// ─── Risk ───
|
||||
riskLevel: 'LOW' | 'MEDIUM' | 'HIGH' | 'EXTREME';
|
||||
|
||||
// ─── Raw prediction JSON (for Gemini caption) ───
|
||||
rawPrediction?: Record<string, any>;
|
||||
}
|
||||
|
||||
export interface SocialPostResult {
|
||||
matchId: string;
|
||||
imagePath: string;
|
||||
caption: string;
|
||||
twitterPostId?: string;
|
||||
facebookPostId?: string;
|
||||
instagramPostId?: string;
|
||||
postedAt: Date;
|
||||
errors?: string[];
|
||||
}
|
||||
Reference in New Issue
Block a user