# Tickets, Ordner, Status und Tags in Todomator

> Das Datenmodell von Todomator: was ein Ticket enthält, die sechs Status, wer ein Ticket sehen kann, Ordner für Kunden und Projekte, Tags, Kommentare, Verknüpfungen und Anhänge.

Framework: todomator
Product: Todomator (todomator@1.7)
Language: de
Content-SHA256: 2d7cc56856b0561a1ef614a634eedb5a369423c400294867ab83ebeb5ea4393f
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Im Zentrum von Todomator steht das **Ticket** (Tabelle `tbl_ticket`, Schema `Tickets` in `schemas/tickets.js`). Alles andere organisiert Tickets oder hängt an ihnen.

## Was ein Ticket enthält

| Feld | Bedeutung |
|---|---|
| `name` | der Titel (Pflicht) |
| `statusid` | der Status; ein neues Ticket ist `pending`, sofern Sie nichts anderes angeben |
| `folderid` | der Ordner (Kunde oder Projekt), zu dem es gehört |
| `ownerid`, `userid`, `watcherid` | der Autor, die zugewiesenen Personen und die Personen, die es nur verfolgen |
| `ispublic` | für alle sichtbar; ein öffentliches Ticket hat keine zugewiesenen Personen |
| `ispriority`, `isbillable` | eine Prioritätsmarkierung und ein Abrechenbar-Flag |
| `markdown`, `html` | der Inhalt (die Oberfläche verwendet Markdown) |
| `tags` | eine Liste von Tags |
| `date`, `deadline` | der Tag des Tickets (standardmäßig heute) und eine optionale Frist |
| `estimate`, `worked` | die Schätzung und die bereits gearbeiteten Minuten ([Zeiterfassung](/en/todomator/time-tracking/)) |
| `reference`, `source` | freier Text, um das Ticket mit etwas außerhalb zu verbinden |
| `parentid` | das übergeordnete Ticket, für Teilaufgaben |
| `attachments` | die Dateien des Tickets |
| `attrs` | freie JSON-Daten |
| `callback` | eine Adresse, die das Ticket erhält, wenn es sich ändert ([API](/en/todomator/create-tickets-with-the-api/)) |

## Die sechs Status

Die Tabelle `cl_status` wird angelegt mit: `pending` (Pending), `open` (In progress), `review` (Review), `postponed` (Postponed), `note` (Note) und `closed` (Closed). Die Namen werden in die Sprache des Benutzers übersetzt.

## Wer ein Ticket sehen kann

Ein Ticket ist für seinen Eigentümer, für die Personen in `userid`, für die Personen in `watcherid` und für alle sichtbar, wenn `ispublic` gesetzt ist. Die Liste der Ordner, die ein Benutzer sieht, wird genauso eingeschränkt: Ein Ordner erscheint nur, wenn der Benutzer ein Ticket darin sehen kann (Benutzer mit `sa` sehen alle). Die Ticketliste nimmt `type` (zum Beispiel `pending`, `postponed`, `review`, `assigned`, `note`, `unread` oder `all`), `q` (Suche), `folderid`, `date`, `skip` und `limit` (standardmäßig 10).

## Ordner und Tags

Ein **Ordner** hat einen Namen, ein Icon, eine Farbe, einen Kunden, eine E-Mail und ein Telefon sowie Flags: `isbillable` (neue Tickets erben es), `isprivate`, `ispinned`, `isarchived` und `isdisabled`. Nur Personen mit der Berechtigung `admin` (oder Administratoren) verwalten Ordner. Ein **Tag** hat einen Namen, eine Farbe und ein Icon und kann zu einem Ordner gehören.

## Rund um das Ticket

- **Kommentare** (`Comments|create`, `Comments|update`, `Comments|remove`): Markdown-Text, der an ein Ticket angehängt ist.
- **Ungelesen-Markierungen und Lesezeichen**: Jeder Benutzer hat seinen eigenen Ungelesen-Zustand und Lesezeichen für ein Ticket.
- **Verknüpfungen** zwischen Tickets und das **Klonen** eines Tickets.
- **Verlauf und Protokolle** der Änderungen eines Tickets.
- **Anhänge**: `POST /upload/` nimmt bis zu 5 MB pro Anfrage. Die Adresse einer Datei ist signiert (`/download/<id>-<signature>.<ext>`): Bilder, Video und PDF öffnen sich im Browser, die anderen Typen werden heruntergeladen.
- **Live-Updates**: Der WebSocket sendet ein `refresh`-Ereignis nur an die Personen, die das Ticket sehen können, und teilt den anderen mit, wer gerade ein Ticket ansieht.
