Files
iddaai-be/scripts/find-upcoming-match.js
T
fahricansecer 2f0b85a0c7
Deploy Iddaai Backend / build-and-deploy (push) Failing after 18s
first (part 2: other directories)
2026-04-16 15:11:25 +03:00

215 lines
6.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();
async function findUpcomingMatch() {
// 1 gün sonraki maçları bul (4-5 Mart 2026)
const tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
tomorrow.setHours(0, 0, 0, 0);
const dayAfter = new Date(tomorrow);
dayAfter.setDate(dayAfter.getDate() + 1);
console.log('\n========================================');
console.log('📅 1 GÜN SONRAKİ MAÇLAR');
console.log('========================================\n');
// Timestamp'e çevir
const startTs = BigInt(tomorrow.getTime());
const endTs = BigInt(dayAfter.getTime());
const matches = await prisma.match.findMany({
where: {
sport: 'football',
mstUtc: {
gte: startTs,
lt: endTs,
},
},
include: {
homeTeam: true,
awayTeam: true,
league: true,
oddCategories: {
include: {
selections: true,
},
},
prediction: true,
aiFeatures: true,
},
take: 5,
orderBy: { mstUtc: 'asc' },
});
console.log(`Bulunan maç sayısı: ${matches.length}`);
for (const match of matches) {
console.log('\n----------------------------------------');
console.log(
`${match.homeTeam?.name || 'N/A'} vs ${match.awayTeam?.name || 'N/A'}`,
);
console.log(`🏆 Lig: ${match.league?.name || 'N/A'}`);
console.log(`📅 Tarih: ${new Date(Number(match.mstUtc)).toISOString()}`);
console.log(`🔢 İddaa Kodu: ${match.iddaaCode || 'N/A'}`);
console.log(`🏟️ Durum: ${match.state} / ${match.status}`);
// Oranlar
console.log('\n📊 ORANLAR:');
for (const cat of match.oddCategories.slice(0, 5)) {
console.log(` ${cat.name}:`);
for (const sel of cat.selections.slice(0, 5)) {
console.log(` - ${sel.name}: ${sel.oddValue}`);
}
}
// AI Features
if (match.aiFeatures) {
console.log('\n🤖 AI ÖZELLİKLER:');
console.log(` Home ELO: ${match.aiFeatures.homeElo}`);
console.log(` Away ELO: ${match.aiFeatures.awayElo}`);
console.log(` Home Form: ${match.aiFeatures.homeFormScore}`);
console.log(` Away Form: ${match.aiFeatures.awayFormScore}`);
}
// Tahmin
if (match.prediction) {
console.log('\n🔮 MEVCUT TAHMİN:');
console.log(
JSON.stringify(match.prediction.predictionJson, null, 2).substring(
0,
500,
),
);
}
}
// Detaylı analiz için ilk maçı seç
if (matches.length > 0) {
const selectedMatch = matches[0];
console.log('\n\n========================================');
console.log('🎯 SEÇİLEN MAÇ DETAY ANALİZİ');
console.log('========================================');
console.log(`Maç ID: ${selectedMatch.id}`);
// Bu maç için ne kadar verimiz var?
console.log('\n📈 VERİ KALİTESİ ANALİZİ:');
console.log(
` - Oran Kategorisi: ${selectedMatch.oddCategories.length} adet`,
);
let totalSelections = 0;
for (const cat of selectedMatch.oddCategories) {
totalSelections += cat.selections.length;
}
console.log(` - Toplam Oran Seçeneği: ${totalSelections} adet`);
console.log(` - AI Features: ${selectedMatch.aiFeatures ? 'VAR' : 'YOK'}`);
console.log(` - Prediction: ${selectedMatch.prediction ? 'VAR' : 'YOK'}`);
// Bu takımların geçmiş maçları
console.log('\n📚 TAKIM GEÇMİŞİ:');
// Ev sahibi takımın son maçları
const homeTeamMatches = await prisma.match.findMany({
where: {
OR: [
{ homeTeamId: selectedMatch.homeTeamId },
{ awayTeamId: selectedMatch.homeTeamId },
],
sport: 'football',
state: 'postGame',
},
include: {
homeTeam: true,
awayTeam: true,
},
take: 5,
orderBy: { mstUtc: 'desc' },
});
console.log(`\n ${selectedMatch.homeTeam?.name} Son 5 Maç:`);
for (const m of homeTeamMatches) {
const isHome = m.homeTeamId === selectedMatch.homeTeamId;
const goalsFor = isHome ? m.scoreHome : m.scoreAway;
const goalsAgainst = isHome ? m.scoreAway : m.scoreHome;
const result =
goalsFor > goalsAgainst ? 'W' : goalsFor < goalsAgainst ? 'L' : 'D';
console.log(
` ${result} ${m.homeTeam?.name} ${m.scoreHome}-${m.scoreAway} ${m.awayTeam?.name}`,
);
}
// Deplasman takımının son maçları
const awayTeamMatches = await prisma.match.findMany({
where: {
OR: [
{ homeTeamId: selectedMatch.awayTeamId },
{ awayTeamId: selectedMatch.awayTeamId },
],
sport: 'football',
state: 'postGame',
},
include: {
homeTeam: true,
awayTeam: true,
},
take: 5,
orderBy: { mstUtc: 'desc' },
});
console.log(`\n ${selectedMatch.awayTeam?.name} Son 5 Maç:`);
for (const m of awayTeamMatches) {
const isHome = m.homeTeamId === selectedMatch.awayTeamId;
const goalsFor = isHome ? m.scoreHome : m.scoreAway;
const goalsAgainst = isHome ? m.scoreAway : m.scoreHome;
const result =
goalsFor > goalsAgainst ? 'W' : goalsFor < goalsAgainst ? 'L' : 'D';
console.log(
` ${result} ${m.homeTeam?.name} ${m.scoreHome}-${m.scoreAway} ${m.awayTeam?.name}`,
);
}
// Head-to-Head
console.log('\n🔄 HEAD-TO-HEAD (Karşılıklı):');
const h2hMatches = await prisma.match.findMany({
where: {
OR: [
{
homeTeamId: selectedMatch.homeTeamId,
awayTeamId: selectedMatch.awayTeamId,
},
{
homeTeamId: selectedMatch.awayTeamId,
awayTeamId: selectedMatch.homeTeamId,
},
],
sport: 'football',
state: 'postGame',
},
include: {
homeTeam: true,
awayTeam: true,
},
take: 5,
orderBy: { mstUtc: 'desc' },
});
if (h2hMatches.length > 0) {
for (const m of h2hMatches) {
console.log(
` ${m.homeTeam?.name} ${m.scoreHome}-${m.scoreAway} ${m.awayTeam?.name}`,
);
}
} else {
console.log(' Karşılıklı maç bulunamadı');
}
}
await prisma.$disconnect();
}
findUpcomingMatch().catch((e) => {
console.error('Hata:', e);
process.exit(1);
});