Deliverable formazione-first (DESIGN_AVATAR_FORMAZIONE / product-demo-complete):
- docs/mappa-logica/01..22_*.md: tutte le viste app V2 mappate (formato canonico standard §2),
selettori VERIFICATI sul DOM reale, endpoint verificati su api.js/script, gate ruolo dai controller
- docs/mappa-logica/SELETTORI_DEMO.md: registry canonico (22 viste, 131 visualizzazione + 89 azioni)
+ worklist consolidata 132 id stabili da aggiungere (modifiche chirurgiche future)
- docs/formazione/TASSONOMIA_CORSO_NIS2.{md,json}: 10 moduli / 28 lezioni / ~7h45, prerequisiti+durate,
esame con soglia 80%, sandbox 'prova tu' org 996002
- fix kb.js: ingest scope=ORG ora invia organization_id (prima 422 KB_ORG_REQUIRED) — bug trovato da A2
Prodotto con 4 trittici di agenti (A1 esecutore -> A2 revisore -> A3 controllore avversariale):
A2: ~14 correzioni (cross-ref, gate ruolo, comportamenti); A3 PASS: 38 selettori campionati 0 rotti,
18 endpoint reali, 0 violazioni normative (Allegati 3/4, IS-4, '1 mese', PII.* interna), 9 claim verificati.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
70 lines
5.6 KiB
Markdown
70 lines
5.6 KiB
Markdown
# MAPPA-LOGICA · Standard Continuità di Servizio
|
|
|
|
⟦ INIZIO · U-SERVICE-CONTINUITY · Videata "Standard Continuità di Servizio" (documento standalone) ⟧
|
|
File: public/service-continuity.html · URL: /service-continuity.html · Scopo: documento informativo statico (stampabile) che descrive la strategia di continuità di servizio della piattaforma NIS2 Agile — architettura, resilienza a 7 livelli, rate limiting, maintenance mode, matrice rischi, SLA e checklist operativa · Profili: pagina pubblica, nessun controllo di autenticazione né ruolo (non carica api.js/common.js; non ha sidebar applicativa). NOTA: pagina interamente statica — nessuna chiamata API, nessun dato dinamico; gli unici script sono il bundle Bootstrap Italia e `bootstrap.loadFonts`.
|
|
|
|
• U-SERVICE-CONTINUITY.1 — Intestazione documento
|
|
Mostra: brand "NIS2 Agile / Cybersecurity Compliance NIS2" con icona lucchetto; meta "Standard Operativo — Continuità di Servizio"; titolo "Strategia di Continuità di Servizio"; sottotitolo "Architettura di resilienza, monitoraggio, auto-recovery e protezione dei dati"; 4 tag: "Aprile 2026", "PHP+MySQL+Qdrant", "Hetzner CPX31", "99.9% SLA Target"
|
|
Azioni: nessuna
|
|
Dati da: nessuna (contenuto statico)
|
|
Confine: `header.doc-header` (riga 62, senza id)
|
|
|
|
• U-SERVICE-CONTINUITY.2 — Sezione 1 "Architettura di Servizio"
|
|
Mostra: tabella Servizio/Stack/Healthcheck: `nis2-app` (PHP+MySQL+Qdrant, /health), MySQL/PostgreSQL (Database condiviso, ping), Qdrant (Vector DB embeddings, HTTP 200), AgileHub NEXUS (Ticket + AI + Notifiche, /health); box informativo "Deploy a caldo" (bind mount Docker / PM2 reload, nessun rebuild)
|
|
Azioni: nessuna
|
|
Dati da: nessuna
|
|
Confine: primo `h2` dentro `main.content` (riga 81, senza id)
|
|
|
|
• U-SERVICE-CONTINUITY.3 — Sezione 2 "Strategia di Resilienza a 7 Livelli"
|
|
Mostra: 7 blocchi numerati L1-L7: L1 Auto-Restart Container/PM2 (recovery < 30s); L2 Healthcheck Nativo (endpoint /health ogni 30s, ricreazione dopo 3 fail); L3 Database Retry con Reconnect (errori MySQL 2006/2013/1213, 2 retry con backoff); L4 Resilienza API Esterne (Claude AI, ElevenLabs TTS, Voyage — 3 retry, degradazione graceful, fallback frontend "AI temporaneamente non disponibile"); L5 Error Alerting in Tempo Reale (notifica AgileHub entro 30s); L6 Monitoraggio Esterno AgileHub (cron ogni 2 minuti); L7 Manutenzione Preventiva (tabella: disk monitor ogni 6 ore, cleanup settimanale, SSL renewal settimanale, refresh token Claude orario)
|
|
Azioni: nessuna
|
|
Dati da: nessuna
|
|
Confine: blocchi `.layer` con `.layer-num`/`.layer-body` (righe 92-149, senza id)
|
|
|
|
• U-SERVICE-CONTINUITY.4 — Sezione 3 "Protezione da Abuso" (Rate Limiting)
|
|
Mostra: tabella limiti: Login 5 tentativi/15 min per IP + lockout; API generiche 100 req/ora per chiave/utente; Password reset 3 req/ora per email; Webhook esterni 50 req/min per IP
|
|
Azioni: nessuna
|
|
Dati da: nessuna
|
|
Confine: `h2` "3. Protezione da Abuso" (riga 151, senza id)
|
|
|
|
• U-SERVICE-CONTINUITY.5 — Sezione 4 "Modalità Manutenzione"
|
|
Mostra: procedura automatica in 5 passi (flag `/tmp/maintenance-NIS2.flag`, pagina di manutenzione Apache, applicazione fix, rimozione flag, redirect automatico); box di avvertenza "Nessun intervento manuale richiesto"
|
|
Azioni: nessuna
|
|
Dati da: nessuna
|
|
Confine: `h2` "4. Modalità Manutenzione" (riga 164, senza id)
|
|
|
|
• U-SERVICE-CONTINUITY.6 — Sezione 5 "Matrice Rischi e Mitigazione"
|
|
Mostra: tabella a 5 colonne (Scenario, Probabilità, Impatto, Mitigazione, Recovery) con 7 scenari: crash singolo servizio, database restart, AI non disponibile, disco pieno, SSL scaduto, attacco brute force, errore deployment; badge colorati Bassa/Media (probabilità) e Basso/Medio/Alto (impatto)
|
|
Azioni: nessuna
|
|
Dati da: nessuna
|
|
Confine: `h2` "5. Matrice Rischi e Mitigazione" (riga 178, senza id)
|
|
|
|
• U-SERVICE-CONTINUITY.7 — Sezione 6 "Service Level Agreement"
|
|
Mostra: tabella Metrica/Target/Misurazione: uptime 99.9% (8.7h downtime/anno), recovery da crash < 30 secondi, recovery da aggiornamento < 5 minuti, rilevamento downtime < 5 minuti, tempo risposta API p95 < 500ms
|
|
Azioni: nessuna
|
|
Dati da: nessuna
|
|
Confine: `h2` "6. Service Level Agreement" (riga 193, senza id)
|
|
|
|
• U-SERVICE-CONTINUITY.8 — Sezione 7 "Checklist Operativa" + footer
|
|
Mostra: checklist "Verifica automatica (quotidiana)" (container healthy, campanella AgileHub, email alert) e "Prima di un aggiornamento manuale" (4 passi con `docker compose ps` / `pm2 list`); footer con copyright, link nis2.agile.software e "Standard Continuità di Servizio v1.0 • Aprile 2026 • Agile Technology SRL"
|
|
Azioni: click sul link https://nis2.agile.software nel footer
|
|
Dati da: nessuna
|
|
Confine: `h2` "7. Checklist Operativa" (riga 206) e `footer.doc-footer` (riga 222, senza id)
|
|
|
|
⟦ FINE · U-SERVICE-CONTINUITY ⟧
|
|
|
|
## ID STABILI MANCANTI (da aggiungere)
|
|
La pagina non contiene NESSUN id: tutte le ancore sono solo classi/struttura.
|
|
| Elemento | Riga | Id proposto |
|
|
|---|---|---|
|
|
| Header documento | 62 | `nis2-continuity-header` |
|
|
| Sezione 1 Architettura (h2) | 81 | `nis2-continuity-architettura` |
|
|
| Sezione 2 Resilienza 7 livelli (h2) | 90 | `nis2-continuity-resilienza` |
|
|
| Blocchi L1-L7 | 92-149 | `nis2-continuity-layer-1` … `nis2-continuity-layer-7` |
|
|
| Sezione 3 Rate limiting (h2) | 151 | `nis2-continuity-rate-limiting` |
|
|
| Sezione 4 Manutenzione (h2) | 164 | `nis2-continuity-manutenzione` |
|
|
| Sezione 5 Matrice rischi (h2) | 178 | `nis2-continuity-matrice-rischi` |
|
|
| Sezione 6 SLA (h2) | 193 | `nis2-continuity-sla` |
|
|
| Sezione 7 Checklist (h2) | 206 | `nis2-continuity-checklist` |
|
|
| Footer documento | 222 | `nis2-continuity-footer` |
|