[FEAT] Help online feedback, traduzioni IT/EN, AI system prompt aggiornato

- help.js: nuova sezione 'feedback' con 6 sotto-sezioni (come usare FAB,
  risposta AI, password gate, le mie segnalazioni, worker autonomo, consigli)
- i18n.js: 30 chiavi IT/EN per tutto il sistema feedback
- AIService::callAPI: system prompt esteso con lista completa moduli NIS2 Agile
- AIService::classifyFeedback: system prompt NIS2-aware

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
DevEnv nis2-agile
2026-03-10 09:05:12 +01:00
co-authored by Claude Sonnet 4.6
parent 3a382d34be
commit c52766953d
3 changed files with 128 additions and 3 deletions
+37
View File
@@ -276,6 +276,43 @@ const I18n = (function () {
Object.assign(_dict, entries);
}
// ── Feedback & Segnalazioni ─────────────────────────────────
addTranslations({
'feedback.fab_title': { it: 'Segnala un problema o un miglioramento', en: 'Report an issue or improvement' },
'feedback.tab_new': { it: 'Nuova segnalazione', en: 'New report' },
'feedback.tab_mine': { it: 'Le mie segnalazioni', en: 'My reports' },
'feedback.tipo_label': { it: 'Tipo', en: 'Type' },
'feedback.tipo_bug': { it: 'Bug / Errore', en: 'Bug / Error' },
'feedback.tipo_ux': { it: 'Miglioramento interfaccia', en: 'UX improvement' },
'feedback.tipo_funzionalita':{ it: 'Nuova funzionalità', en: 'New feature' },
'feedback.tipo_domanda': { it: 'Domanda / Supporto', en: 'Question / Support' },
'feedback.tipo_altro': { it: 'Altro', en: 'Other' },
'feedback.priorita_label': { it: 'Priorità percepita', en: 'Perceived priority' },
'feedback.priorita_alta': { it: 'Alta', en: 'High' },
'feedback.priorita_media': { it: 'Media', en: 'Medium' },
'feedback.priorita_bassa': { it: 'Bassa', en: 'Low' },
'feedback.desc_label': { it: 'Descrizione', en: 'Description' },
'feedback.desc_hint': { it: 'Sii specifico: cosa hai fatto, cosa ti aspettavi, cosa è successo', en: 'Be specific: what you did, what you expected, what happened' },
'feedback.attach_label': { it: 'Screenshot (opzionale)', en: 'Screenshot (optional)' },
'feedback.submit_btn': { it: 'Invia segnalazione', en: 'Submit report' },
'feedback.submitting': { it: 'Analisi AI in corso…', en: 'AI analysis in progress…' },
'feedback.ai_badge': { it: 'Analisi AI completata', en: 'AI analysis complete' },
'feedback.resolve_question': { it: 'Il problema è stato risolto grazie a questo suggerimento?', en: 'Was the problem resolved by this suggestion?' },
'feedback.resolve_yes': { it: 'Sì, problema risolto', en: 'Yes, problem resolved' },
'feedback.resolve_no': { it: 'No, il problema persiste', en: 'No, problem persists' },
'feedback.resolve_password': { it: 'Conferma con password di verifica', en: 'Confirm with verification password' },
'feedback.resolve_confirm': { it: 'Conferma', en: 'Confirm' },
'feedback.resolved_ok': { it: 'Segnalazione marcata come risolta. Grazie per il feedback.', en: 'Report marked as resolved. Thank you for your feedback.' },
'feedback.status_aperto': { it: 'Aperto', en: 'Open' },
'feedback.status_lavorazione': { it: 'In lavorazione', en: 'In progress' },
'feedback.status_risolto': { it: 'Risolto', en: 'Resolved' },
'feedback.status_chiuso': { it: 'Chiuso', en: 'Closed' },
'feedback.empty': { it: 'Nessuna segnalazione ancora. Usala per segnalare problemi!', en: 'No reports yet. Use it to report issues!' },
'feedback.error_short': { it: 'Descrizione troppo breve (minimo 10 caratteri).', en: 'Description too short (minimum 10 characters).' },
'feedback.error_password': { it: 'Password non corretta.', en: 'Incorrect password.' },
'feedback.notif_open': { it: 'Segnalazione registrata. Il team la prenderà in carico.', en: 'Report registered. The team will handle it.' },
});
return { init, getLang, setLang, t, applyTranslations, addTranslations };
})();