6
This commit is contained in:
parent
2489ed2a44
commit
f4a3cab5d9
@ -169,12 +169,18 @@ module.exports = class Analysis_runsService {
|
|||||||
allPossibleNumbers.push(i);
|
allPossibleNumbers.push(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let latestDrawInfo = { first: null, last: null };
|
||||||
if (draws.length > 0) {
|
if (draws.length > 0) {
|
||||||
draws.forEach((draw, index) => {
|
draws.forEach((draw, index) => {
|
||||||
draw.draw_numbers_draw.forEach(dn => {
|
const numbers = draw.draw_numbers_draw.map(dn => dn.number_value);
|
||||||
frequencyMap[dn.number_value] = (frequencyMap[dn.number_value] || 0) + 1;
|
numbers.forEach(num => {
|
||||||
if (index === 0) lastDrawNumbers.add(dn.number_value);
|
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)
|
// 3. GENERATOR - Create Suggested Combinations (Sequential / Elite)
|
||||||
// Only pick from non-annulled numbers if possible, or at least from the top
|
|
||||||
const topNumbers = scores
|
const topNumbers = scores
|
||||||
.filter(s => s.probability_estimate > 0.1) // Don't pick annulled ones
|
.filter(s => s.probability_estimate > 0.1) // Don't pick annulled ones
|
||||||
.slice(0, Math.min(game.default_numbers_per_bet * 4, allPossibleNumbers.length))
|
.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++) {
|
for (let c = 0; c < numCombosToGenerate; c++) {
|
||||||
const selectedNumbers = [];
|
const selectedNumbers = [];
|
||||||
const pool = [...topNumbers];
|
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;
|
const actualPool = pool.length >= game.default_numbers_per_bet ? pool : allPossibleNumbers;
|
||||||
|
|
||||||
for (let j = 0; j < game.default_numbers_per_bet; j++) {
|
for (let j = 0; j < game.default_numbers_per_bet; j++) {
|
||||||
@ -319,11 +322,11 @@ module.exports = class Analysis_runsService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
await transaction.commit();
|
await transaction.commit();
|
||||||
return analysisRun;
|
return { analysisRun, latestDrawInfo };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
await transaction.rollback();
|
await transaction.rollback();
|
||||||
console.error('Quantum Analysis Error:', error);
|
console.error('Quantum Analysis Error:', error);
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -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 Head from 'next/head';
|
||||||
import React, { ReactElement, useEffect, useState } from 'react';
|
import React, { ReactElement, useEffect, useState } from 'react';
|
||||||
import CardBox from '../../components/CardBox';
|
import CardBox from '../../components/CardBox';
|
||||||
@ -27,6 +27,7 @@ const QuantumDashboard = () => {
|
|||||||
const [targetContests, setTargetContests] = useState<Record<string, number>>({});
|
const [targetContests, setTargetContests] = useState<Record<string, number>>({});
|
||||||
const [funnelIntensities, setFunnelIntensities] = useState<Record<string, number>>({});
|
const [funnelIntensities, setFunnelIntensities] = useState<Record<string, number>>({});
|
||||||
const [lastAnalysisId, setLastAnalysisId] = useState<string | null>(null);
|
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 [activeGameName, setActiveGameName] = useState('');
|
||||||
const [activeContest, setActiveContest] = useState(0);
|
const [activeContest, setActiveContest] = useState(0);
|
||||||
const [activeFunnel, setActiveFunnel] = useState(0.95);
|
const [activeFunnel, setActiveFunnel] = useState(0.95);
|
||||||
@ -49,15 +50,16 @@ const QuantumDashboard = () => {
|
|||||||
funnel_intensity: funnel
|
funnel_intensity: funnel
|
||||||
})).unwrap();
|
})).unwrap();
|
||||||
|
|
||||||
if (result && result.id) {
|
if (result && result.analysisRun && result.analysisRun.id) {
|
||||||
setLastAnalysisId(result.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.`);
|
setSuccessMsg(`IA WORLD LIVE: Funil de Entropia aplicado em ${Math.floor(funnel * 100)}% da Matriz 9999.`);
|
||||||
|
|
||||||
// Fetch combinations
|
// Fetch combinations
|
||||||
dispatch(fetchCombos({ query: `?analysis_runId=${result.id}&limit=10` }));
|
dispatch(fetchCombos({ query: `?analysis_runId=${result.analysisRun.id}&limit=10` }));
|
||||||
|
|
||||||
// Fetch cancellations
|
// Fetch cancellations
|
||||||
dispatch(fetchCancellations({ query: `?analysis_runId=${result.id}&limit=1` }));
|
dispatch(fetchCancellations({ query: `?analysis_runId=${result.analysisRun.id}&limit=1` }));
|
||||||
|
|
||||||
setTimeout(() => setSuccessMsg(''), 8000);
|
setTimeout(() => setSuccessMsg(''), 8000);
|
||||||
}
|
}
|
||||||
@ -199,6 +201,18 @@ const QuantumDashboard = () => {
|
|||||||
INTENSITY: {Math.floor(activeFunnel * 100)}% | VOID_SCAN: ACTIVE
|
INTENSITY: {Math.floor(activeFunnel * 100)}% | VOID_SCAN: ACTIVE
|
||||||
</div>
|
</div>
|
||||||
</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">
|
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-4">
|
||||||
{suggested_combinations?.map((combo: any, idx: number) => (
|
{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 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>
|
<span className="text-emerald-300 opacity-50 italic">IA SCORE: {combo.combo_score}</span>
|
||||||
</div>
|
</div>
|
||||||
<div className="text-2xl font-black tracking-tighter text-white font-mono group-hover:text-emerald-400 transition-colors">
|
<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>
|
||||||
<div className="mt-2 flex justify-between items-center opacity-0 group-hover:opacity-100 transition-opacity">
|
<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="h-1 bg-emerald-500 rounded-full flex-grow mr-2"></div>
|
||||||
@ -310,29 +328,6 @@ const QuantumDashboard = () => {
|
|||||||
})}
|
})}
|
||||||
</div>
|
</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 "Núcleo de Elite" 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>
|
</SectionMain>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user