[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>
This commit is contained in:
DevEnv nis2-agile
2026-03-10 08:51:52 +01:00
co-authored by Claude Sonnet 4.6
parent 3b51b5bd95
commit 1382530189
13 changed files with 1911 additions and 43 deletions
+11
View File
@@ -106,6 +106,7 @@ $controllerMap = [
'cross-analysis' => 'CrossAnalysisController',
'contact' => 'ContactController', // legacy
'mktg-lead' => 'MktgLeadController', // standard condiviso TRPG/NIS2
'feedback' => 'FeedbackController', // segnalazioni & risoluzione AI
];
if (!isset($controllerMap[$controllerName])) {
@@ -381,6 +382,16 @@ $actionMap = [
'mktg-lead' => [
'POST:submit' => 'submit',
],
// ── FeedbackController — segnalazioni & risoluzione AI ──
'feedback' => [
'POST:submit' => 'submit',
'GET:mine' => 'mine',
'GET:list' => 'list',
'GET:{id}' => 'show',
'PUT:{id}' => 'update',
'POST:{id}/resolve' => 'resolve',
],
];
// ═══════════════════════════════════════════════════════════════════════════