# Nis2 Agile - Contesto Ultima Sessione > Questo file viene aggiornato da Claude a fine di ogni sessione. > Serve per mantenere continuita tra sessioni diverse (anche da browser/PC diversi). ## Ultima sessione **Data**: 2026-03-10 **Cosa è stato fatto**: Sistema Segnalazioni & Risoluzione AI (adattato da alltax.it) + marketing landing NIS2 (sessione precedente) ### Attività sessione 2026-03-10 — Sistema Feedback Implementazione completa del sistema di segnalazione bug/feedback con risoluzione AI autonoma. Ispirato a https://alltax.it/docs/sistema-segnalazioni-standard.html (il più maturo testato con utenti reali). **File creati:** 1. `docs/sql/014_feedback.sql` — tabella `feedback_reports` (tipo, priorita, status, AI fields, attachment base64) 2. `application/controllers/FeedbackController.php` — 6 endpoint: - POST `/api/feedback/submit` → crea segnalazione + AI classify - GET `/api/feedback/mine` → ultime 20 dell'utente - GET `/api/feedback/list` → lista admin (org_admin, compliance_manager, auditor) - GET `/api/feedback/{id}` → dettaglio (admin o autore) - PUT `/api/feedback/{id}` → update status/nota_admin - POST `/api/feedback/{id}/resolve` → chiusura con password gate 3. `application/services/FeedbackService.php` — createReport, classifyWithAI, broadcastResolution 4. `public/js/feedback.js` — FAB rosso #EF4444, modal 2 fasi (form → risposta AI → password gate), tab "Le mie segnalazioni" 5. `scripts/feedback-worker.php` — worker cron (ogni 30 min): - Fetch ticket in_lavorazione - docker exec su `nis2-agile-devenv` con Claude Code CLI - POST /api/feedback/{id}/resolve se exit_code=0 - Log in `/var/log/nis2/feedback-worker.log` **File modificati:** - `application/services/AIService.php` — aggiunto `classifyFeedback()` (timeout 10s, 500 token, JSON puro) - `application/services/EmailService.php` — aggiunto `sendFeedbackResolved()` (broadcast email risoluzione) - `application/config/config.php` — aggiunte costanti `FEEDBACK_RESOLVE_PASSWORD`, `FEEDBACK_WORKER_LOG` - `public/js/api.js` — aggiunta sezione Feedback (6 metodi) - `public/js/common.js` — `checkAuth()` ora chiama `initFeedbackFab()` automaticamente su pagine autenticate - `public/css/style.css` — stili FAB, overlay, modal, badge, fase 2, tab "le mie" - `public/index.php` — aggiunto `'feedback' => 'FeedbackController'` in controllerMap + action map ### Variabili .env da aggiungere su Hetzner ``` FEEDBACK_RESOLVE_PASSWORD=Nis2Feedback2026! # password gate risoluzione FEEDBACK_WORKER_ADMIN_EMAIL=admin@nis2.agile.software FEEDBACK_WORKER_ADMIN_PASS=... # password dell'account super_admin FEEDBACK_WORKER_LOG=/var/log/nis2/feedback-worker.log ``` ### Crontab da aggiungere su Hetzner ```cron */30 * * * * root /usr/bin/php8.4 /var/www/nis2-agile/scripts/feedback-worker.php ``` ### Deploy da fare ```bash ssh -i docs/credentials/hetzner_key root@135.181.149.254 cd /var/www/nis2-agile && git pull origin main # Applica migration DB mysql -u nis2user -p nis2_agile_db < docs/sql/014_feedback.sql # Aggiungi .env vars nano .env # aggiungi le 4 variabili feedback # Aggiungi crontab crontab -e # aggiungi riga */30 # Crea log directory mkdir -p /var/log/nis2 ``` ### Attività sessione precedente (2026-03-09/10) — Marketing e fix - `public/index.html` — Landing marketing completa (temi rosso #EF4444, invite-only) - `public/presentation.html` — Presentazione 11 slide nel repo NIS2 - `application/controllers/MktgLeadController.php` — webhook proxy + fallback email - `application/controllers/ContactController.php` — richiesta invito legacy - AgentAI Hub: colori aggiornati a rosso, products.json con link presentation ## Stato attuale - **Produzione**: https://nis2.agile.software/ — tutto funzionante - **Simulazione**: ✓92 ⚠4 ✗0 (6 scenari, 3 aziende demo) - **Test suite**: ✓36/36 L1-L6 ## Problemi aperti / Note - `FEEDBACK_RESOLVE_PASSWORD` deve essere aggiunta al `.env` su Hetzner prima del deploy - Il worker cron richiede che il container `nis2-agile-devenv` sia attivo e raggiungibile - DB migration 014 va applicata manualmente su prod dopo git pull - PHP Warning `nis2_type` in simulate-nis2.php:303 — cosmetic, da fixare ## Prossimi passi suggeriti 1. Deploy su Hetzner: git pull + migration 014 + .env vars + crontab 2. Test E2E: login → FAB appare → submit segnalazione → risposta AI → resolve con password 3. Eventuale Sprint RAG su normativa NIS2 (piano adaptive-marinating-tome.md, Sprint 3)