mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 20:21:09 +02:00
docs(todo): add task metadata reference documentation
Document all available task properties including scheduling, priority, recurrence (RFC 5545 RRULE), subtasks, labels, and metadata fields. Includes examples and notes on current QuickAdd implementation status. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
b148a72e36
commit
00dadc97d1
1 changed files with 250 additions and 0 deletions
250
apps/todo/docs/TASK_METADATA.md
Normal file
250
apps/todo/docs/TASK_METADATA.md
Normal file
|
|
@ -0,0 +1,250 @@
|
|||
# Task Metadata Reference
|
||||
|
||||
Dieses Dokument beschreibt alle verfügbaren Metadaten, die einer Aufgabe (Task) zugewiesen werden können.
|
||||
|
||||
## Haupt-Eigenschaften
|
||||
|
||||
| Feld | Typ | Pflicht | Beschreibung |
|
||||
|------|-----|---------|--------------|
|
||||
| `title` | `string` | Ja | Titel der Aufgabe |
|
||||
| `description` | `string \| null` | Nein | Detaillierte Beschreibung |
|
||||
| `projectId` | `string \| null` | Nein | ID des zugehörigen Projekts |
|
||||
| `parentTaskId` | `string \| null` | Nein | ID der übergeordneten Aufgabe (für verschachtelte Tasks) |
|
||||
|
||||
## Zeitplanung
|
||||
|
||||
| Feld | Typ | Beschreibung |
|
||||
|------|-----|--------------|
|
||||
| `dueDate` | `Date \| string \| null` | Fälligkeitsdatum |
|
||||
| `dueTime` | `string \| null` | Fälligkeitszeit im Format `HH:mm` |
|
||||
| `startDate` | `Date \| string \| null` | Startdatum der Aufgabe |
|
||||
|
||||
### Beispiel
|
||||
```typescript
|
||||
{
|
||||
dueDate: "2024-12-15T00:00:00.000Z",
|
||||
dueTime: "14:30",
|
||||
startDate: "2024-12-10T00:00:00.000Z"
|
||||
}
|
||||
```
|
||||
|
||||
## Priorität & Status
|
||||
|
||||
### Priorität (`priority`)
|
||||
|
||||
| Wert | Beschreibung | Farbe |
|
||||
|------|--------------|-------|
|
||||
| `low` | Niedrige Priorität | Grün (#22c55e) |
|
||||
| `medium` | Mittlere Priorität | Gelb (#eab308) |
|
||||
| `high` | Hohe Priorität | Orange (#f97316) |
|
||||
| `urgent` | Dringend | Rot (#ef4444) |
|
||||
|
||||
### Status (`status`)
|
||||
|
||||
| Wert | Beschreibung |
|
||||
|------|--------------|
|
||||
| `pending` | Ausstehend |
|
||||
| `in_progress` | In Bearbeitung |
|
||||
| `completed` | Abgeschlossen |
|
||||
| `cancelled` | Abgebrochen |
|
||||
|
||||
### Completion
|
||||
|
||||
| Feld | Typ | Beschreibung |
|
||||
|------|-----|--------------|
|
||||
| `isCompleted` | `boolean` | Erledigt-Flag |
|
||||
| `completedAt` | `Date \| string \| null` | Zeitpunkt der Erledigung |
|
||||
|
||||
## Wiederholung (Recurrence)
|
||||
|
||||
Wiederkehrende Aufgaben werden mit dem RFC 5545 RRULE-Standard definiert.
|
||||
|
||||
| Feld | Typ | Beschreibung |
|
||||
|------|-----|--------------|
|
||||
| `recurrenceRule` | `string \| null` | RFC 5545 RRULE String |
|
||||
| `recurrenceEndDate` | `Date \| string \| null` | Enddatum der Wiederholung |
|
||||
| `lastOccurrence` | `Date \| string \| null` | Datum der letzten Ausführung |
|
||||
|
||||
### RRULE Beispiele
|
||||
|
||||
| Muster | RRULE |
|
||||
|--------|-------|
|
||||
| Täglich | `FREQ=DAILY` |
|
||||
| Wöchentlich | `FREQ=WEEKLY` |
|
||||
| Jeden Montag und Mittwoch | `FREQ=WEEKLY;BYDAY=MO,WE` |
|
||||
| Monatlich am 15. | `FREQ=MONTHLY;BYMONTHDAY=15` |
|
||||
| Jährlich | `FREQ=YEARLY` |
|
||||
| Alle 2 Wochen | `FREQ=WEEKLY;INTERVAL=2` |
|
||||
|
||||
## Kanban-Board
|
||||
|
||||
| Feld | Typ | Beschreibung |
|
||||
|------|-----|--------------|
|
||||
| `columnId` | `string \| null` | ID der Kanban-Spalte |
|
||||
| `columnOrder` | `number` | Position innerhalb der Spalte |
|
||||
|
||||
## Subtasks (Unteraufgaben)
|
||||
|
||||
Subtasks sind Checklisten-Einträge innerhalb einer Aufgabe.
|
||||
|
||||
| Feld | Typ | Beschreibung |
|
||||
|------|-----|--------------|
|
||||
| `subtasks` | `Subtask[] \| null` | Array von Unteraufgaben |
|
||||
|
||||
### Subtask-Struktur
|
||||
|
||||
```typescript
|
||||
interface Subtask {
|
||||
id: string; // Eindeutige ID
|
||||
title: string; // Titel der Unteraufgabe
|
||||
isCompleted: boolean; // Erledigt-Status
|
||||
completedAt?: string; // Erledigungszeitpunkt
|
||||
order: number; // Reihenfolge
|
||||
}
|
||||
```
|
||||
|
||||
### Beispiel
|
||||
```typescript
|
||||
{
|
||||
subtasks: [
|
||||
{ id: "1", title: "Design erstellen", isCompleted: true, order: 0 },
|
||||
{ id: "2", title: "Code implementieren", isCompleted: false, order: 1 },
|
||||
{ id: "3", title: "Tests schreiben", isCompleted: false, order: 2 }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Labels (Tags)
|
||||
|
||||
Labels ermöglichen die Kategorisierung von Aufgaben.
|
||||
|
||||
| Feld | Typ | Beschreibung |
|
||||
|------|-----|--------------|
|
||||
| `labels` | `Label[]` | Array von zugewiesenen Labels |
|
||||
|
||||
### Label-Struktur
|
||||
|
||||
```typescript
|
||||
interface Label {
|
||||
id: string; // Eindeutige ID
|
||||
name: string; // Label-Name
|
||||
color: string; // Hex-Farbcode (z.B. "#8b5cf6")
|
||||
}
|
||||
```
|
||||
|
||||
## Zusätzliche Metadaten
|
||||
|
||||
Das `metadata`-Objekt enthält erweiterte Informationen.
|
||||
|
||||
| Feld | Typ | Beschreibung |
|
||||
|------|-----|--------------|
|
||||
| `metadata.notes` | `string` | Zusätzliche Notizen |
|
||||
| `metadata.attachments` | `string[]` | URLs zu Dateianhängen |
|
||||
| `metadata.linkedCalendarEventId` | `string \| null` | ID eines verknüpften Kalender-Events |
|
||||
|
||||
### Beispiel
|
||||
```typescript
|
||||
{
|
||||
metadata: {
|
||||
notes: "Wichtige Hinweise zur Aufgabe...",
|
||||
attachments: [
|
||||
"https://storage.example.com/file1.pdf",
|
||||
"https://storage.example.com/image.png"
|
||||
],
|
||||
linkedCalendarEventId: "cal-event-123"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Sortierung
|
||||
|
||||
| Feld | Typ | Beschreibung |
|
||||
|------|-----|--------------|
|
||||
| `order` | `number` | Sortierreihenfolge innerhalb der Liste |
|
||||
|
||||
## Timestamps
|
||||
|
||||
| Feld | Typ | Beschreibung |
|
||||
|------|-----|--------------|
|
||||
| `createdAt` | `Date \| string` | Erstellungszeitpunkt |
|
||||
| `updatedAt` | `Date \| string` | Letzte Aktualisierung |
|
||||
|
||||
---
|
||||
|
||||
## Vollständiges Beispiel
|
||||
|
||||
```typescript
|
||||
const task: Task = {
|
||||
id: "task-uuid-123",
|
||||
userId: "user-uuid-456",
|
||||
|
||||
// Haupt-Eigenschaften
|
||||
title: "Website-Redesign abschließen",
|
||||
description: "Alle Seiten auf das neue Design umstellen",
|
||||
projectId: "project-uuid-789",
|
||||
parentTaskId: null,
|
||||
|
||||
// Zeitplanung
|
||||
dueDate: "2024-12-20T00:00:00.000Z",
|
||||
dueTime: "17:00",
|
||||
startDate: "2024-12-15T00:00:00.000Z",
|
||||
|
||||
// Priorität & Status
|
||||
priority: "high",
|
||||
status: "in_progress",
|
||||
isCompleted: false,
|
||||
completedAt: null,
|
||||
|
||||
// Sortierung
|
||||
order: 0,
|
||||
|
||||
// Kanban
|
||||
columnId: "col-in-progress",
|
||||
columnOrder: 2,
|
||||
|
||||
// Wiederholung
|
||||
recurrenceRule: null,
|
||||
recurrenceEndDate: null,
|
||||
lastOccurrence: null,
|
||||
|
||||
// Subtasks
|
||||
subtasks: [
|
||||
{ id: "sub-1", title: "Homepage", isCompleted: true, order: 0 },
|
||||
{ id: "sub-2", title: "About-Seite", isCompleted: false, order: 1 }
|
||||
],
|
||||
|
||||
// Labels
|
||||
labels: [
|
||||
{ id: "label-1", name: "Design", color: "#8b5cf6" },
|
||||
{ id: "label-2", name: "Wichtig", color: "#ef4444" }
|
||||
],
|
||||
|
||||
// Metadaten
|
||||
metadata: {
|
||||
notes: "Design-Specs sind im Anhang",
|
||||
attachments: ["https://storage.example.com/design-specs.pdf"],
|
||||
linkedCalendarEventId: "cal-123"
|
||||
},
|
||||
|
||||
// Timestamps
|
||||
createdAt: "2024-12-01T10:00:00.000Z",
|
||||
updatedAt: "2024-12-10T14:30:00.000Z"
|
||||
};
|
||||
```
|
||||
|
||||
## UI-Implementierung
|
||||
|
||||
### Im QuickAdd implementiert
|
||||
- `title` - Eingabefeld
|
||||
- `dueDate` - Datum-Picker (Heute, Morgen, In 3 Tagen, Nächste Woche)
|
||||
- `priority` - Priorität-Picker (Niedrig, Mittel, Hoch, Dringend)
|
||||
- `projectId` - Projekt-Picker
|
||||
|
||||
### Noch nicht im QuickAdd
|
||||
- Labels
|
||||
- Erinnerungen/Reminders
|
||||
- Wiederholung (Recurrence)
|
||||
- Subtasks
|
||||
- Beschreibung
|
||||
- Startdatum
|
||||
- Uhrzeit
|
||||
Loading…
Add table
Add a link
Reference in a new issue