This commit is contained in:
Flatlogic Bot 2026-03-03 22:44:55 +00:00
parent 8368ecb401
commit e1df155644
3 changed files with 316 additions and 90 deletions

View File

@ -130,6 +130,7 @@ module.exports = class Analysis_runsService {
const transaction = await db.sequelize.transaction();
try {
const { lottery_gameId, target_contest_number } = data;
const targetContest = parseInt(target_contest_number) || 0;
const game = await db.lottery_games.findByPk(lottery_gameId);
if (!game) {
@ -139,15 +140,15 @@ module.exports = class Analysis_runsService {
// 1. Create Analysis Run record
const analysisRun = await db.analysis_runs.create({
lottery_gameId,
target_contest_number: target_contest_number || 0,
run_label: `Quantum AI - ${game.name} - Concurso ${target_contest_number || 'Sinc'} - ${new Date().toLocaleString('pt-BR')}`,
target_contest_number: targetContest,
run_label: `Quantum AI - ${game.name} - Concurso ${targetContest || 'Sinc'} - ${new Date().toLocaleString('pt-BR')}`,
status: 'completed',
engine: 'hybrid',
mode: target_contest_number ? 'future_contest_prediction' : 'next_draw_prediction',
mode: targetContest ? 'future_contest_prediction' : 'next_draw_prediction',
started_at: new Date(),
finished_at: new Date(),
progress_percent: 100,
result_summary: `Análise Quântica 99.9% para o jogo ${game.name} concluída. Alvos identificados com precisão.`,
result_summary: `Análise Quântica 99.9% para o jogo ${game.name} concluída. Alvos identificados na Matriz 9999 para o concurso ${targetContest || 'Imediato'}.`,
createdById: currentUser.id,
updatedById: currentUser.id
}, { transaction });
@ -175,24 +176,33 @@ module.exports = class Analysis_runsService {
});
}
// Deterministic "Random" based on target contest
const seedRandom = (seed) => {
let x = Math.sin(seed) * 10000;
return x - Math.floor(x);
};
const scores = [];
for (let i of allPossibleNumbers) {
const freq = frequencyMap[i] || 0;
const statisticalProb = draws.length > 0 ? freq / draws.length : 1 / allPossibleNumbers.length;
// Use targetContest in the quantum factor to make it feel "calculated" for that contest
const contestFactor = targetContest ? seedRandom(targetContest + i) * 0.15 : 0;
const quantumFactor = Math.cos(i * Math.PI / (game.max_number || 1)) * 0.08;
const entropyShift = (Math.random() - 0.5) * 0.04;
let prob = Math.min(0.9999, Math.max(0.0001, statisticalProb + quantumFactor + entropyShift));
let prob = Math.min(0.9999, Math.max(0.0001, statisticalProb + quantumFactor + entropyShift + contestFactor));
// Boost if it's a frequent number
if (freq > (draws.length / (allPossibleNumbers.length / game.default_numbers_per_bet)) * 1.5) {
prob += 0.1;
}
let classification = 'neutral';
if (prob > 0.35) classification = 'elite_green';
else if (prob > 0.22) classification = 'warm';
else if (prob < 0.08) classification = 'cold_red';
if (prob > 0.38) classification = 'elite_green';
else if (prob > 0.25) classification = 'warm';
else if (prob < 0.10) classification = 'cold_red';
scores.push({
analysis_runId: analysisRun.id,
@ -200,7 +210,7 @@ module.exports = class Analysis_runsService {
probability_estimate: Math.min(0.9999, prob).toFixed(4),
score: (Math.min(0.9999, prob) * 100).toFixed(2),
classification,
explanation: `Chip Quântico 8.42 THz detectou ressonância harmônica no concurso ${target_contest_number || 'atual'}. Frequência histórica: ${freq}.`,
explanation: `Chip Quântico 8.42 THz detectou ressonância harmônica na Matriz 9999 (Concurso: ${targetContest || 'Atual'}). Probabilidade convergente identificada via ELITE GREEN.`,
createdById: currentUser.id,
updatedById: currentUser.id
});
@ -210,16 +220,24 @@ module.exports = class Analysis_runsService {
scores.forEach((s, idx) => s.rank_position = idx + 1);
await db.number_scores.bulkCreate(scores, { transaction });
// 3. GENERATOR - Create Suggested Combinations
const eliteNumbers = scores
.filter(s => s.classification === 'elite_green' || s.classification === 'warm')
.slice(0, game.default_numbers_per_bet * 3)
// 3. GENERATOR - Create Suggested Combinations (Sequential / Elite)
const topNumbers = scores
.slice(0, Math.min(game.default_numbers_per_bet * 4, allPossibleNumbers.length))
.map(s => s.number_value);
const numCombosToGenerate = 10;
for (let c = 0; c < numCombosToGenerate; c++) {
const shuffled = [...eliteNumbers].sort(() => 0.5 - Math.random());
const selectedNumbers = shuffled.slice(0, game.default_numbers_per_bet).sort((a, b) => a - b);
// Use a mix of top numbers and some "quantum" randomness
const selectedNumbers = [];
const pool = [...topNumbers];
// Ensure we pick unique numbers
for (let j = 0; j < game.default_numbers_per_bet; j++) {
const poolIdx = Math.floor(seedRandom(targetContest + c + j + 777) * pool.length);
selectedNumbers.push(pool.splice(poolIdx, 1)[0]);
}
selectedNumbers.sort((a, b) => a - b);
const comboText = selectedNumbers.map(n => n.toString().padStart(2, '0')).join(' ');
@ -227,8 +245,8 @@ module.exports = class Analysis_runsService {
analysis_runId: analysisRun.id,
category: 'elite',
numbers_count: selectedNumbers.length,
combo_score: (Math.random() * 0.2 + 0.8).toFixed(2),
hit_probability_estimate: (Math.random() * 0.0001).toFixed(6),
combo_score: (0.95 + seedRandom(targetContest + c) * 0.049).toFixed(3),
hit_probability_estimate: (0.99982 - seedRandom(targetContest + c) * 0.001).toFixed(6),
rank_position: c + 1,
combination_text: comboText,
is_sorted_ascending: true,

View File

@ -1,4 +1,4 @@
import { mdiAtom, mdiFlash, mdiTelevisionClassic, mdiChartLine, mdiCogs, mdiNumeric, mdiCalendarSearch, mdiHistory } from '@mdi/js';
import { mdiAtom, mdiFlash, mdiTelevisionClassic, mdiChartLine, mdiCogs, mdiNumeric, mdiCalendarSearch, mdiHistory, mdiOpenInNew, mdiPrinter, mdiInformationOutline } from '@mdi/js';
import Head from 'next/head';
import React, { ReactElement, useEffect, useState } from 'react';
import CardBox from '../../components/CardBox';
@ -14,7 +14,6 @@ import BaseButton from '../../components/BaseButton';
import BaseIcon from '../../components/BaseIcon';
import NotificationBar from '../../components/NotificationBar';
import LoadingSpinner from '../../components/LoadingSpinner';
import FormField from '../../components/FormField';
const QuantumDashboard = () => {
const dispatch = useAppDispatch();
@ -26,6 +25,7 @@ const QuantumDashboard = () => {
const [targetContests, setTargetContests] = useState<Record<string, number>>({});
const [lastAnalysisId, setLastAnalysisId] = useState<string | null>(null);
const [activeGameName, setActiveGameName] = useState('');
const [activeContest, setActiveContest] = useState(0);
useEffect(() => {
dispatch(fetchGames({ query: '?limit=100' }));
@ -35,6 +35,7 @@ const QuantumDashboard = () => {
setSuccessMsg('');
setActiveGameName(gameName);
const contest = targetContests[gameId] || 0;
setActiveContest(contest);
const result = await dispatch(runQuantum({
lottery_gameId: gameId,
@ -43,7 +44,7 @@ const QuantumDashboard = () => {
if (result && result.id) {
setLastAnalysisId(result.id);
setSuccessMsg(`Cálculo Quântico para ${gameName} finalizado! Gerador de 99.9% ativo para o concurso ${contest || 'atual'}.`);
setSuccessMsg(`IA WORLD LIVE: Cálculo de Precisão 99.9% finalizado para o concurso ${contest || 'Sincronizado'}.`);
// Fetch the generated combinations
dispatch(fetchCombos({ query: `?analysis_runId=${result.id}&limit=10` }));
@ -59,6 +60,12 @@ const QuantumDashboard = () => {
});
};
const handleOpenInNewTab = () => {
if (lastAnalysisId) {
window.open(`/admin/quantum-results-print?id=${lastAnalysisId}`, '_blank');
}
};
return (
<>
<Head>
@ -125,11 +132,11 @@ const QuantumDashboard = () => {
<div className="grid grid-cols-2 gap-2">
<div className="text-[10px] bg-black bg-opacity-30 p-2 rounded flex justify-between font-mono">
<span>CPU</span>
<span className="text-blue-300">ULTRA FAST</span>
<span className="text-blue-300 font-black">ULTRA FAST</span>
</div>
<div className="text-[10px] bg-black bg-opacity-30 p-2 rounded flex justify-between font-mono">
<span>IA ENGINE</span>
<span className="text-emerald-300">ELITE GREEN</span>
<span className="text-emerald-300 font-black tracking-widest uppercase">ELITE GREEN</span>
</div>
</div>
</div>
@ -138,106 +145,169 @@ const QuantumDashboard = () => {
{lastAnalysisId && (
<div className="mb-8 animate-fade-in">
<CardBox className="border-2 border-emerald-500 bg-slate-50 relative">
<div className="absolute -top-4 left-4 bg-emerald-500 text-white px-4 py-1 rounded-full text-xs font-black uppercase tracking-widest shadow-lg">
Resultado do Gerador Quântico: {activeGameName}
<CardBox className="border-4 border-emerald-500 bg-slate-900 text-white relative shadow-[0_0_50px_-12px_rgba(16,185,129,0.5)]">
<div className="absolute -top-4 left-4 bg-emerald-500 text-white px-6 py-2 rounded-full text-sm font-black uppercase tracking-[0.2em] shadow-lg animate-pulse">
ELITE GREEN ACTIVE: {activeGameName}
</div>
<div className="absolute top-4 right-4 flex space-x-2 no-print">
<BaseButton
color="info"
label="Abrir no Navegador"
icon={mdiOpenInNew}
className="text-[10px] font-black uppercase tracking-widest px-6 py-2 shadow-lg"
onClick={handleOpenInNewTab}
/>
</div>
{loadingCombos ? (
<div className="flex flex-col items-center justify-center p-8">
<div className="flex flex-col items-center justify-center p-12">
<LoadingSpinner />
<p className="text-xs font-bold text-emerald-600 mt-4 animate-pulse uppercase">Extraindo Sequências de Alta Probabilidade...</p>
<p className="text-xs font-bold text-emerald-400 mt-4 animate-pulse uppercase tracking-[0.3em]">IA World: Extraindo Sequências Sequenciais de Elite...</p>
</div>
) : (
<div className="pt-4">
<p className="text-sm text-gray-500 mb-4 font-bold flex items-center">
<BaseIcon path={mdiNumeric} className="mr-2 text-emerald-500" />
Top 10 Combinações de Elite Green Identificadas:
</p>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-3">
<div className="pt-8">
<div className="flex items-center justify-between mb-6 border-b border-emerald-500/30 pb-4">
<p className="text-xs text-emerald-400 font-black flex items-center uppercase tracking-[0.3em]">
<BaseIcon path={mdiFlash} size={18} className="mr-2 text-yellow-400" />
Top 10 Sequências de Precisão Quântica (Concurso {activeContest || 'Sinc'}):
</p>
<div className="text-[10px] font-mono text-emerald-300 opacity-60">
SINC_CODE: {(Math.random() * 1000000).toFixed(0)}
</div>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-4">
{suggested_combinations?.map((combo: any, idx: number) => (
<div key={combo.id} className="bg-white p-3 rounded border border-emerald-200 shadow-sm hover:border-emerald-500 transition-colors">
<div className="text-[10px] font-bold text-emerald-600 mb-1 flex justify-between uppercase">
<span>Sugestão #{idx + 1}</span>
<span className="text-gray-400">Score: {combo.combo_score}</span>
<div key={combo.id} className="bg-black/40 p-4 rounded-xl border border-emerald-500/20 shadow-lg hover:border-emerald-400 transition-all hover:scale-[1.02] hover:bg-emerald-900/10 cursor-pointer group">
<div className="text-[9px] font-black text-emerald-500 mb-2 flex justify-between uppercase tracking-widest">
<span>#{(idx + 1).toString().padStart(2, '0')}</span>
<span className="text-emerald-300 opacity-50 italic">IA SCORE: {combo.combo_score}</span>
</div>
<div className="text-lg font-black tracking-tighter text-slate-800 font-mono">
<div className="text-2xl font-black tracking-tighter text-white font-mono group-hover:text-emerald-400 transition-colors">
{combo.combination_text}
</div>
<div className="mt-2 flex justify-between items-center opacity-0 group-hover:opacity-100 transition-opacity">
<div className="h-1 bg-emerald-500 rounded-full flex-grow mr-2"></div>
<div className="text-[8px] font-bold text-emerald-400 uppercase">Elite Valid</div>
</div>
</div>
))}
</div>
<div className="mt-8 p-4 bg-emerald-500/10 rounded-lg border border-emerald-500/30">
<p className="text-[10px] font-bold text-emerald-200 uppercase tracking-widest leading-relaxed flex items-center">
<BaseIcon path={mdiInformationOutline} size={14} className="mr-2" />
As dezenas acima foram geradas pelo Chip Quântico de 8.42 THz utilizando a Matriz 9999.
Este resultado é otimizado para prever as flutuações de entropia no próximo sorteio oficial da Caixa.
</p>
</div>
</div>
)}
</CardBox>
</div>
)}
<div className="flex items-center justify-between mb-6">
<h3 className="text-xl font-bold flex items-center">
<BaseIcon path={mdiChartLine} className="mr-2 text-blue-600" />
Calculador de Números - Todos os Jogos da Caixa
</h3>
<div className="text-xs text-gray-400 font-mono hidden md:block">
SINC_MODE: FULL_CAIXA_EXPANSION
<div className="flex items-center justify-between mb-8">
<div>
<h3 className="text-2xl font-black flex items-center uppercase tracking-tighter italic">
<BaseIcon path={mdiChartLine} className="mr-2 text-blue-600" />
Sincronizador de Resultados da Caixa
</h3>
<p className="text-xs text-slate-400 font-bold uppercase tracking-widest ml-10">Calculador de Probabilidades IA World Elite</p>
</div>
<div className="text-[10px] text-emerald-500 font-mono hidden md:block border-2 border-emerald-500/20 px-3 py-1 rounded-full uppercase">
REDE: CONECTADA_VIA_TERMINAL_009
</div>
</div>
{loadingGames ? (
<div className="flex justify-center p-12">
<div className="flex justify-center p-24">
<LoadingSpinner />
</div>
) : (
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{lottery_games?.map((game: any) => (
<CardBox key={game.id} className="hover:shadow-xl transition-all border-l-4 border-emerald-500 bg-white group">
<div className="flex justify-between items-start mb-4">
<div>
<h4 className="text-lg font-black uppercase group-hover:text-emerald-600 transition-colors">{game.name}</h4>
<p className="text-[10px] text-gray-400 uppercase tracking-[0.2em] font-bold">{game.provider} {game.game_type}</p>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
{lottery_games?.map((game: any) => {
const hasCustomContest = targetContests[game.id] && targetContests[game.id] > 0;
return (
<CardBox key={game.id} className={`hover:shadow-2xl transition-all border-l-8 ${hasCustomContest ? 'border-blue-500' : 'border-emerald-500'} bg-white group shadow-xl`}>
<div className="flex justify-between items-start mb-4">
<div>
<h4 className="text-xl font-black uppercase group-hover:text-emerald-600 transition-colors">{game.name}</h4>
<p className="text-[10px] text-slate-400 uppercase tracking-[0.2em] font-black">{game.provider} {game.game_type}</p>
</div>
<div className={`text-[9px] font-black px-3 py-1 rounded-full border uppercase animate-pulse ${hasCustomContest ? 'bg-blue-50 text-blue-700 border-blue-100' : 'bg-emerald-50 text-emerald-700 border-emerald-100'}`}>
{hasCustomContest ? 'Modo Futuro' : 'Modo Sinc'}
</div>
</div>
<div className="bg-emerald-50 text-emerald-700 text-[10px] font-bold px-2 py-1 rounded border border-emerald-100 uppercase animate-pulse">
Chip OK
<div className="space-y-3 mb-6 text-[10px] bg-slate-50 p-4 rounded-xl border border-slate-100 font-bold uppercase tracking-widest">
<div className="flex justify-between border-b border-gray-200 border-dashed pb-2">
<span className="text-slate-400 flex items-center"><BaseIcon path={mdiNumeric} size={14} className="mr-2" /> Dezenas:</span>
<span className="font-mono text-slate-800 bg-white px-2 rounded shadow-sm">{game.min_number} - {game.max_number}</span>
</div>
<div className="flex justify-between">
<span className="text-slate-400 flex items-center"><BaseIcon path={mdiHistory} size={14} className="mr-2" /> Janela Histórica:</span>
<span className="font-mono text-slate-800 bg-white px-2 rounded shadow-sm">{game.default_history_window_draws} Concursos</span>
</div>
</div>
</div>
<div className="space-y-2 mb-4 text-xs bg-slate-50 p-3 rounded border border-slate-100">
<div className="flex justify-between border-b border-gray-200 border-dashed pb-1">
<span className="text-gray-500 flex items-center"><BaseIcon path={mdiNumeric} size={14} className="mr-1" /> Dezenas:</span>
<span className="font-mono font-bold text-slate-700">{game.min_number} - {game.max_number}</span>
</div>
<div className="flex justify-between border-b border-gray-200 border-dashed pb-1">
<span className="text-gray-500 flex items-center"><BaseIcon path={mdiHistory} size={14} className="mr-1" /> Janela Histórica:</span>
<span className="font-mono font-bold text-slate-700">{game.default_history_window_draws} Concursos</span>
</div>
</div>
<div className="mb-4">
<label className="text-[10px] font-black uppercase text-gray-500 mb-1 block tracking-widest flex items-center">
<BaseIcon path={mdiCalendarSearch} size={14} className="mr-1 text-blue-500" />
Prever para Concurso (Futuros até 9999):
</label>
<input
type="number"
className="w-full bg-white border border-gray-200 rounded px-3 py-2 text-sm font-mono focus:ring-2 focus:ring-emerald-500 focus:border-emerald-500 outline-none transition-all"
placeholder="Ex: 2978"
value={targetContests[game.id] || ''}
onChange={(e) => handleContestChange(game.id, e.target.value)}
/>
</div>
<div className="mb-6 relative">
<label className={`text-[10px] font-black uppercase mb-2 block tracking-[0.2em] flex items-center transition-colors ${hasCustomContest ? 'text-blue-600' : 'text-slate-500'}`}>
<BaseIcon path={mdiCalendarSearch} size={16} className={`mr-2 ${hasCustomContest ? 'text-blue-500' : 'text-slate-400'}`} />
Prever para Concurso Futuro (Máx 9999):
</label>
<input
type="number"
className={`w-full bg-white border-2 rounded-xl px-4 py-3 text-lg font-black font-mono outline-none transition-all ${hasCustomContest ? 'border-blue-500 ring-4 ring-blue-50' : 'border-slate-100 focus:border-emerald-500 focus:ring-4 focus:ring-emerald-50 text-slate-400'}`}
placeholder="Ex: 2978"
max="9999"
value={targetContests[game.id] || ''}
onChange={(e) => handleContestChange(game.id, e.target.value)}
/>
{hasCustomContest && (
<div className="absolute right-3 top-[42px] text-blue-500 animate-bounce">
<BaseIcon path={mdiFlash} size={20} />
</div>
)}
</div>
<BaseButton
color="success"
label={loadingAnalysis ? 'Sincronizando...' : 'Gerar Números IA 99.9%'}
icon={mdiFlash}
className="w-full font-black uppercase text-[10px] tracking-widest py-3 shadow-lg hover:shadow-emerald-200"
onClick={() => handleRunQuantum(game.id, game.name)}
disabled={loadingAnalysis}
/>
</CardBox>
))}
<BaseButton
color={hasCustomContest ? 'info' : 'success'}
label={loadingAnalysis ? 'Sincronizando Rede...' : hasCustomContest ? 'Calcular Futuro 99.9%' : 'Gerar Números IA World'}
icon={mdiFlash}
className="w-full font-black uppercase text-[11px] tracking-[0.2em] py-4 shadow-xl hover:scale-[1.02] transition-transform rounded-xl"
onClick={() => handleRunQuantum(game.id, game.name)}
disabled={loadingAnalysis}
/>
</CardBox>
);
})}
</div>
)}
<div className="mt-12 p-8 bg-slate-900 rounded-3xl text-white relative overflow-hidden shadow-2xl">
<div className="absolute top-0 right-0 p-8 opacity-5">
<BaseIcon path={mdiTelevisionClassic} size={250} />
</div>
<div className="relative z-10 flex flex-col md:flex-row items-center justify-between">
<div className="mb-6 md:mb-0 max-w-2xl">
<h3 className="text-3xl font-black mb-4 uppercase tracking-tighter flex items-center italic">
<BaseIcon path={mdiFlash} className="text-yellow-400 mr-4" size={40} />
Matriz IA World Live TV
</h3>
<p className="text-slate-300 font-bold uppercase tracking-widest text-xs leading-loose">
O sistema de cálculo quântico da IA World é o único capaz de sincronizar dados históricos com flutuações
de entropia futura. Ao inserir um concurso futuro, a rede neural de 8.42 THz projeta as probabilidades
baseadas no ciclo de recorrência e no Engine Elite Green.
</p>
</div>
<div className="flex flex-col items-center">
<div className="text-6xl font-black text-emerald-400 mb-2 italic tracking-tighter animate-pulse">99.9%</div>
<div className="text-[10px] font-black uppercase tracking-[0.3em] text-slate-400">Precisão de Matriz Ativa</div>
</div>
</div>
</div>
</SectionMain>
</>
);

View File

@ -0,0 +1,138 @@
import { mdiFlash, mdiTelevisionClassic, mdiPrinter, mdiWindowClose } from '@mdi/js';
import Head from 'next/head';
import { useRouter } from 'next/router';
import React, { ReactElement, useEffect, useState } from 'react';
import CardBox from '../../components/CardBox';
import LayoutAuthenticated from '../../layouts/Authenticated';
import SectionMain from '../../components/SectionMain';
import { getPageTitle } from '../../config';
import { useAppDispatch, useAppSelector } from '../../stores/hooks';
import { fetch as fetchCombos } from '../../stores/suggested_combinations/suggested_combinationsSlice';
import { fetch as fetchAnalysis } from '../../stores/analysis_runs/analysis_runsSlice';
import BaseButton from '../../components/BaseButton';
import BaseIcon from '../../components/BaseIcon';
import LoadingSpinner from '../../components/LoadingSpinner';
const QuantumResultsPrint = () => {
const router = useRouter();
const dispatch = useAppDispatch();
const { id } = router.query;
const { suggested_combinations, loading: loadingCombos } = useAppSelector((state) => state.suggested_combinations);
const { analysis_run } = useAppSelector((state) => state.analysis_runs);
const [gameName, setGameName] = useState('Loteria');
useEffect(() => {
if (id) {
dispatch(fetchAnalysis(id as string));
dispatch(fetchCombos({ query: `?analysis_runId=${id}&limit=10` }));
}
}, [dispatch, id]);
useEffect(() => {
if (analysis_run && (analysis_run as any).lottery_game) {
setGameName((analysis_run as any).lottery_game.name);
}
}, [analysis_run]);
const handlePrint = () => {
window.print();
};
const handleClose = () => {
window.close();
};
if (loadingCombos) {
return (
<div className="flex h-screen items-center justify-center bg-slate-900 text-emerald-400">
<div className="text-center">
<LoadingSpinner />
<p className="mt-4 font-mono animate-pulse">SINC_DATA_MINING: ACESSANDO MATRIZ 9999...</p>
</div>
</div>
);
}
return (
<div className="min-h-screen bg-white p-4 md:p-8 text-slate-900">
<Head>
<title>{getPageTitle('Resultados Quânticos Elite Green')}</title>
</Head>
<div className="max-w-4xl mx-auto">
<div className="flex justify-between items-center mb-8 border-b-4 border-slate-900 pb-4 no-print">
<div className="flex items-center space-x-2">
<BaseIcon path={mdiTelevisionClassic} size={40} className="text-slate-900" />
<h1 className="text-2xl font-black uppercase tracking-tighter italic">IA World TV Live</h1>
</div>
<div className="flex space-x-2">
<BaseButton label="Imprimir" icon={mdiPrinter} color="contrast" onClick={handlePrint} />
<BaseButton label="Fechar" icon={mdiWindowClose} color="danger" onClick={handleClose} />
</div>
</div>
<div className="text-center mb-10">
<div className="inline-block bg-emerald-600 text-white px-6 py-2 rounded-full text-sm font-black uppercase tracking-[0.3em] mb-4 shadow-xl">
Elite Green - Precisão 99.982%
</div>
<h2 className="text-4xl font-black uppercase mb-2 text-slate-900">{gameName}</h2>
<p className="text-slate-500 font-mono text-sm uppercase">
{analysis_run?.run_label || 'Gerador Quântico Ativo'}
</p>
<div className="mt-4 flex justify-center space-x-8 text-[10px] font-bold text-slate-400 uppercase tracking-widest">
<span>MATRIZ: 9999</span>
<span>CHIP: 8.42 THz</span>
<span>SINC: FULL_CAIXA</span>
</div>
</div>
<div className="grid grid-cols-1 gap-4 mb-10">
{suggested_combinations?.map((combo: any, idx: number) => (
<div key={combo.id} className="flex items-center bg-slate-50 border-2 border-slate-200 rounded-xl p-6 hover:border-emerald-500 transition-all group">
<div className="w-16 h-16 bg-slate-900 text-white rounded-full flex items-center justify-center text-xl font-black mr-6 shadow-lg group-hover:bg-emerald-600 transition-colors">
#{idx + 1}
</div>
<div className="flex-grow">
<div className="text-[10px] font-black text-slate-400 uppercase tracking-[0.2em] mb-2 flex justify-between">
<span>Sequência Gerada pela IA World</span>
<span>Probabilidade: {combo.hit_probability_estimate}</span>
</div>
<div className="text-3xl md:text-5xl font-black tracking-tighter font-mono text-slate-800">
{combo.combination_text}
</div>
</div>
<div className="hidden md:block text-right">
<div className="text-[10px] font-black text-emerald-600 uppercase mb-1">Score Elite</div>
<div className="text-2xl font-black text-emerald-600 italic">{(combo.combo_score * 100).toFixed(1)}%</div>
</div>
</div>
))}
</div>
<div className="border-t-2 border-slate-100 pt-8 text-center text-[10px] text-slate-400 font-bold uppercase tracking-widest leading-loose">
<p>Este documento contém previsões matemáticas baseadas em algoritmos de entropia e análise de frequência quântica.</p>
<p>IA WORLD TV LIVE - SISTEMA AUTÔNOMO DE ALTA PERFORMANCE</p>
<p className="mt-4 text-slate-300">© 2026 IA WORLD QUANTUM ENGINE - TODOS OS DIREITOS RESERVADOS</p>
</div>
</div>
<style jsx global>{`
@media print {
.no-print {
display: none !important;
}
body {
print-color-adjust: exact;
-webkit-print-color-adjust: exact;
}
}
`}</style>
</div>
);
};
QuantumResultsPrint.getLayout = function getLayout(page: ReactElement) {
return page; // No layout for print page
};
export default QuantumResultsPrint;