gg
Deploy Iddaai Frontend / build-and-deploy (push) Successful in 2m24s

This commit is contained in:
2026-05-17 02:19:55 +03:00
parent 66877b88ca
commit e744a62fc2
10 changed files with 856 additions and 183 deletions
Vendored
BIN
View File
Binary file not shown.
+11
View File
@@ -0,0 +1,11 @@
{
"version": "0.0.1",
"configurations": [
{
"name": "frontend",
"runtimeExecutable": "npm",
"runtimeArgs": ["run", "dev"],
"port": 6195
}
]
}
+20 -1
View File
@@ -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
View File
@@ -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",
+1 -1
View File
@@ -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">
+49 -2
View File
@@ -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 {
+1 -1
View File
@@ -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",
}); });
+1 -1
View File
File diff suppressed because one or more lines are too long