# Tickets, carpetas, estados y etiquetas en Todomator

> El modelo de datos de Todomator: qué contiene un ticket, los seis estados, quién puede ver un ticket, carpetas para clientes y proyectos, etiquetas, comentarios, vínculos y archivos adjuntos.

Framework: todomator
Product: Todomator (todomator@1.7)
Language: es
Content-SHA256: 7f3b8e4d8a91340747c304d147d0ab683571c0fee49224ce8eb4c90c61e9ed6e
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

El centro de Todomator es el **ticket** (tabla `tbl_ticket`, esquema `Tickets` en `schemas/tickets.js`). Todo lo demás organiza tickets o cuelga de ellos.

## Qué contiene un ticket

| Campo | Significado |
|---|---|
| `name` | el título (obligatorio) |
| `statusid` | el estado; un ticket nuevo es `pending` salvo que indiques otra cosa |
| `folderid` | la carpeta (cliente o proyecto) a la que pertenece |
| `ownerid`, `userid`, `watcherid` | el autor, las personas asignadas y las personas que solo lo siguen |
| `ispublic` | visible para todos; un ticket público no tiene personas asignadas |
| `ispriority`, `isbillable` | una marca de prioridad y una bandera de facturable |
| `markdown`, `html` | el contenido (la interfaz usa Markdown) |
| `tags` | una lista de etiquetas |
| `date`, `deadline` | el día del ticket (hoy por defecto) y una fecha límite opcional |
| `estimate`, `worked` | la estimación y los minutos ya trabajados ([control de tiempo](/en/todomator/time-tracking/)) |
| `reference`, `source` | texto libre para conectar el ticket con algo externo |
| `parentid` | el ticket padre, para subtareas |
| `attachments` | los archivos del ticket |
| `attrs` | datos JSON libres |
| `callback` | una dirección que recibe el ticket cuando cambia ([API](/en/todomator/create-tickets-with-the-api/)) |

## Los seis estados

La tabla `cl_status` se crea con: `pending` (Pending), `open` (In progress), `review` (Review), `postponed` (Postponed), `note` (Note) y `closed` (Closed). Los nombres se traducen al idioma del usuario.

## Quién puede ver un ticket

Un ticket es visible para su propietario, para las personas de `userid`, para las personas de `watcherid` y para todos cuando `ispublic` está activado. La lista de carpetas que ve un usuario se limita de la misma manera: una carpeta aparece solo si el usuario puede ver un ticket en ella (los usuarios con `sa` ven todas). La lista de tickets acepta `type` (por ejemplo `pending`, `postponed`, `review`, `assigned`, `note`, `unread` o `all`), `q` (búsqueda), `folderid`, `date`, `skip` y `limit` (10 por defecto).

## Carpetas y etiquetas

Una **carpeta** tiene nombre, icono, color, cliente, correo y teléfono, y banderas: `isbillable` (los tickets nuevos la heredan), `isprivate`, `ispinned`, `isarchived` y `isdisabled`. Solo las personas con el permiso `admin` (o los administradores) gestionan carpetas. Una **etiqueta** tiene nombre, color e icono, y puede pertenecer a una carpeta.

## Alrededor del ticket

- **Comentarios** (`Comments|create`, `Comments|update`, `Comments|remove`): texto Markdown adjunto a un ticket.
- **Marcas de no leído y marcadores**: cada usuario tiene su propio estado de no leído y marcadores para un ticket.
- **Vínculos** entre tickets y **clonación** de un ticket.
- **Historial y registros** de los cambios de un ticket.
- **Archivos adjuntos**: `POST /upload/` acepta hasta 5 MB por petición. La dirección de un archivo está firmada (`/download/<id>-<signature>.<ext>`): las imágenes, el vídeo y los PDF se abren en el navegador y los demás tipos se descargan.
- **Actualizaciones en vivo**: el WebSocket envía un evento `refresh` solo a las personas que pueden ver el ticket, y avisa a las demás de quién está mirando un ticket en este momento.
