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

4.5 KiB

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.jscheckAuth() 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

*/30 * * * * root /usr/bin/php8.4 /var/www/nis2-agile/scripts/feedback-worker.php

Deploy da fare

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)