# 📥 Kernmodul 1: Triage & Quick-Dump Engine Das Triage-Modul von MindSift basiert auf dem *Getting Things Done (GTD)*-Prinzip. Es trennt die **Erfassung von Gedanken** strikt von der **Entscheidung, was damit geschehen soll**. --- ## 💡 1. Das 2-Phasen-Konzept 1. **Phase 1: Schnelles Erfassen (Instant Dump)** Ein Gedanke, ein Anruf, eine Idee oder ein Server-Alarm wird ohne Reibung erfasst. Der Benutzer muss in diesem Moment weder ein Projekt auswählen, noch Fälligkeitsdaten eingeben oder Ordner durchsuchen. 2. **Phase 2: Fokussierte Triage (Inbox Zero)** Zu einem späteren Zeitpunkt (z.B. morgens oder beim Feierabend) sichtet der Benutzer den Stapel im Triage-Deck Karte für Karte und trifft für jeden Eintrag eine eindeutige Entscheidung. --- ## 🔄 2. Triage State Machine ```mermaid stateDiagram-v2 [*] --> Capture: Gedanke erfasst (Desktop / Mobile / Webhook) Capture --> Inbox: Standard (status: 'inbox') Capture --> Task: Direkt als Aufgabe (target: 'task') Capture --> Document: Direkt als Notiz (target: 'document') Capture --> ListItem: Direkt auf Liste (target: 'list_item') state Inbox { [*] --> ActiveCard: Oben auf Stapel ActiveCard --> Skipped: Leertaste / Später (Ans Ende) Skipped --> ActiveCard } ActiveCard --> Discarded: Swipe links / H (Wegwerfen) ActiveCard --> Task: Swipe rechts / L (Als Aufgabe) ActiveCard --> TaskDated: T (Mit Fälligkeitsdatum) ActiveCard --> Document: D (In Notiz umwandeln) ActiveCard --> ListItem: Auf Liste schieben Discarded --> Trash: status: 'discarded' Task --> TasksModule: status: 'kept', converted: 'task' TaskDated --> TasksModule: status: 'kept', converted: 'task', dueDate Document --> WorkspaceModule: status: 'converted', converted: 'document' ListItem --> ListsModule: status: 'converted', converted: 'list_item' ``` --- ## 🖐️ 3. Steuerung & Gesten (Mobile vs. Desktop) ### Desktop-Bedienung (Tastatur-First) - `C` oder `/`: Fokussiert sofort die Eingabeleiste oben im Header. - `Enter`: Speichert den Gedanken sofort im Deck. - `←` oder `H`: Aktive Karte wegwerfen (`discard`). - `→` oder `L`: Aktive Karte sofort zur Aufgabe machen (`task`). - `T`: Datumsauswahl für Termin-Aufgabe öffnen. - `D`: Aktive Karte in eine vollwertige Workspace-Notiz umwandeln. - `Leertaste`: Karte überspringen und ans Ende des Stapels schieben („Später"). ### Mobile Bedienung (Touch & Swipe) - **Mittlerer Plus-Button (`+`):** Öffnet das design-angeglichene Bottom-Sheet mit Spracheingabe, 4 Prioritäts-Buttons (`Niedrig`, `Normal`, `Wichtig`, `Dringend`) und Fälligkeitsdatum. - **Wischgeste nach links (Swipe Left):** Roter Indikator erscheint, Karte wird verworfen. - **Wischgeste nach rechts (Swipe Right):** Grüner Indikator erscheint, Karte wird sofort zur Aufgabe. - **Long-Press (Langes Drücken auf Karte):** Öffnet das Schnell-Aktions-Menü (Auf Liste, Mit Termin, Als Notiz, Später). --- ## 🎙️ 4. Spracheingabe (Speech-to-Text) In der Desktop-Schnelleingabeleiste ([`InstantCaptureBar.tsx`](../../frontend/src/features/capture/InstantCaptureBar.tsx)) sowie im mobilen Triage-Modal ([`App.tsx`](../../frontend/src/App.tsx)) ist ein nativer Browser-Sprachassistent integriert: - Verwendet die standardisierte `SpeechRecognition` bzw. `webkitSpeechRecognition` API. - Erkennt Sprache auf Deutsch (`lang: 'de-DE'`). - Live-Transkription: Gesprochener Text wird in Echtzeit in das Textfeld eingefügt. - Haptisches Feedback: Vibrieren beim Starten und Stoppen der Aufnahme. - Markiert erfasste Gedanken automatisch mit dem Herkunfts-Attribut `source: 'voice'` (Diktat-Badge). --- ## ⚡ 5. Webhook-Ingestion & Smarthome-Pille MindSift kann externe Alarme (Home Assistant, Zigbee2MQTT, n8n, Proxmox, Monitoring) automatisch ins Triage-Deck einspeisen: ### Herkunftserkennung 1. Wird ein Gedanke über `/api/v1/inbox` mit `X-API-Key` oder über `/api/v1/webhooks/ingest` eingeliefert, setzt das Backend automatisch `source = "webhook"`. 2. Im Frontend visualisiert die Triage-Karte eine dezente Webhook-Pille (` Webhook`). 3. Diese Kennzeichnung bleibt auch erhalten, wenn die Karte später zu einer Aufgabe umgewandelt wird. ### Live-WebSocket Update Nach erfolgreichem Ingest sendet der Server sofort ein `TASK_CREATED` Event über den WebSocket-Hub. Das geöffnete Triage-Deck fügt die neue Alarm-Karte sofort oben in den Stapel ein – ohne dass der Benutzer die Seite neu laden muss.