> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mattone.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Come si risponde e si chiude un ticket

> Cosa succede davvero quando si scrive una risposta o si preme "risolvi" su un ticket, e perché non si tocca mai a mano da Supabase.

<Warning>
  **Questa guida è pubblica: la legge chiunque, e cancellare dopo non basta.** Niente nomi di persone o di aziende clienti, niente compensi o tariffe, niente indirizzi interni o chiavi. Prima di scriverci dentro: [cosa ci va e cosa non ci va mai](/contribuire).
</Warning>

Un ticket — aperto dallo studente dalla chat con l'assistente, o aperto da chi nel team lo ha visto da un'altra parte (vedi [Da dove nasce un ticket](/delivery/da-dove-nasce-un-ticket)) — si gestisce **da un solo posto**: la sua pagina in piattaforma. Rispondere o chiudere da lì non è solo "più comodo": è l'unico modo perché lo studente, il canale del team e il task collegato restino allineati fra loro.

## Dove si va

**Team → Ticket**, poi si apre il ticket specifico: l'indirizzo è `/team/ticket/<id>`. Da lì, in fondo, c'è il campo per scrivere e i due pulsanti: rispondere e risolvere.

## Cosa succede scrivendo una risposta

Si scrive il messaggio e si invia. In automatico, nello stesso momento:

* il messaggio si salva nella cronologia del ticket, così chiunque lo apra dopo vede tutto lo scambio;
* il messaggio compare **dentro la stessa conversazione** che lo studente ha nella bolla del supporto (e su **Supporto**), con l'etichetta «Team Mattone», e la conversazione passa allo stato **«Risposta del team»** con un pallino finché lo studente non la apre;
* **allo studente arriva una notifica** in piattaforma **e una mail breve**, «Hai una risposta dal team Mattone», con il link alla conversazione (a meno che non abbia disattivato le notifiche via mail). **Il testo della risposta non è nella mail**: si legge in piattaforma, dove resta la conversazione;
* nel canale Slack del team parte una riga nel thread di quel ticket, con chi ha risposto e cosa ha scritto.

Questo vale **allo stesso modo per ogni ticket**, sia che lo abbia aperto lo studente dalla chat, sia che lo abbia aperto qualcuno del team a mano. Non c'è una via "abbreviata" per i ticket aperti dal team: passano dalla stessa pagina, con lo stesso comportamento. Anche la risposta mandata e chiusa **dall'assistente del team** (la funzione «manda e chiudi» del suo token) avvisa lo studente allo stesso modo, dal 09/10/2026.

Se lo studente risponde, il suo messaggio arriva come riga nel thread del ticket. Se scrive in una conversazione **già risolta**, la conversazione **si riapre** e torna al team: il ticket rientra fra quelli aperti e i tempi di risposta ripartono da capo.

## Cosa succede premendo "risolvi"

Oltre a tutto quello che fa una risposta (se c'era un messaggio da mandare insieme alla chiusura), premere "risolvi":

* segna il ticket come risolto, **con la data e con chi lo ha chiuso** — due informazioni che prima di questa pagina non venivano mai scritte da nessuna parte, quindi su tutti i ticket chiusi in passato restano vuote;
* posta la riga di chiusura nel thread Slack del ticket;
* **chiude anche il task collegato**, se quel ticket ne aveva generato uno nella coda del team (Team → Task) perché era rimasto troppo a lungo senza risposta;
* notifica lo studente e gli manda una mail, con il link alla conversazione.

## Quando non sai rispondere: l'assistente

Sulla pagina del ticket c'è un box **"Chiedi all'assistente"**: si scrive la domanda (parte già precompilato con l'ultimo messaggio dello studente) e si preme "Chiedi".

* Se la risposta è coperta dalla knowledge base, arriva con le fonti citate e un bottone **"Usa nella bozza"** che la incolla nel campo risposta — resta comunque da rileggere e mandare, non parte da sola.
* Se non è coperta, l'assistente **non inventa**: propone la domanda da girare e un bottone che manda un messaggio diretto su Slack alla persona giusta del team, con il link al ticket. La risposta arriva lì e per ora va incollata a mano nella bozza — non torna ancora da sola nel ticket.

Vale la stessa regola di sempre: **rispondere nel canale Slack del ticket non fa nulla sul ticket stesso** — è solo una notifica. L'unica azione che conta è quella fatta dalla pagina del ticket, con i due pulsanti descritti sopra.

## La regola: mai toccare `support_tickets` a mano

**Non si segna mai un ticket come risolto scrivendo direttamente sul database** (Supabase o console), nemmeno per "sistemare in fretta" un caso urgente. Solo da questa pagina.

Il motivo è concreto, non teorico: il 17/09/2026 un ticket è stato segnato risolto con una scrittura diretta sul database invece che da qui. Il risultato: il ticket *sembrava* chiuso guardando il database, ma

* lo studente non ne ha saputo niente — nessuna notifica, nessuna mail;
* il team su Slack non ha visto nessuna riga di chiusura nel thread — per chi guarda solo Slack, quel ticket è ancora aperto;
* il task collegato nella coda del team è rimasto aperto per sempre, perché nessuna delle scritture che lo chiudono è mai partita.

Una correzione a mano può sistemare i campi che si vedono nel database (data e autore della chiusura), ma non può far ripartire retroattivamente una notifica, una mail o una riga Slack: quella parte resta un buco che deve chiudere una persona rispondendo per davvero, dalla pagina del ticket.

<Note>
  Fonti: `src/app/api/admin/support/[ticketId]/route.ts` (risposta e chiusura), `src/lib/support/avviso-risposta-team-server.ts` (l'avviso allo studente), `src/lib/support/messaggio-studente-server.ts` (risposta dello studente e riapertura), `src/lib/support/ticket-coda-server.ts` (`chiudiVoceDelTicket`, la chiusura del task collegato) e `src/lib/support/slack.ts` (i testi delle righe nel thread), repo `mattone-platform`. Il commento nel codice su `resolved_at`/`resolved_by` conferma che erano NULL su tutti i ticket storici prima che questa route li valorizzasse.
</Note>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.