Feat #4: Suche über Aufgaben #7

Merged
florian.wilde merged 1 commits from feat/4-suche-ueber-aufgaben into main 2026-08-18 05:37:55 +00:00
Owner

Zwei Lücken, die im Issue zusammen stehen.

1. Suchfeld im Aufgabendashboard

Es gab Filter nach Status und Projekt, aber keine Möglichkeit, nach einem Wort zu suchen. Das Suchfeld deckt Titel, Beschreibung, Labels und Projektname ab.

Gefiltert wird im Browser — die Aufgaben liegen dort ohnehin alle vor, es braucht also keine zusätzliche Abfrage und es gibt keine Verzögerung beim Tippen.

Wer sucht, sucht auch in Erledigtem. Sonst fände man die Aufgabe von letzter Woche nicht wieder, obwohl man genau sie meint. Der Schalter „Erledigte einblenden" gilt deshalb nur ohne Suchbegriff.

2. Aufgaben in der Volltextsuche

Task ist jetzt in /api/search, nach demselben Muster wie Note: deutsche Textsuche, ts_headline für den Ausschnitt, Hervorhebung als [[…]] statt als HTML. Deutsche Stammformen greifen damit auch hier — „Rechnung" findet „Rechnungen".

Dazu ein Ausdrucksindex Task_fulltext_idx wie Note_fulltext_idx. Der Ausdruck muss Zeichen für Zeichen dem in der Abfrage entsprechen, sonst greift er nicht — nachgeprüft mit EXPLAIN:

Bitmap Heap Scan on "Task" t
  ->  Bitmap Index Scan on "Task_fulltext_idx"

prisma migrate diff lässt ihn in Ruhe, die Gegenprobe kommt leer heraus.

Das Antwortfeld heißt weiterhin hits und meint die Notizen — umbenennen hätte nur Aufrufer gebrochen, ohne etwas zu verbessern. Aufgaben kommen als eigenes Feld dazu. Beide Stellen, die Treffer anzeigen (Projektbrett und Schnellsuche), zeigen sie jetzt.

Geprüft

  • 261 Unit-Tests, 36 E2E-Tests
  • Neuer E2E-Test zur Volltextsuche: Treffer in Titel und Beschreibung, Erledigtes inbegriffen, Stammformen, fremde Konten finden nichts
  • Neuer E2E-Test zum Suchfeld im Dashboard, inklusive Leerzustand und Zurücksetzen
  • axe-core auf 375 px und 1280 px über vier Zustände (ohne Suche, mit Treffern, ohne Treffer, Brett mit Servertreffern): 0 Verstöße, kein seitlicher Überlauf
  • Volltextsuche zusätzlich gegen die laufende Anwendung gemessen

Hinweis zum Deploy: Diese Änderung bringt eine Migration mit (20260818000000_task_fulltext). scripts/update.sh spielt sie beim Start ein.

Closes #4

