
DevEnv nis2-agileandClaude Opus 4.8
4fdeae7cee
[FEAT] Modulo Controlli periodici (control monitoring §9.1/A.8.16) — v1.23.0
Registro controlli ricorrenti (owner/frequenza/metodo/controllo SoA-NIS2 collegato)
+ registro esecuzioni come EVIDENZA (data/esito/note) con avanzamento automatico
della scadenza; da esito non conforme generazione NC o NC+azione correttiva
(riuso non_conformities/capa_actions, nuova source 'monitoring'); report
scheda+storico stampabile; scadenze nel Calendario unico.
mig.057: periodic_controls + periodic_control_executions (FK CASCADE, UNIQUE
(organization_id, code)). PeriodicControlController (slug periodic-controls) +
controlli-periodici.html + CalendarController.srcPeriodicControls.
Fix da flotta di verifica avversariale (9 finding confermati):
- advance(): correzione overflow strtotime '+1 month' (31/01 -> 28/02, no salto
mese) via DateTimeImmutable con clamp all'ultimo giorno valido (mensile/
trimestrale/semestrale/annuale); giornaliero/settimanale/custom invariati.
- create(): retry-on-duplicate del codice CTL-NNN con UNIQUE (org_id, code).
- update(): array_key_exists per azzerare owner_role_id / next_due_date.
- delete(): rimossa cleanup morta su review_schedule (il calendario legge diretto).
- CalendarController.srcReviewSchedule: esclude internal_audit/stakeholder_activity
(gia' con sorgente diretta) -> fix doppia comparsa nel calendario.
- calendario.html: TYPE_META 'periodic_control' (chip filtro + label + colore).
Additivo. Cache-buster ?v= bump (sidebar) + sw cache nis2-shell-v1.23.0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 09:21:03 +02:00
..
2026-02-17 17:50:18 +01:00
2026-05-29 18:55:44 +02:00
2026-02-17 17:50:18 +01:00
2026-06-16 19:59:35 +02:00
2026-05-31 08:07:38 +02:00
2026-05-31 15:01:22 +02:00
2026-06-13 08:19:53 +02:00
2026-05-29 13:18:35 +02:00
2026-06-17 09:21:03 +02:00
2026-06-15 19:01:32 +02:00
2026-03-09 12:19:21 +01:00
2026-03-09 08:17:53 +01:00
2026-05-31 14:56:10 +02:00
2026-06-13 10:31:46 +02:00
2026-03-10 08:56:19 +01:00
2026-06-16 17:41:16 +02:00
2026-06-15 15:27:07 +02:00
2026-03-17 15:16:00 +01:00
2026-06-17 07:48:49 +02:00
2026-03-10 15:54:16 +01:00
2026-06-12 09:54:14 +02:00
2026-05-29 15:44:13 +02:00
2026-06-17 07:48:49 +02:00
2026-05-29 15:42:05 +02:00
2026-03-09 10:22:40 +01:00
2026-03-07 16:49:58 +01:00
2026-06-15 17:06:17 +02:00
2026-06-15 17:06:17 +02:00
2026-06-15 18:05:56 +02:00
2026-06-17 09:21:03 +02:00
2026-06-16 18:40:31 +02:00
2026-06-16 19:24:29 +02:00
2026-06-17 07:48:49 +02:00
2026-05-30 12:15:13 +02:00
2026-06-14 16:35:41 +02:00
2026-06-16 23:32:27 +02:00
2026-06-16 20:54:57 +02:00
2026-06-16 22:52:31 +02:00
2026-05-31 17:40:20 +02:00
2026-06-15 23:10:28 +02:00
2026-02-17 17:50:18 +01:00
2026-03-07 16:49:58 +01:00
2026-03-07 16:49:58 +01:00