diff --git a/public/risks.html b/public/risks.html index 15cd714..f8a79f8 100644 --- a/public/risks.html +++ b/public/risks.html @@ -716,15 +716,31 @@ return o; } + // Suggerimento (NON obbligo) di probabilità/impatto dallo stato di conformità: + // un requisito conforme ha rischio residuo basso, uno non conforme più alto. + // È solo un valore pre-compilato che l'utente può modificare (avallato nis2-expert). + function suggestScores(stato) { + switch (stato) { + case 'conforme': return { l: 1, i: 2 }; + case 'parziale': return { l: 3, i: 3 }; + case 'non_conforme': return { l: 4, i: 4 }; + case 'non_applicabile': return { l: 1, i: 1 }; + default: return { l: 3, i: 3 }; // da_valutare + } + } + function openEvaluateModal(requisitoId) { if (!canEvaluate) return; const r = (derivedData || []).find(x => String(x.requisito_id) === String(requisitoId)); if (!r) { showNotification('Rischio non trovato', 'error'); return; } - const curL = (r.likelihood >= 1 && r.likelihood <= 5) ? parseInt(r.likelihood) : 3; - const curI = (r.impact >= 1 && r.impact <= 5) ? parseInt(r.impact) : 3; const curStato = r.stato || 'da_valutare'; const curNote = r.valutazione_rischio || ''; + // Già valutato? uso i valori salvati; altrimenti pre-compilo un SUGGERIMENTO dallo stato. + const evaluated = (r.likelihood >= 1 && r.likelihood <= 5) && (r.impact >= 1 && r.impact <= 5); + const sug = suggestScores(curStato); + const curL = evaluated ? parseInt(r.likelihood) : sug.l; + const curI = evaluated ? parseInt(r.impact) : sug.i; const statoOpts = DERIVED_STATUS_OPTIONS.map(([v, l]) => ``).join(''); @@ -750,6 +766,7 @@
Impatto della non conformità o del conseguente incidente.
+ ${!evaluated ? `

💡 Valori suggeriti in base allo stato di conformità (conforme → basso, parziale → medio, non conforme → alto). È solo un suggerimento: modificali pure liberamente.

` : ''}
diff --git a/public/version.json b/public/version.json index b17c9a6..16a7d4f 100644 --- a/public/version.json +++ b/public/version.json @@ -1 +1 @@ -{"version": "1.25.7", "build": "2026-07-27-v1.25.7", "date": "2026-07-27", "changelog": "Gestione Rischi (ticket #500, opzione B): ogni rischio-requisito puo' ora essere valutato con Probabilita' e Impatto (1-5) tramite il tasto 'Valuta' (riservato ai profili che valutano); i rischi valutati compaiono nella matrice 5x5 insieme ai 'Rischi aggiuntivi'. La matrice esclude i requisiti non applicabili. Probabilita' = probabilita' che la minaccia sfrutti la carenza; impatto = conseguenze della non conformita' (art. 24 D.Lgs. 138/2024; la matrice e' uno strumento di rappresentazione, non un metodo imposto)."} +{"version": "1.25.8", "build": "2026-07-28-v1.25.8", "date": "2026-07-28", "changelog": "Gestione Rischi: valutando un rischio-requisito con il tasto 'Valuta', Probabilita' e Impatto vengono ora pre-compilati come SUGGERIMENTO in base allo stato di conformita' (conforme -> basso, parziale -> medio, non conforme -> alto). E' solo un suggerimento chiaramente modificabile: velocizza la valutazione senza imporre valori (art. 24 D.Lgs. 138/2024 non impone una metodologia)."}