Compare commits

..

No commits in common. "e269fb108f0470a36f38cd7d31d2845bdc141c2b" and "8a55194b2f4f2627c18310be8c20bd6bc861aeab" have entirely different histories.

5 changed files with 13 additions and 13 deletions

View File

@ -94,7 +94,7 @@ class IncidentController extends BaseController
$detectedTime = strtotime($detectedAt);
$data['early_warning_due'] = date('Y-m-d H:i:s', $detectedTime + 24 * 3600); // +24h
$data['notification_due'] = date('Y-m-d H:i:s', $detectedTime + 72 * 3600); // +72h
$data['final_report_due'] = date('Y-m-d H:i:s', $detectedTime + 72 * 3600 + 30 * 86400); // 1 mese dalla notifica (Art.23.4 lett.d)
$data['final_report_due'] = date('Y-m-d H:i:s', $detectedTime + 30 * 86400); // +30 giorni
}
$incidentId = Database::insert('incidents', $data);
@ -222,7 +222,7 @@ class IncidentController extends BaseController
$detectedTime = strtotime($incident['detected_at']);
$updates['early_warning_due'] = date('Y-m-d H:i:s', $detectedTime + 24 * 3600);
$updates['notification_due'] = date('Y-m-d H:i:s', $detectedTime + 72 * 3600);
$updates['final_report_due'] = date('Y-m-d H:i:s', $detectedTime + 72 * 3600 + 30 * 86400); // 1 mese dalla notifica (Art.23.4 lett.d)
$updates['final_report_due'] = date('Y-m-d H:i:s', $detectedTime + 30 * 86400);
}
if (!empty($updates)) {

View File

@ -623,7 +623,7 @@
<li>Compila titolo, classificazione, severità, ora di rilevazione.</li>
<li>Il sistema calcola automaticamente le 3 scadenze (24h / 72h / 1 mese).</li>
<li>Quando arriva il momento, usa i bottoni <strong>"Invia Early Warning (24h)"</strong>,
<strong>"Invia Notifica (72h)"</strong> e <strong>"Invia Report Finale (1 mese dalla notifica)"</strong>: le email partono verso
<strong>"Invia Notifica (72h)"</strong> e <strong>"Invia Report Finale (30gg)"</strong>: le email partono verso
l'indirizzo CSIRT configurato.</li>
<li>Aggiorna lo stato dell'incidente (analisi → contenimento → eradicazione → recovery → chiuso).</li>
<li>Compila root cause e lezioni apprese alla chiusura.</li>
@ -709,7 +709,7 @@
<ol>
<li>Inserirlo nell'anagrafica con dati di contratto.</li>
<li>Classificare la criticità (low/medium/high/critical).</li>
<li>Inviargli il questionario sicurezza (template "NIS2 base": 26 domande mappate alle misure ACN GV.SC, personalizzabile).</li>
<li>Inviargli il questionario sicurezza (40+ domande standard).</li>
<li>Verificare la risposta e assegnare un risk score (010).</li>
<li>Rinnovare la valutazione almeno una volta l'anno.</li>
<li>Inserire clausole NIS2 nel contratto (right to audit, notifica incidenti, etc.).</li>

View File

@ -558,14 +558,14 @@ curl "https://nis2.agile.software/api/invites/validate?token=inv_a1b2c3..."
<div class="section-title">Per mktg-agile / E-commerce — Quick Start</div>
<div class="callout">
Chiave API già attiva per mktg-agile: <code style="color:#4ade80">nis2_mktg_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</code>
Chiave API già attiva per mktg-agile: <code style="color:#4ade80">nis2_mktg_8c8bd38e78fccb9faa749d8601051f42</code>
· Scope: <code>admin:licenses</code> · Scade: 2028-03-07
· Doc completa: <a href="/mktg-api-doc.html" style="color:var(--primary)">mktg-api-doc.html</a>
· Pannello web: <a href="/licenseExt.html" style="color:var(--primary)">licenseExt.html</a>
</div>
<div class="code-block"><span class="cmt"># 1. Crea licenza (mktg-agile → NIS2)</span>
curl -X POST https://nis2.agile.software/api/invites/create \
-H <span class="str">"X-API-Key: nis2_mktg_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"</span> \
-H <span class="str">"X-API-Key: nis2_mktg_8c8bd38e78fccb9faa749d8601051f42"</span> \
-H <span class="str">"Content-Type: application/json"</span> \
-d <span class="str">'{"plan":"professional","duration_months":12,"max_users_per_org":10,
"label":"Ordine MKT-001","channel":"ecommerce","price_eur":990}'</span>
@ -574,11 +574,11 @@ curl -X POST https://nis2.agile.software/api/invites/create \
<span class="cmt"># → consegna invite_url al cliente nel messaggio di conferma ordine</span>
<span class="cmt"># 2. Verifica stato licenza in qualsiasi momento</span>
curl -H <span class="str">"X-API-Key: nis2_mktg_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"</span> \
curl -H <span class="str">"X-API-Key: nis2_mktg_8c8bd38e78fccb9faa749d8601051f42"</span> \
"https://nis2.agile.software/api/invites/42"
<span class="cmt"># 3. Lista licenze attive per canale ecommerce</span>
curl -H <span class="str">"X-API-Key: nis2_mktg_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"</span> \
curl -H <span class="str">"X-API-Key: nis2_mktg_8c8bd38e78fccb9faa749d8601051f42"</span> \
"https://nis2.agile.software/api/invites/list?channel=ecommerce&amp;status=pending"</div>
<div class="callout">