Zwei Lücken, die im Issue zusammen stehen. ## 1. Suchfeld im Aufgabendashboard Es gab Filter nach Status und Projekt, aber keine Möglichkeit, nach einem Wort zu suchen. Das Suchfeld deckt **Titel, Beschreibung, Labels und Projektname** ab. Gefiltert wird im Browser — die Aufgaben liegen dort ohnehin alle vor, es braucht also keine zusätzliche Abfrage und es gibt keine Verzögerung beim Tippen. **Wer sucht, sucht auch in Erledigtem.** Sonst fände man die Aufgabe von letzter Woche nicht wieder, obwohl man genau sie meint. Der Schalter „Erledigte einblenden" gilt deshalb nur ohne Suchbegriff. ## 2. Aufgaben in der Volltextsuche `Task` ist jetzt in `/api/search`, nach demselben Muster wie `Note`: deutsche Textsuche, `ts_headline` für den Ausschnitt, Hervorhebung als `[[…]]` statt als HTML. Deutsche Stammformen greifen damit auch hier — **„Rechnung" findet „Rechnungen"**. Dazu ein Ausdrucksindex `Task_fulltext_idx` wie `Note_fulltext_idx`. Der Ausdruck muss Zeichen für Zeichen dem in der Abfrage entsprechen, sonst greift er nicht — nachgeprüft mit `EXPLAIN`: ``` Bitmap Heap Scan on "Task" t -> Bitmap Index Scan on "Task_fulltext_idx" ``` `prisma migrate diff` lässt ihn in Ruhe, die Gegenprobe kommt leer heraus. Das Antwortfeld heißt weiterhin `hits` und meint die Notizen — umbenennen hätte nur Aufrufer gebrochen, ohne etwas zu verbessern. Aufgaben kommen als eigenes Feld dazu. Beide Stellen, die Treffer anzeigen (**Projektbrett** und **Schnellsuche**), zeigen sie jetzt. ## Geprüft - 261 Unit-Tests, 36 E2E-Tests - Neuer E2E-Test zur Volltextsuche: Treffer in Titel **und** Beschreibung, Erledigtes inbegriffen, Stammformen, fremde Konten finden nichts - Neuer E2E-Test zum Suchfeld im Dashboard, inklusive Leerzustand und Zurücksetzen - axe-core auf 375 px und 1280 px über vier Zustände (ohne Suche, mit Treffern, ohne Treffer, Brett mit Servertreffern): 0 Verstöße, kein seitlicher Überlauf - Volltextsuche zusätzlich gegen die laufende Anwendung gemessen **Hinweis zum Deploy:** Diese Änderung bringt eine Migration mit (`20260818000000_task_fulltext`). `scripts/update.sh` spielt sie beim Start ein. Closes #4
florian.wilde added 1 commit 2026-08-18 01:39:50 +00:00
Suche ueber Aufgaben
CI / pruefen (pull_request) Canceled after 0s
afe57c4428
Zwei Luecken, die im Issue zusammen stehen.

**Im Aufgabendashboard fehlte ein Suchfeld.** Es gab Filter nach Status und
Projekt, aber keine Moeglichkeit, nach einem Wort zu suchen. Das Suchfeld
deckt Titel, Beschreibung, Labels und Projektname ab. Gefiltert wird im
Browser - die Aufgaben liegen dort ohnehin alle vor, es braucht also keine
zusaetzliche Abfrage und es gibt keine Verzoegerung beim Tippen.

Wer sucht, sucht dabei auch in Erledigtem: sonst faende man die Aufgabe von
letzter Woche nicht wieder, obwohl man genau sie meint. Der Schalter
"Erledigte einblenden" gilt nur ohne Suchbegriff.

**Die Volltextsuche kannte nur Notizen.** Task ist jetzt ebenfalls dabei,
nach demselben Muster: deutsche Textsuche, ts_headline fuer den Ausschnitt,
Hervorhebung als [[…]] statt als HTML. Deutsche Stammformen greifen damit
auch hier - "Rechnung" findet "Rechnungen".

Dazu ein Ausdrucksindex Task_fulltext_idx wie Note_fulltext_idx. Der
Ausdruck muss Zeichen fuer Zeichen dem in der Abfrage entsprechen, sonst
greift er nicht; nachgeprueft mit EXPLAIN, der Plan zeigt einen
Bitmap Index Scan darauf. "prisma migrate diff" laesst ihn in Ruhe -
Gegenprobe kommt leer heraus.

Das Antwortfeld heisst weiterhin "hits" und meint die Notizen. Umbenennen
haette nur Aufrufer gebrochen, ohne etwas zu verbessern; Aufgaben kommen als
eigenes Feld dazu. Beide Stellen, die Treffer anzeigen - Projektbrett und
Schnellsuche -, zeigen sie jetzt.

Geprueft: 261 Unit-Tests, 36 E2E-Tests. Die Volltextsuche zusaetzlich gegen
die laufende Anwendung: Treffer in Titel und Beschreibung, Erledigtes
inbegriffen, Stammformen greifen, fremde Konten finden nichts.

Refs #4
florian.wilde merged commit a264eb0dce into main 2026-08-18 05:37:55 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: florian.wilde/nebula#7