This commit is contained in:
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"version": "0.0.1",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "frontend",
|
||||||
|
"runtimeExecutable": "npm",
|
||||||
|
"runtimeArgs": ["run", "dev"],
|
||||||
|
"port": 6195
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+20
-1
@@ -137,7 +137,25 @@
|
|||||||
"substitutes": "Substitutes",
|
"substitutes": "Substitutes",
|
||||||
"all-matches": "All Matches",
|
"all-matches": "All Matches",
|
||||||
"today-matches": "Today's Matches",
|
"today-matches": "Today's Matches",
|
||||||
"next-1-hour": "Next 1 Hour"
|
"next-1-hour": "Next 1 Hour",
|
||||||
|
"possession": "Possession",
|
||||||
|
"shots-on-target": "Shots on Target",
|
||||||
|
"shots-off-target": "Shots off Target",
|
||||||
|
"total-shots": "Total Shots",
|
||||||
|
"total-passes": "Total Passes",
|
||||||
|
"corners": "Corners",
|
||||||
|
"fouls": "Fouls",
|
||||||
|
"offsides": "Offsides",
|
||||||
|
"officials": "Officials",
|
||||||
|
"main-referee": "Referee",
|
||||||
|
"assistant-referee": "Assistant Referee",
|
||||||
|
"fourth-official": "Fourth Official",
|
||||||
|
"var-referee": "VAR Referee",
|
||||||
|
"avar-referee": "AVAR Referee",
|
||||||
|
"penalty": "Penalty",
|
||||||
|
"half-time": "1st Half",
|
||||||
|
"second-half": "2nd Half",
|
||||||
|
"assist": "Assist"
|
||||||
},
|
},
|
||||||
"predictions": {
|
"predictions": {
|
||||||
"title": "Predictions",
|
"title": "Predictions",
|
||||||
@@ -161,6 +179,7 @@
|
|||||||
"expected-value": "Expected Value",
|
"expected-value": "Expected Value",
|
||||||
"no-predictions": "No predictions available.",
|
"no-predictions": "No predictions available.",
|
||||||
"generate": "Analyze with AI",
|
"generate": "Analyze with AI",
|
||||||
|
"pre-match-disclaimer": "This analysis is based on pre-match data only.",
|
||||||
"accuracy": "Accuracy",
|
"accuracy": "Accuracy",
|
||||||
"total-predictions": "Total Predictions",
|
"total-predictions": "Total Predictions",
|
||||||
"correct-predictions": "Correct Predictions",
|
"correct-predictions": "Correct Predictions",
|
||||||
|
|||||||
+20
-1
@@ -137,7 +137,25 @@
|
|||||||
"substitutes": "Yedekler",
|
"substitutes": "Yedekler",
|
||||||
"all-matches": "Tüm Maçlar",
|
"all-matches": "Tüm Maçlar",
|
||||||
"today-matches": "Bugünün Maçları",
|
"today-matches": "Bugünün Maçları",
|
||||||
"next-1-hour": "1 Saat İçinde"
|
"next-1-hour": "1 Saat İçinde",
|
||||||
|
"possession": "Topa Sahip Olma",
|
||||||
|
"shots-on-target": "İsabetli Şut",
|
||||||
|
"shots-off-target": "İsabetsiz Şut",
|
||||||
|
"total-shots": "Toplam Şut",
|
||||||
|
"total-passes": "Toplam Pas",
|
||||||
|
"corners": "Korner",
|
||||||
|
"fouls": "Faul",
|
||||||
|
"offsides": "Ofsayt",
|
||||||
|
"officials": "Hakemler",
|
||||||
|
"main-referee": "Hakem",
|
||||||
|
"assistant-referee": "Yardımcı Hakem",
|
||||||
|
"fourth-official": "Dördüncü Hakem",
|
||||||
|
"var-referee": "VAR Hakemi",
|
||||||
|
"avar-referee": "AVAR Hakemi",
|
||||||
|
"penalty": "Penaltı",
|
||||||
|
"half-time": "İlk Yarı",
|
||||||
|
"second-half": "İkinci Yarı",
|
||||||
|
"assist": "Asist"
|
||||||
},
|
},
|
||||||
"predictions": {
|
"predictions": {
|
||||||
"title": "Tahminler",
|
"title": "Tahminler",
|
||||||
@@ -161,6 +179,7 @@
|
|||||||
"expected-value": "Beklenen Değer",
|
"expected-value": "Beklenen Değer",
|
||||||
"no-predictions": "Tahmin bulunmuyor.",
|
"no-predictions": "Tahmin bulunmuyor.",
|
||||||
"generate": "Yapay Zeka ile Analiz Et",
|
"generate": "Yapay Zeka ile Analiz Et",
|
||||||
|
"pre-match-disclaimer": "Bu analiz maç başlamadan önceki verilere dayanmaktadır.",
|
||||||
"accuracy": "Doğruluk",
|
"accuracy": "Doğruluk",
|
||||||
"total-predictions": "Toplam Tahmin",
|
"total-predictions": "Toplam Tahmin",
|
||||||
"correct-predictions": "Doğru Tahmin",
|
"correct-predictions": "Doğru Tahmin",
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
/// <reference types="next" />
|
/// <reference types="next" />
|
||||||
/// <reference types="next/image-types/global" />
|
/// <reference types="next/image-types/global" />
|
||||||
import "./.next/dev/types/routes.d.ts";
|
import "./.next/types/routes.d.ts";
|
||||||
|
|
||||||
// NOTE: This file should not be edited
|
// NOTE: This file should not be edited
|
||||||
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
|
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1627,6 +1627,23 @@ export default function PredictionCard({ prediction }: PredictionCardProps) {
|
|||||||
)}
|
)}
|
||||||
ui={ui}
|
ui={ui}
|
||||||
/>
|
/>
|
||||||
|
{(prediction as unknown as Record<string, unknown>).ai_expert_commentary ? (
|
||||||
|
<Card.Root bg={cardBg} borderColor={borderColor} borderRadius="2xl">
|
||||||
|
<Card.Body gap={3}>
|
||||||
|
<SectionTitle
|
||||||
|
icon={LuBrain}
|
||||||
|
title={uiText("ai-expert-commentary-title", "AI Uzman Yorumu")}
|
||||||
|
info={uiText(
|
||||||
|
"ai-expert-commentary-info",
|
||||||
|
"Yapay zekanın maç verilerini okuyarak ürettiği uzman bahis analizi.",
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
<Text fontSize="sm" color="fg.muted" lineHeight="1.7">
|
||||||
|
{String((prediction as unknown as Record<string, unknown>).ai_expert_commentary)}
|
||||||
|
</Text>
|
||||||
|
</Card.Body>
|
||||||
|
</Card.Root>
|
||||||
|
) : null}
|
||||||
{prediction.match_commentary?.headline ||
|
{prediction.match_commentary?.headline ||
|
||||||
prediction.match_commentary?.summary ? (
|
prediction.match_commentary?.summary ? (
|
||||||
<Card.Root bg={cardBg} borderColor={borderColor} borderRadius="2xl">
|
<Card.Root bg={cardBg} borderColor={borderColor} borderRadius="2xl">
|
||||||
|
|||||||
@@ -62,6 +62,9 @@ export interface MatchResponseDto {
|
|||||||
status: MatchStatus;
|
status: MatchStatus;
|
||||||
state?: string;
|
state?: string;
|
||||||
|
|
||||||
|
homeTeamId?: string;
|
||||||
|
awayTeamId?: string;
|
||||||
|
|
||||||
// Scores
|
// Scores
|
||||||
scoreHome?: number;
|
scoreHome?: number;
|
||||||
scoreAway?: number;
|
scoreAway?: number;
|
||||||
@@ -118,11 +121,55 @@ export interface MatchResponseDto {
|
|||||||
// Match detail enrichments
|
// Match detail enrichments
|
||||||
refereeName?: string;
|
refereeName?: string;
|
||||||
sidelined?: Record<string, unknown>;
|
sidelined?: Record<string, unknown>;
|
||||||
events?: Array<Record<string, unknown>>;
|
events?: MatchEvent[];
|
||||||
|
playerEvents?: MatchEvent[];
|
||||||
|
|
||||||
// Additional fields from backend detail endpoint
|
// Additional fields from backend detail endpoint
|
||||||
lineupSource?: string;
|
lineupSource?: string;
|
||||||
stats?: Record<string, unknown>;
|
stats?: {
|
||||||
|
home?: TeamStats;
|
||||||
|
away?: TeamStats;
|
||||||
|
};
|
||||||
|
footballTeamStats?: TeamStats[];
|
||||||
|
officials?: MatchOfficial[];
|
||||||
|
winner?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface MatchEvent {
|
||||||
|
id: number;
|
||||||
|
playerId?: string;
|
||||||
|
teamId?: string;
|
||||||
|
eventType: "goal" | "card" | "substitute" | string;
|
||||||
|
eventSubtype?: string | null;
|
||||||
|
timeMinute: string;
|
||||||
|
timeSeconds?: number | null;
|
||||||
|
periodId?: number;
|
||||||
|
assistPlayerId?: string | null;
|
||||||
|
scoreAfter?: string | null;
|
||||||
|
playerOutId?: string | null;
|
||||||
|
position?: "home" | "away" | string;
|
||||||
|
player?: { id: string; name: string };
|
||||||
|
assistPlayer?: { id: string; name: string } | null;
|
||||||
|
substitutedOut?: { id: string; name: string } | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TeamStats {
|
||||||
|
id?: number;
|
||||||
|
teamId?: string;
|
||||||
|
possessionPercentage?: number | null;
|
||||||
|
shotsOnTarget?: number | null;
|
||||||
|
shotsOffTarget?: number | null;
|
||||||
|
totalShots?: number | null;
|
||||||
|
totalPasses?: number | null;
|
||||||
|
corners?: number | null;
|
||||||
|
fouls?: number | null;
|
||||||
|
offsides?: number | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface MatchOfficial {
|
||||||
|
id: number;
|
||||||
|
name: string;
|
||||||
|
roleId: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ActiveLeagueDto {
|
export interface ActiveLeagueDto {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import {
|
|||||||
|
|
||||||
const getPrediction = (matchId: string) => {
|
const getPrediction = (matchId: string) => {
|
||||||
return apiRequest<ApiResponse<MatchPredictionDto>>({
|
return apiRequest<ApiResponse<MatchPredictionDto>>({
|
||||||
url: `/predictions/${matchId}`,
|
url: `/predictions/${matchId}?nocache=true`,
|
||||||
client: "core",
|
client: "core",
|
||||||
method: "get",
|
method: "get",
|
||||||
});
|
});
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user