Skript na vyhodnotenie zhôd a generovanie anti‑match (0‑match) antitipov — pokyny pre implementáciu a integráciu do dashboardu.
Anti‑match skript (tiež nazývaný 0‑match generator) slúži na:
Základné tabuľky, ktoré skript používa:
-- history: uložené ťahy (každý riadok = 1 ťah) CREATE TABLE IF NOT EXISTS history ( id INT AUTO_INCREMENT PRIMARY KEY, draw_date DATE NOT NULL, numbers VARCHAR(255) NOT NULL, -- napr. '1,3,5,7,8,13,15,17,18,20,21' created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- antitip_trend: generované antitipy + vyhodnotenie CREATE TABLE IF NOT EXISTS antitip_trend ( id INT AUTO_INCREMENT PRIMARY KEY, numbers VARCHAR(255) NOT NULL, matches INT DEFAULT 0, evaluated_at TIMESTAMP NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- antitip_logs: detailné logy porovnaní CREATE TABLE IF NOT EXISTS antitip_logs ( id INT AUTO_INCREMENT PRIMARY KEY, antitip_id INT NOT NULL, draw_id INT NULL, matches INT NOT NULL, note VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (antitip_id) REFERENCES antitip_trend(id), FOREIGN KEY (draw_id) REFERENCES history(id) );
// 1. Načítať posledný ťah (alebo posledných N ťahov) last_draw = SELECT numbers FROM history ORDER BY draw_date DESC LIMIT 1 // 2. Vytvoriť množinu kandidátov (všetky čísla - last_draw) candidates = ALL_NUMBERS - last_draw // 3. Vybrať 11 čísel z kandidátov podľa pravidla (frekvencia, náhodne, váhy) antitip = pick_n(candidates, 11) // 4. Uložiť antitip do antitip_trend INSERT antitip_trend(numbers, matches, created_at) // 5. Po novom losovaní: porovnať antitip s novým draw a zapísať matches do antitip_logs matches = count_intersection(antitip, draw) UPDATE antitip_trend SET matches = matches, evaluated_at = NOW() WHERE id = antitip_id INSERT INTO antitip_logs(antitip_id, draw_id, matches) VALUES(...)
<?php
require_once __DIR__ . '/security/core/DB.php';
$pdo = DB::getConnection();
// 1) Načítaj posledný ťah
$stmt = $pdo->prepare('SELECT id, numbers FROM history ORDER BY draw_date DESC LIMIT 1');
$stmt->execute();
$last = $stmt->fetch(PDO::FETCH_ASSOC);
$lastNumbers = array_map('intval', explode(',', $last['numbers']));
// 2) Kandidáti = vsetky cisla 1..22 bez poslednych
$all = range(1,22);
$candidates = array_diff($all, $lastNumbers);
// 3) Vyber 11 čísel (náhodne alebo podľa frekvencie)
shuffle($candidates);
$antitip = array_slice($candidates, 0, 11);
$antitipStr = implode(',', $antitip);
// 4) Ulož do antitip_trend
$ins = $pdo->prepare('INSERT INTO antitip_trend (numbers, matches) VALUES (:nums, 0)');
$ins->execute([':nums' => $antitipStr]);
$newId = $pdo->lastInsertId();
// 5) (Voliteľné) okamžité vyhodnotenie proti poslednému ťahu
$matches = count(array_intersect($antitip, $lastNumbers));
$upd = $pdo->prepare('UPDATE antitip_trend SET matches = :m, evaluated_at = NOW() WHERE id = :id');
$upd->execute([':m' => $matches, ':id' => $newId]);
// 6) Loguj detail
$log = $pdo->prepare('INSERT INTO antitip_logs (antitip_id, draw_id, matches) VALUES (:aid, :did, :m)');
$log->execute([':aid' => $newId, ':did' => $last['id'], ':m' => $matches]);
echo "Antitip vytvorený: $antitipStr — zhody: $matches";
?>
Keď príde nový ťah, spusti skript ktorý:
// Pseudokód pri novom draw new_draw = INSERT INTO history(...) pending = SELECT * FROM antitip_trend WHERE evaluated_at IS NULL foreach pending as p: matches = count_intersect(p.numbers, new_draw.numbers) UPDATE antitip_trend SET matches = matches, evaluated_at = NOW() WHERE id = p.id INSERT INTO antitip_logs (antitip_id, draw_id, matches)
0 1 * * * /usr/bin/php /path/to/generate_antitip.php >> /var/log/antitip_generate.log 2>&1