View File

@ -110,7 +110,7 @@ table.resp code { background: rgba(255,255,255,.06); padding: .1rem .3rem; borde
<div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin-bottom:1.25rem">
<div style="background:rgba(0,0,0,.25);border-radius:8px;padding:1rem">
<div style="font-size:.7rem;color:var(--text-secondary);margin-bottom:.4rem">CHIAVE API (già attiva)</div>
<code style="font-size:.75rem;color:#4ade80;word-break:break-all">nis2_mktg_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</code>
<code style="font-size:.75rem;color:#4ade80;word-break:break-all">nis2_mktg_8c8bd38e78fccb9faa749d8601051f42</code>
<div style="font-size:.68rem;color:var(--text-secondary);margin-top:.3rem">Scope: admin:licenses · Scade: 2028-03-07</div>
</div>
<div style="background:rgba(0,0,0,.25);border-radius:8px;padding:1rem">
@ -146,7 +146,7 @@ table.resp code { background: rgba(255,255,255,.06); padding: .1rem .3rem; borde
<pre style="margin-top:1rem;margin-bottom:0;font-size:.78rem"><span class="cm"># Crea licenza in 1 chiamata:</span>
curl -X POST https://nis2.agile.software/api/invites/create \
-H <span class="sv">"X-API-Key: nis2_mktg_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"</span> \
-H <span class="sv">"X-API-Key: nis2_mktg_8c8bd38e78fccb9faa749d8601051f42"</span> \
-H <span class="sv">"Content-Type: application/json"</span> \
-d <span class="sv">'{"plan":"professional","duration_months":12,"label":"Ordine #123","channel":"ecommerce","max_users_per_org":10,"price_eur":990}'</span>

View File

@ -1 +1 @@
{"version":"1.10.7","build":"2026-05-31-v1.10.7","date":"2026-05-31","changelog":"Fix precisione normativa da test multi-agente: relazione finale incidenti calcolata da notifica+1 mese (Art.23.4 lett.d) invece che dalla rilevazione; guida allineata (26 domande GV.SC, etichetta '1 mese dalla notifica'). App verificata da 10 agenti: 0 SQLi/IDOR/XSS, DB integro, normativa senza citazioni inventate."}
{"version":"1.10.6","build":"2026-05-31-v1.10.6","date":"2026-05-31","changelog":"Fix Knowledge Base da test multi-agente: kb.js usava la chiave token errata (access_token invece di nis2_access_token) -> tutte le chiamate KB tornavano 401, pagina inutilizzabile; kb.html non inizializzava auth gate/sidebar/i18n. Ora la KB e' funzionante e protetta come le altre pagine."}