nis2-agile/docs/CONTEXT_LAST_SESSION.md
DevEnv nis2-agile 1382530189 [FEAT] Sistema Segnalazioni & Risoluzione AI (feedback)
Adattato da alltax.it — il sistema più maturo testato con utenti reali.

Backend:
- FeedbackController: 6 endpoint (submit, mine, list, show, update, resolve)
- FeedbackService: createReport + classifyWithAI + broadcastResolution
- AIService::classifyFeedback() — 10s timeout, 500 token, JSON puro
- EmailService::sendFeedbackResolved() — broadcast email org
- DB migration 014: tabella feedback_reports

Frontend:
- feedback.js: FAB rosso #EF4444, modal 2 fasi (form → AI → password gate)
- Tab "Le mie segnalazioni" con badge status
- Auto-init su tutte le pagine autenticate (common.js::checkAuth)
- api.js: 6 metodi client; style.css: stili completi

Worker:
- scripts/feedback-worker.php: cron ogni 30 min
  → docker exec nis2-agile-devenv + Claude Code CLI
  → risoluzione autonoma con POST /api/feedback/{id}/resolve

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 08:51:52 +01:00

108 lines
4.5 KiB
Markdown

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