From bd1e95542cbfa1247ac209424885fdda4af0bdf4 Mon Sep 17 00:00:00 2001 From: DevEnv nis2-agile Date: Tue, 23 Jun 2026 18:13:38 +0200 Subject: [PATCH] [FIX] ARIA chat: indicatore 'sta scrivendo' + input multi-riga (Shift+Invio) Risolve #418/#420 (ARIA sembrava non rispondere / serviva riaprire il pannello): l'attesa della risposta /api/ai/ask (RAG+Claude, alcuni secondi) non mostrava alcun indicatore -> ora compare 'ARIA sta scrivendo...' con input disabilitato (anti doppio-invio). Indicatore rispetta prefers-reduced-motion (AGID/WCAG). Risolve #425: il campo di scrittura era a riga singola -> ora ' + + '' + ''; document.getElementById('ai-chat-close').onclick = closePanel; document.getElementById('ai-chat-form').onsubmit = onSubmit; + var inputEl = document.getElementById('ai-chat-input'); + if (inputEl) { + // Invio = invia · Shift+Invio = vai a capo (textarea multi-riga) + inputEl.addEventListener('keydown', function (e) { + if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); onSubmit(e); } + }); + // Auto-crescita altezza della textarea fino a max-height + inputEl.addEventListener('input', function () { + inputEl.style.height = 'auto'; + inputEl.style.height = Math.min(inputEl.scrollHeight, 120) + 'px'; + }); + if (!pending) inputEl.focus(); + } var msgs = document.getElementById('ai-chat-msgs'); msgs.scrollTop = msgs.scrollHeight; } async function onSubmit(ev) { ev.preventDefault(); + if (pending) return; // evita invii doppi mentre ARIA elabora var input = document.getElementById('ai-chat-input'); var text = (input.value || '').trim(); if (!text) return; history.push({ role: 'user', content: text }); sessionStorage.setItem(STORAGE_KEY, JSON.stringify(history)); + pending = true; render(); try { // AI nativa NIS2 (RAG con KB Multi-Livello già attivo) @@ -1094,6 +1139,7 @@ function switchLang(lang) { content: '⚠️ ARIA non risponde in questo momento. Riprova tra poco.' }); } + pending = false; sessionStorage.setItem(STORAGE_KEY, JSON.stringify(history)); render(); } diff --git a/public/kb.html b/public/kb.html index d3611a1..d365f16 100644 --- a/public/kb.html +++ b/public/kb.html @@ -151,7 +151,7 @@ - + diff --git a/public/login.html b/public/login.html index 4f10fe0..4bce150 100644 --- a/public/login.html +++ b/public/login.html @@ -95,7 +95,7 @@ - + - + diff --git a/public/misure-requisiti.html b/public/misure-requisiti.html index 8288e2f..2b1e3b0 100644 --- a/public/misure-requisiti.html +++ b/public/misure-requisiti.html @@ -168,7 +168,7 @@ - + diff --git a/public/mktg-api-doc.html b/public/mktg-api-doc.html index 14801ba..bccef8b 100644 --- a/public/mktg-api-doc.html +++ b/public/mktg-api-doc.html @@ -426,6 +426,6 @@ curl https://nis2.agile.software/api/services/status - + diff --git a/public/normative.html b/public/normative.html index f9784b6..d5a255e 100644 --- a/public/normative.html +++ b/public/normative.html @@ -113,7 +113,7 @@ - + diff --git a/public/onboarding.html b/public/onboarding.html index b65b77b..5b41384 100644 --- a/public/onboarding.html +++ b/public/onboarding.html @@ -495,7 +495,7 @@ - + - + diff --git a/public/policies.html b/public/policies.html index b5496d9..0636287 100644 --- a/public/policies.html +++ b/public/policies.html @@ -334,7 +334,7 @@ - + diff --git a/public/raci.html b/public/raci.html index 07bda7f..97d3290 100644 --- a/public/raci.html +++ b/public/raci.html @@ -132,7 +132,7 @@ - + diff --git a/public/register.html b/public/register.html index b0b8f40..418eb17 100644 --- a/public/register.html +++ b/public/register.html @@ -269,7 +269,7 @@ - + - + diff --git a/public/review-schedule.html b/public/review-schedule.html index 2dfb5d6..d1d3743 100644 --- a/public/review-schedule.html +++ b/public/review-schedule.html @@ -142,7 +142,7 @@ - + diff --git a/public/risks.html b/public/risks.html index ead9680..b147b07 100644 --- a/public/risks.html +++ b/public/risks.html @@ -495,7 +495,7 @@ - + diff --git a/public/settings.html b/public/settings.html index 2c8d925..66b47d9 100644 --- a/public/settings.html +++ b/public/settings.html @@ -689,7 +689,7 @@ - + diff --git a/public/stakeholder-activities.html b/public/stakeholder-activities.html index 967ee94..fef385d 100644 --- a/public/stakeholder-activities.html +++ b/public/stakeholder-activities.html @@ -195,7 +195,7 @@ - + diff --git a/public/stakeholders.html b/public/stakeholders.html index 639eebf..3b37836 100644 --- a/public/stakeholders.html +++ b/public/stakeholders.html @@ -192,7 +192,7 @@ - + diff --git a/public/supply-chain.html b/public/supply-chain.html index 725d3e9..5879fb1 100644 --- a/public/supply-chain.html +++ b/public/supply-chain.html @@ -478,7 +478,7 @@ - + diff --git a/public/training.html b/public/training.html index 8280085..8d8b265 100644 --- a/public/training.html +++ b/public/training.html @@ -293,7 +293,7 @@ - + diff --git a/public/version.json b/public/version.json index bf48164..94abcb8 100644 --- a/public/version.json +++ b/public/version.json @@ -1 +1 @@ -{"version": "1.24.5", "build": "2026-06-21-v1.24.5", "date": "2026-06-21", "changelog": "Internazionalizzazione EN del modulo Fornitori: il Portale Fornitori esterno (supplier-portal.html) e' ora bilingue IT/EN con meccanismo self-contained (dizionario inline + toggle lingua, ~79 stringhe) preservando il flusso OTP/token; la pagina interna Supply Chain (supply-chain.html) ha l'i18n estesa (data-i18n + I18n.t, +82 chiavi sp.* in i18n.js, ora 120 totali). Le domande dei questionari restano nei dati (non tradotte)."} +{"version": "1.24.6", "build": "2026-06-23-v1.24.6", "date": "2026-06-23", "changelog": "Assistente AI ARIA (chat): aggiunto l'indicatore \"ARIA sta scrivendo...\" durante l'elaborazione (con campo input disabilitato anti-doppio-invio) cosi' l'utente vede che la risposta e' in arrivo e non pensa che sia bloccata; il campo di scrittura e' ora multi-riga (Invio per inviare, Shift+Invio per andare a capo). Risolti ticket #418/#420 (sembrava non rispondere / serviva riaprire) e #425 (Shift+Invio). Indicatore conforme a prefers-reduced-motion (AGID/WCAG)."} diff --git a/public/whistleblowing.html b/public/whistleblowing.html index 61d30a3..bb013cb 100644 --- a/public/whistleblowing.html +++ b/public/whistleblowing.html @@ -208,7 +208,7 @@ - + diff --git a/public/workflow.html b/public/workflow.html index 83c65ae..4ad0ca3 100644 --- a/public/workflow.html +++ b/public/workflow.html @@ -322,7 +322,7 @@ - +