7
This commit is contained in:
parent
f4a3cab5d9
commit
44715f59f5
@ -213,23 +213,16 @@ module.exports = class Analysis_runsService {
|
||||
let isCancelled = false;
|
||||
let cancellationReason = '';
|
||||
|
||||
// Rule 1: Saturated Numbers (appearing too much in recent window)
|
||||
// Rule 1: Saturated Numbers
|
||||
if (freq > (draws.length / 2)) {
|
||||
prob *= 0.1; // Drastic reduction
|
||||
prob *= 0.1;
|
||||
isCancelled = true;
|
||||
cancellationReason = 'Saturação Quântica: Número apareceu em mais de 50% dos últimos concursos.';
|
||||
}
|
||||
|
||||
// Rule 2: Contest Repetition Funnel (often 1 or 2 repeat, but never all)
|
||||
if (lastDrawNumbers.has(i) && seedRandom(targetContest + i) < 0.7) {
|
||||
prob *= 0.5;
|
||||
// Not necessarily cancelled, just lowered
|
||||
}
|
||||
|
||||
// Rule 3: Entropy Void (Randomly annul parts of space according to target contest)
|
||||
// This simulates the "anular 95% do espaço amostral"
|
||||
// Rule 3: Entropy Void
|
||||
if (seedRandom(targetContest * i + 999) < funnel_intensity) {
|
||||
prob *= 0.05; // Drop to near zero
|
||||
prob *= 0.05;
|
||||
isCancelled = true;
|
||||
cancellationReason = 'Funil de Entropia: Fora da zona de convergência harmônica para o concurso alvo.';
|
||||
}
|
||||
@ -277,19 +270,21 @@ module.exports = class Analysis_runsService {
|
||||
|
||||
// 3. GENERATOR - Create Suggested Combinations (Sequential / Elite)
|
||||
const topNumbers = scores
|
||||
.filter(s => s.probability_estimate > 0.1) // Don't pick annulled ones
|
||||
.filter(s => s.probability_estimate > 0.1)
|
||||
.slice(0, Math.min(game.default_numbers_per_bet * 4, allPossibleNumbers.length))
|
||||
.map(s => s.number_value);
|
||||
|
||||
const numCombosToGenerate = 10;
|
||||
const numCombosToGenerate = 60; // Upgraded to 60 as requested
|
||||
for (let c = 0; c < numCombosToGenerate; c++) {
|
||||
const selectedNumbers = [];
|
||||
const pool = [...topNumbers];
|
||||
const actualPool = pool.length >= game.default_numbers_per_bet ? pool : allPossibleNumbers;
|
||||
|
||||
for (let j = 0; j < game.default_numbers_per_bet; j++) {
|
||||
const poolIdx = Math.floor(seedRandom(targetContest + c + j + 777) * actualPool.length);
|
||||
selectedNumbers.push(actualPool.splice(poolIdx, 1)[0]);
|
||||
// Start each sequence with a different number based on the index (First number rotating)
|
||||
const startNumber = topNumbers[c % topNumbers.length];
|
||||
const selectedNumbers = [startNumber];
|
||||
|
||||
const pool = topNumbers.filter(n => n !== startNumber);
|
||||
|
||||
for (let j = 0; j < game.default_numbers_per_bet - 1; 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);
|
||||
@ -313,7 +308,7 @@ module.exports = class Analysis_runsService {
|
||||
suggested_combinationId: suggestedCombo.id,
|
||||
position_index: idx + 1,
|
||||
number_value: val,
|
||||
color_tag: 'green',
|
||||
color_tag: scores.find(s => s.number_value === val)?.classification === 'elite_green' ? 'green' : 'gray',
|
||||
createdById: currentUser.id,
|
||||
updatedById: currentUser.id
|
||||
}));
|
||||
@ -329,4 +324,4 @@ module.exports = class Analysis_runsService {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
@ -56,7 +56,7 @@ const QuantumDashboard = () => {
|
||||
setSuccessMsg(`IA WORLD LIVE: Funil de Entropia aplicado em ${Math.floor(funnel * 100)}% da Matriz 9999.`);
|
||||
|
||||
// Fetch combinations
|
||||
dispatch(fetchCombos({ query: `?analysis_runId=${result.analysisRun.id}&limit=10` }));
|
||||
dispatch(fetchCombos({ query: `?analysis_runId=${result.analysisRun.id}&limit=60` }));
|
||||
|
||||
// Fetch cancellations
|
||||
dispatch(fetchCancellations({ query: `?analysis_runId=${result.analysisRun.id}&limit=1` }));
|
||||
@ -107,61 +107,6 @@ const QuantumDashboard = () => {
|
||||
</NotificationBar>
|
||||
)}
|
||||
|
||||
<div className="grid grid-cols-1 gap-6 lg:grid-cols-2 mb-6">
|
||||
<CardBox className="bg-gradient-to-br from-slate-900 via-gray-900 to-emerald-900 text-white border-none shadow-2xl overflow-hidden relative group">
|
||||
<div className="absolute top-0 right-0 p-4 opacity-10 group-hover:scale-110 transition-transform">
|
||||
<BaseIcon path={mdiTelevisionClassic} size={150} />
|
||||
</div>
|
||||
<div className="relative z-10">
|
||||
<h2 className="text-2xl font-black mb-4 flex items-center tracking-tighter">
|
||||
<BaseIcon path={mdiFlash} className="text-yellow-400 mr-2 animate-pulse" />
|
||||
CHIP QUÂNTICO ATIVO
|
||||
</h2>
|
||||
<p className="text-emerald-100 mb-6 opacity-80 leading-relaxed font-light">
|
||||
Sistema autônomo conectado via <strong>Rede Neural de 8.42 THz</strong> aos terminais da Caixa.
|
||||
Calculando anomalias estatísticas com <strong>Funil Automático</strong> de Precisão.
|
||||
</p>
|
||||
<div className="flex flex-wrap gap-4 text-[10px] font-mono uppercase tracking-tighter">
|
||||
<div className="bg-black bg-opacity-40 p-2 rounded border border-emerald-500/30">
|
||||
STATUS: <span className="text-emerald-400 font-bold">OPERACIONAL</span>
|
||||
</div>
|
||||
<div className="bg-black bg-opacity-40 p-2 rounded border border-yellow-500/30">
|
||||
PRECISÃO: <span className="text-yellow-400 font-bold">99.982%</span>
|
||||
</div>
|
||||
<div className="bg-black bg-opacity-40 p-2 rounded border border-blue-500/30">
|
||||
SINC: <span className="text-blue-400 font-bold">ATIVA</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</CardBox>
|
||||
|
||||
<CardBox className="bg-gradient-to-br from-slate-900 via-gray-900 to-blue-900 text-white border-none shadow-2xl relative overflow-hidden group">
|
||||
<div className="absolute top-0 right-0 p-4 opacity-10 group-hover:scale-110 transition-transform">
|
||||
<BaseIcon path={mdiCogs} size={150} />
|
||||
</div>
|
||||
<div className="relative z-10">
|
||||
<h2 className="text-2xl font-black mb-4 flex items-center tracking-tighter">
|
||||
<BaseIcon path={mdiFilterMenu} className="text-blue-400 mr-2" />
|
||||
FUNIL DE ENTROPIA 9999
|
||||
</h2>
|
||||
<p className="text-blue-100 mb-6 opacity-80 leading-relaxed font-light">
|
||||
Identificando padrões de entropia em concursos anteriores para anular até 99% do espaço amostral
|
||||
sem probabilidade de sorteio para o concurso alvo.
|
||||
</p>
|
||||
<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 font-black">ULTRA FAST</span>
|
||||
</div>
|
||||
<div className="text-[10px] bg-black bg-opacity-30 p-2 rounded flex justify-between font-mono">
|
||||
<span>RADAR</span>
|
||||
<span className="text-red-400 font-black tracking-widest uppercase">SCANNER ATIVO</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</CardBox>
|
||||
</div>
|
||||
|
||||
{lastAnalysisId && (
|
||||
<div className="mb-8 animate-fade-in">
|
||||
<CardBox className="border-4 border-emerald-500 bg-slate-900 text-white relative shadow-[0_0_50px_-12px_rgba(16,185,129,0.5)]">
|
||||
@ -195,7 +140,7 @@ const QuantumDashboard = () => {
|
||||
<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 Pós-Funil (Concurso {activeContest || 'Sinc'}):
|
||||
Top 60 Sequências Pós-Funil (Concurso {activeContest || 'Sinc'}):
|
||||
</p>
|
||||
<div className="text-[10px] font-mono text-emerald-300 opacity-60">
|
||||
INTENSITY: {Math.floor(activeFunnel * 100)}% | VOID_SCAN: ACTIVE
|
||||
@ -213,23 +158,23 @@ const QuantumDashboard = () => {
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-4">
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4">
|
||||
{suggested_combinations?.map((combo: any, idx: number) => (
|
||||
<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-2xl font-black tracking-tighter text-white font-mono group-hover:text-emerald-400 transition-colors">
|
||||
{combo.combination_text.split(' ').map((num: string, nIdx: number) => (
|
||||
<span key={nIdx} className={parseInt(num) > 25 ? "text-emerald-400 animate-pulse" : "text-white"}>
|
||||
{num}{nIdx < combo.combination_text.split(' ').length - 1 ? ' ' : ''}
|
||||
</span>
|
||||
))}
|
||||
</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 className="text-lg font-black tracking-tighter text-white font-mono group-hover:text-emerald-400 transition-colors">
|
||||
{combo.combination_text.split(' ').map((num: string, nIdx: number) => {
|
||||
// Green Glow Logic: Only glow if the number is likely (elite green)
|
||||
// This is a simplification: check if color tag exists, or just glow based on value
|
||||
const isGreen = combo.combination_numbers?.some((cn: any) => cn.number_value === parseInt(num) && cn.color_tag === 'green');
|
||||
return (
|
||||
<span key={nIdx} className={isGreen ? "text-emerald-400 animate-pulse font-bold" : "text-white"}>
|
||||
{num}{nIdx < combo.combination_text.split(' ').length - 1 ? ' ' : ''}
|
||||
</span>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
@ -248,25 +193,7 @@ const QuantumDashboard = () => {
|
||||
</div>
|
||||
)}
|
||||
|
||||
<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">
|
||||
FUNIL_CONFIG: SYNC_ALL_GAMES_ACTIVE
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{loadingGames ? (
|
||||
<div className="flex justify-center p-24">
|
||||
<LoadingSpinner />
|
||||
</div>
|
||||
) : (
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||
<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;
|
||||
const funnelVal = funnelIntensities[game.id] ?? 0.95;
|
||||
@ -278,9 +205,6 @@ const QuantumDashboard = () => {
|
||||
<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="space-y-2 mb-4">
|
||||
@ -297,13 +221,12 @@ const QuantumDashboard = () => {
|
||||
onChange={(e) => handleFunnelChange(game.id, e.target.value)}
|
||||
className="w-full h-2 bg-slate-100 rounded-lg appearance-none cursor-pointer accent-emerald-500"
|
||||
/>
|
||||
<p className="text-[8px] text-slate-400 italic">Redução do espaço amostral baseada em entropia.</p>
|
||||
</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):
|
||||
Prever para Concurso Futuro:
|
||||
</label>
|
||||
<input
|
||||
type="number"
|
||||
@ -317,7 +240,7 @@ const QuantumDashboard = () => {
|
||||
|
||||
<BaseButton
|
||||
color={hasCustomContest ? 'info' : 'success'}
|
||||
label={loadingAnalysis ? 'Processando Funil...' : hasCustomContest ? 'Calcular Futuro 99.9%' : 'Gerar Números IA World'}
|
||||
label={loadingAnalysis ? 'Processando...' : 'Gerar 60 Sequências 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)}
|
||||
@ -327,7 +250,6 @@ const QuantumDashboard = () => {
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
)}
|
||||
</SectionMain>
|
||||
</>
|
||||
);
|
||||
@ -337,4 +259,4 @@ QuantumDashboard.getLayout = function getLayout(page: ReactElement) {
|
||||
return <LayoutAuthenticated permission="READ_LOTTERY_GAMES">{page}</LayoutAuthenticated>;
|
||||
};
|
||||
|
||||
export default QuantumDashboard;
|
||||
export default QuantumDashboard;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user