# Ticket, cartelle, stati e tag in Todomator

> Il modello dei dati di Todomator: cosa contiene un ticket, i sei stati, chi può vedere un ticket, cartelle per clienti e progetti, tag, commenti, collegamenti e allegati.

Framework: todomator
Product: Todomator (todomator@1.7)
Language: it
Content-SHA256: d0b34bf3056fb3771e5f0bc723d5de167f85579dbb0de57a9f4e48d9635a7aa5
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Il centro di Todomator è il **ticket** (tabella `tbl_ticket`, schema `Tickets` in `schemas/tickets.js`). Tutto il resto organizza ticket o ne dipende.

## Cosa contiene un ticket

| Campo | Significato |
|---|---|
| `name` | il titolo (obbligatorio) |
| `statusid` | lo stato; un nuovo ticket è `pending` salvo diversa indicazione |
| `folderid` | la cartella (cliente o progetto) a cui appartiene |
| `ownerid`, `userid`, `watcherid` | l’autore, le persone assegnate e le persone che si limitano a seguirlo |
| `ispublic` | visibile a tutti; un ticket pubblico non ha persone assegnate |
| `ispriority`, `isbillable` | un contrassegno di priorità e un flag di fatturabilità |
| `markdown`, `html` | il contenuto (l’interfaccia usa Markdown) |
| `tags` | un elenco di tag |
| `date`, `deadline` | il giorno del ticket (oggi per impostazione predefinita) e una scadenza facoltativa |
| `estimate`, `worked` | la stima e i minuti già lavorati ([tracciamento del tempo](/en/todomator/time-tracking/)) |
| `reference`, `source` | testo libero per collegare il ticket a qualcosa di esterno |
| `parentid` | il ticket padre, per le sottoattività |
| `attachments` | i file del ticket |
| `attrs` | dati JSON liberi |
| `callback` | un indirizzo che riceve il ticket quando cambia ([API](/en/todomator/create-tickets-with-the-api/)) |

## I sei stati

La tabella `cl_status` viene creata con: `pending` (Pending), `open` (In progress), `review` (Review), `postponed` (Postponed), `note` (Note) e `closed` (Closed). I nomi sono tradotti nella lingua dell’utente.

## Chi può vedere un ticket

Un ticket è visibile al suo proprietario, alle persone in `userid`, alle persone in `watcherid` e a tutti quando `ispublic` è impostato. L’elenco delle cartelle che un utente vede è limitato allo stesso modo: una cartella compare solo se l’utente può vedere un ticket al suo interno (gli utenti con `sa` le vedono tutte). L’elenco dei ticket accetta `type` (per esempio `pending`, `postponed`, `review`, `assigned`, `note`, `unread` o `all`), `q` (ricerca), `folderid`, `date`, `skip` e `limit` (10 per impostazione predefinita).

## Cartelle e tag

Una **cartella** ha un nome, un’icona, un colore, un cliente, un’e-mail e un telefono, e dei flag: `isbillable` (i nuovi ticket lo ereditano), `isprivate`, `ispinned`, `isarchived` e `isdisabled`. Solo le persone con il permesso `admin` (o gli amministratori) gestiscono le cartelle. Un **tag** ha un nome, un colore e un’icona e può appartenere a una cartella.

## Intorno al ticket

- **Commenti** (`Comments|create`, `Comments|update`, `Comments|remove`): testo Markdown allegato a un ticket.
- **Segni di non letto e segnalibri**: ogni utente ha il proprio stato di non letto e i propri segnalibri per un ticket.
- **Collegamenti** tra ticket e **clonazione** di un ticket.
- **Cronologia e log** delle modifiche di un ticket.
- **Allegati**: `POST /upload/` accetta fino a 5 MB per richiesta. L’indirizzo di un file è firmato (`/download/<id>-<signature>.<ext>`): immagini, video e PDF si aprono nel browser e gli altri tipi vengono scaricati.
- **Aggiornamenti in tempo reale**: il WebSocket invia un evento `refresh` solo alle persone che possono vedere il ticket e dice agli altri chi sta guardando un ticket in questo momento.
