g3
Deploy Iddaai Frontend / build-and-deploy (push) Successful in 2m35s

This commit is contained in:
2026-06-02 23:47:17 +03:00
parent 712afec2b7
commit fbf279d2d0
3 changed files with 67 additions and 0 deletions
@@ -1214,6 +1214,27 @@ export default function PredictionCard({ prediction }: PredictionCardProps) {
};
})();
// ── En Güvenilir Okuma (akıllı market seçimi) ──────────────────────
// Backtest: always-MS headline = %53 hit; picking the HIGHEST-confidence
// market per match = %74 hit (DC / Üst1.5 / Üst3.5 etc.). The model's
// probabilities are fine — the upgrade is *choosing which market to lead
// with*. We surface the most reliable read (highest calibrated_confidence
// across all bet_summary markets), so e.g. a match with an unclear winner
// but a clear "Üst 2.5" leads with the goals call instead of a coin-flip MS.
const mostReliableRead = (() => {
const items = prediction.bet_summary;
if (!Array.isArray(items) || items.length === 0) return null;
let best: (typeof items)[number] | null = null;
for (const it of items) {
const conf = it.calibrated_confidence ?? 0;
// require a genuinely confident read; skip near-coinflip
if (conf < 55) continue;
if (!best || conf > (best.calibrated_confidence ?? 0)) best = it;
}
if (!best) return null;
return best;
})();
const sport = getPredictionSport(prediction);
const isBasketball = sport === "basketball";
@@ -1494,6 +1515,48 @@ export default function PredictionCard({ prediction }: PredictionCardProps) {
</Box>
) : null}
{mostReliableRead ? (
<Box
p={4}
bg={statCardBg}
borderWidth="1px"
borderColor={borderColor}
borderRadius="2xl"
>
<HStack justify="space-between" align="start" flexWrap="wrap" gap={2}>
<VStack align="start" gap={1}>
<Badge colorPalette="teal" variant="subtle" borderRadius="full">
{uiText("most-reliable-read", "En Güvenilir Okuma")}
</Badge>
<HStack gap={2}>
<Text fontSize="xl" fontWeight="bold">
{getMarketLabel(mostReliableRead.market, marketLabels)}:{" "}
{mostReliableRead.pick}
</Text>
</HStack>
<Text fontSize="sm" color="fg.muted" maxW="440px">
{uiText(
"most-reliable-copy",
"Bu maçta modelin en yüksek isabetle okuduğu market. Maç sonucu belirsiz olsa bile bu okuma daha güçlü olabilir.",
)}
</Text>
</VStack>
<VStack align="end" gap={0}>
<Text fontSize="2xl" fontWeight="bold" color="teal.500">
{formatPercent(
mostReliableRead.unified_score ??
mostReliableRead.calibrated_confidence,
0,
)}
</Text>
<Text fontSize="xs" color="fg.muted">
{uiText("confidence-label", "Güven")}
</Text>
</VStack>
</HStack>
</Box>
) : null}
{recommendedPick ? (
<Grid templateColumns={{ base: "1fr", xl: "1.4fr 1fr" }} gap={4}>
<Box