[FEAT] UI frontend gap competitivi + help/i18n + OpenAPI + scorecard EVIX

UI delle 4 feature backend (ora usabili dagli utenti, non solo via API):
- risks.html: vista 'Quantitativo (FAIR)' con form + istogramma distribuzione ALE + registro portafoglio; vista 'KRI' con dashboard semafori green/amber/red + CRUD
- reports.html: tab 'Monitoraggio Continuo' con semafori freschezza controlli (healthy/warning/stale/failing) + copertura
- assets.html: bottone 'Importa' CSV/CMDB con parsing client + anteprima + scoring auto GV.OC-04
- api.js: metodi computeFair/getFairRegister/listKri/createKri/updateKri/importAssets/getControlsMonitoring

Trasversale:
- help.js: sezioni guida FAIR+KRI (risks), import CMDB (assets), monitoraggio continuo (reports)
- i18n.js: chiavi IT/EN (risks.fair_tab, risks.kri_tab, assets.import_btn, audit.monitoring_tab)
- ServicesController::openapi esteso con incidents-ingest/evidence-ingest/assets-ingest/controls-monitoring + securityScheme ApiKeyAuth
- AuditController::controlsMonitoring (versione JWT per la UI) + route audit/controlsMonitoring
- EVIX scorecard: gap P1/P2 marcati chiusi (backend), roadmap aggiornata

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile
2026-05-30 09:52:21 +02:00
co-authored by Claude Opus 4.8
parent edf0394616
commit 372ccb5ec1
7 changed files with 357 additions and 20 deletions
+8
View File
@@ -200,6 +200,12 @@ class NIS2API {
deleteRisk(id) { return this.del(`/risks/${id}`); }
getRiskMatrix() { return this.get('/risks/matrix'); }
aiSuggestRisks() { return this.post('/risks/ai-suggest', {}); }
// FAIR quantitativo + KRI (P2)
computeFair(id, data) { return this.post(`/risks/${id}/fair`, data); }
getFairRegister() { return this.get('/risks/fairRegister'); }
listKri() { return this.get('/risks/kri'); }
createKri(data) { return this.post('/risks/kri', data); }
updateKri(id, data) { return this.put(`/risks/kri/${id}`, data); }
// ═══════════════════════════════════════════════════════════════════
// Incidents
@@ -260,6 +266,8 @@ class NIS2API {
getScoringGrid() { return this.get('/assets/scoringGrid'); }
scoreAsset(id, criteria) { return this.post(`/assets/${id}/score`, { criteria }); }
listRelevantSystems() { return this.get('/assets/relevantSystems'); }
importAssets(data) { return this.post('/assets/import', data); } // P2 import CMDB/CSV
getControlsMonitoring() { return this.get('/audit/controlsMonitoring'); } // P1 continuous control monitoring (JWT)
// ═══════════════════════════════════════════════════════════════════
// Audit