[FIX] simulate.html: card BIG + training user_ids array fix
- simulate.html: aggiunta card BIG (10 aziende, 18 fasi) con url simulate-nis2-big.php, label BIG in SIM_LABELS, confirm dialog dedicato - simulate-nis2-big.php: fix training assign user_id → user_ids (array) come richiesto da TrainingController::assignCourse() Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
56df54f8b1
commit
65c7d8723e
@ -219,6 +219,11 @@
|
|||||||
<h4>B2B License Provisioning</h4>
|
<h4>B2B License Provisioning</h4>
|
||||||
<p>Invite token → org + user + API key creati atomicamente. SSO JWT.</p>
|
<p>Invite token → org + user + API key creati atomicamente. SSO JWT.</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="sim-card" onclick="selectSim(this, 'big')" style="border-color:#7c3aed;">
|
||||||
|
<div class="sim-badge" style="background:rgba(124,58,237,.2);color:#c4b5fd;border:1px solid rgba(124,58,237,.4);">BIG</div>
|
||||||
|
<h4>Big Simulation — 10 Aziende</h4>
|
||||||
|
<p>Copertura totale: 18 fasi, 800 risposte assessment, 55+ rischi, incidenti Art.23, NCR/CAPA, whistleblowing, audit chain, Services API.</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Controlli -->
|
<!-- Controlli -->
|
||||||
@ -297,6 +302,7 @@ const SIM_LABELS = {
|
|||||||
sim04: 'SIM-04 Whistleblowing',
|
sim04: 'SIM-04 Whistleblowing',
|
||||||
sim05: 'SIM-05 Audit Chain',
|
sim05: 'SIM-05 Audit Chain',
|
||||||
sim06: 'SIM-06 B2B License',
|
sim06: 'SIM-06 B2B License',
|
||||||
|
big: 'BIG — 10 Aziende (18 fasi)',
|
||||||
};
|
};
|
||||||
|
|
||||||
// ── Selezione scenario ────────────────────────────────────────────────────
|
// ── Selezione scenario ────────────────────────────────────────────────────
|
||||||
@ -447,20 +453,24 @@ function runSimulation() {
|
|||||||
sim04: 'SIM-04 — Whistleblowing SCADA',
|
sim04: 'SIM-04 — Whistleblowing SCADA',
|
||||||
sim05: 'SIM-05 — Audit Trail Hash Chain',
|
sim05: 'SIM-05 — Audit Trail Hash Chain',
|
||||||
sim06: 'SIM-06 — B2B License Provisioning',
|
sim06: 'SIM-06 — B2B License Provisioning',
|
||||||
|
big: 'BIG — 10 Aziende, 18 Fasi, Copertura Totale',
|
||||||
};
|
};
|
||||||
const scenarioName = labels[selectedSim] || selectedSim;
|
const scenarioName = labels[selectedSim] || selectedSim;
|
||||||
const resetNote = selectedSim !== 'sim06'
|
const resetNote = (selectedSim !== 'sim06' && selectedSim !== 'big')
|
||||||
? '\n↺ I dati demo precedenti verranno ripuliti automaticamente.'
|
? '\n↺ I dati demo precedenti verranno ripuliti automaticamente.'
|
||||||
: '\n(SIM-06 è indipendente — nessun reset automatico)';
|
: selectedSim === 'big'
|
||||||
|
? '\n↺ Auto-reset dei dati demo incluso nella FASE 0.'
|
||||||
|
: '\n(SIM-06 è indipendente — nessun reset automatico)';
|
||||||
|
const bigNote = selectedSim === 'big'
|
||||||
|
? '\n\n10 aziende: InfraTech, MedSalute, DistribuzionePlus, BancaRegionale,\nAquaPura, LogisticaRapida, SmartCity, EduDigital, AgriTech, ManufacturingPro\n\n⚠ Target: ✓200+ — Durata stimata: ~15-20 minuti'
|
||||||
|
: '';
|
||||||
|
|
||||||
if (!confirm(
|
if (!confirm(
|
||||||
'Avvia Simulazione NIS2 Agile?\n\n' +
|
'Avvia Simulazione NIS2 Agile?\n\n' +
|
||||||
'▸ ' + scenarioName + '\n\n' +
|
'▸ ' + scenarioName +
|
||||||
'• DataCore S.r.l. (IT/Cloud - Essential)\n' +
|
(selectedSim !== 'big' ? '\n\n• DataCore S.r.l. (IT/Cloud - Essential)\n• MedClinic Italia S.p.A. (Sanità - Important)\n• EnerNet Distribuzione S.r.l. (Energia - Critical)' : '') +
|
||||||
'• MedClinic Italia S.p.A. (Sanità - Important)\n' +
|
bigNote + resetNote + '\n' +
|
||||||
'• EnerNet Distribuzione S.r.l. (Energia - Critical)\n' +
|
(selectedSim !== 'big' ? '\nDurata stimata: ~8-12 minuti' : '')
|
||||||
resetNote + '\n' +
|
|
||||||
'\nDurata stimata: ~8-12 minuti'
|
|
||||||
)) return;
|
)) return;
|
||||||
|
|
||||||
if (evtSource) { evtSource.close(); evtSource = null; }
|
if (evtSource) { evtSource.close(); evtSource = null; }
|
||||||
@ -473,7 +483,9 @@ function runSimulation() {
|
|||||||
document.getElementById('statsGrid').style.display = 'none';
|
document.getElementById('statsGrid').style.display = 'none';
|
||||||
document.getElementById('consoleTitle').textContent = 'NIS2 Agile Simulator v2.0 — ' + (SIM_LABELS[selectedSim] || selectedSim);
|
document.getElementById('consoleTitle').textContent = 'NIS2 Agile Simulator v2.0 — ' + (SIM_LABELS[selectedSim] || selectedSim);
|
||||||
|
|
||||||
const url = `simulate-nis2.php?sim=${selectedSim}&t=${Date.now()}`;
|
const url = selectedSim === 'big'
|
||||||
|
? `simulate-nis2-big.php?t=${Date.now()}`
|
||||||
|
: `simulate-nis2.php?sim=${selectedSim}&t=${Date.now()}`;
|
||||||
evtSource = new EventSource(url);
|
evtSource = new EventSource(url);
|
||||||
|
|
||||||
let phaseCount = 0;
|
let phaseCount = 0;
|
||||||
|
|||||||
@ -1307,7 +1307,7 @@ foreach ($COMPANIES as $slug => $comp) {
|
|||||||
if ($uid) {
|
if ($uid) {
|
||||||
$assignRes = api('POST', '/training/assign', [
|
$assignRes = api('POST', '/training/assign', [
|
||||||
'course_id' => $courseId,
|
'course_id' => $courseId,
|
||||||
'user_id' => $uid,
|
'user_ids' => [$uid],
|
||||||
'due_date' => date('Y-m-d', strtotime('+30 days')),
|
'due_date' => date('Y-m-d', strtotime('+30 days')),
|
||||||
], $jwt, $orgId);
|
], $jwt, $orgId);
|
||||||
if (!empty($assignRes['success'])) {
|
if (!empty($assignRes['success'])) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user