This commit is contained in:
Flatlogic Bot 2026-03-05 01:45:18 +00:00
parent 2489ed2a44
commit f4a3cab5d9
2 changed files with 35 additions and 37 deletions

View File

@ -169,12 +169,18 @@ module.exports = class Analysis_runsService {
allPossibleNumbers.push(i);
}
let latestDrawInfo = { first: null, last: null };
if (draws.length > 0) {
draws.forEach((draw, index) => {
draw.draw_numbers_draw.forEach(dn => {
frequencyMap[dn.number_value] = (frequencyMap[dn.number_value] || 0) + 1;
if (index === 0) lastDrawNumbers.add(dn.number_value);
const numbers = draw.draw_numbers_draw.map(dn => dn.number_value);
numbers.forEach(num => {
frequencyMap[num] = (frequencyMap[num] || 0) + 1;
if (index === 0) lastDrawNumbers.add(num);
});
if (index === 0) {
const sorted = numbers.sort((a,b) => a - b);
latestDrawInfo = { first: sorted[0], last: sorted[sorted.length - 1] };
}
});
}
@ -270,7 +276,6 @@ module.exports = class Analysis_runsService {
}
// 3. GENERATOR - Create Suggested Combinations (Sequential / Elite)
// Only pick from non-annulled numbers if possible, or at least from the top
const topNumbers = scores
.filter(s => s.probability_estimate > 0.1) // Don't pick annulled ones
.slice(0, Math.min(game.default_numbers_per_bet * 4, allPossibleNumbers.length))
@ -280,8 +285,6 @@ module.exports = class Analysis_runsService {
for (let c = 0; c < numCombosToGenerate; c++) {
const selectedNumbers = [];
const pool = [...topNumbers];
// If pool is too small because of the funnel, use all possible but it shouldn't happen
const actualPool = pool.length >= game.default_numbers_per_bet ? pool : allPossibleNumbers;
for (let j = 0; j < game.default_numbers_per_bet; j++) {
@ -319,11 +322,11 @@ module.exports = class Analysis_runsService {
}
await transaction.commit();
return analysisRun;
return { analysisRun, latestDrawInfo };
} catch (error) {
await transaction.rollback();
console.error('Quantum Analysis Error:', error);
throw error;
}
}
};
};

View File

@ -1,4 +1,4 @@
import { mdiAtom, mdiFlash, mdiTelevisionClassic, mdiChartLine, mdiCogs, mdiNumeric, mdiCalendarSearch, mdiHistory, mdiOpenInNew, mdiPrinter, mdiInformationOutline, mdiFilterMenu, mdiFilterRemove } from '@mdi/js';
import { mdiAtom, mdiFlash, mdiTelevisionClassic, mdiChartLine, mdiCogs, mdiNumeric, mdiCalendarSearch, mdiHistory, mdiOpenInNew, mdiPrinter, mdiInformationOutline, mdiFilterMenu, mdiFilterRemove, mdiSortNumericAscending } from '@mdi/js';
import Head from 'next/head';
import React, { ReactElement, useEffect, useState } from 'react';
import CardBox from '../../components/CardBox';
@ -27,6 +27,7 @@ const QuantumDashboard = () => {
const [targetContests, setTargetContests] = useState<Record<string, number>>({});
const [funnelIntensities, setFunnelIntensities] = useState<Record<string, number>>({});
const [lastAnalysisId, setLastAnalysisId] = useState<string | null>(null);
const [latestDrawInfo, setLatestDrawInfo] = useState<{ first: number | null, last: number | null }>({ first: null, last: null });
const [activeGameName, setActiveGameName] = useState('');
const [activeContest, setActiveContest] = useState(0);
const [activeFunnel, setActiveFunnel] = useState(0.95);
@ -49,15 +50,16 @@ const QuantumDashboard = () => {
funnel_intensity: funnel
})).unwrap();
if (result && result.id) {
setLastAnalysisId(result.id);
if (result && result.analysisRun && result.analysisRun.id) {
setLastAnalysisId(result.analysisRun.id);
setLatestDrawInfo(result.latestDrawInfo || { first: null, last: null });
setSuccessMsg(`IA WORLD LIVE: Funil de Entropia aplicado em ${Math.floor(funnel * 100)}% da Matriz 9999.`);
// Fetch combinations
dispatch(fetchCombos({ query: `?analysis_runId=${result.id}&limit=10` }));
dispatch(fetchCombos({ query: `?analysis_runId=${result.analysisRun.id}&limit=10` }));
// Fetch cancellations
dispatch(fetchCancellations({ query: `?analysis_runId=${result.id}&limit=1` }));
dispatch(fetchCancellations({ query: `?analysis_runId=${result.analysisRun.id}&limit=1` }));
setTimeout(() => setSuccessMsg(''), 8000);
}
@ -199,6 +201,18 @@ const QuantumDashboard = () => {
INTENSITY: {Math.floor(activeFunnel * 100)}% | VOID_SCAN: ACTIVE
</div>
</div>
{latestDrawInfo.first !== null && (
<div className="mb-6 flex gap-4 text-xs font-black uppercase tracking-widest">
<div className="bg-emerald-900/50 border border-emerald-500/50 p-2 rounded">
Primeiro Número: <span className="text-emerald-300 font-mono text-lg">{latestDrawInfo.first}</span>
</div>
<div className="bg-emerald-900/50 border border-emerald-500/50 p-2 rounded">
Último Número: <span className="text-emerald-300 font-mono text-lg">{latestDrawInfo.last}</span>
</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-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">
@ -207,7 +221,11 @@ const QuantumDashboard = () => {
<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}
{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>
@ -310,29 +328,6 @@ const QuantumDashboard = () => {
})}
</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 text-emerald-400">
<BaseIcon path={mdiFilterMenu} className="text-emerald-400 mr-4" size={40} />
Funil Automático IA World
</h3>
<p className="text-slate-300 font-bold uppercase tracking-widest text-xs leading-loose">
O Funil de Entropia sincronizado anula automaticamente números com baixa probabilidade
matemática para o concurso selecionado. O sistema analisa milhões de combinações em tempo real
para garantir que apenas o &quot;Núcleo de Elite&quot; chegue ao seu terminal.
</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">ACTIVE</div>
<div className="text-[10px] font-black uppercase tracking-[0.3em] text-slate-400">Sincronização Global</div>
</div>
</div>
</div>
</SectionMain>
</>
);