# 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` |