test(documents): die drei stillen Zustaende der OCR-Warteschlange
internal/documents hatte null Tests -- und ist das Paket, dessen Versagen am teuersten ist, weil es **still** ist: Die Volltextsuche findet dann einfach nichts, und das sieht aus wie "steht nicht drin". Acht Tests, nicht auf Abdeckung gezielt, sondern auf die Zustaende, in denen die Schlange haengenbleiben kann, ohne dass es auffaellt: ein Auftrag, der nie aufgibt; ein Auftrag, der nach hartem Abbruch fuer immer auf 'running' steht; ein Text nach alter Regel, der nie erneuert wird. Dazu geloeschte Dateien, erneuter Upload und Complete als Einheit. scripts/db-tests.sh baut eine Wegwerf-Datenbank, spielt die Migrationen ein und laesst die Tests laufen. Ohne das haetten sie sich mangels TEST_DSN immer nur uebersprungen -- Dekoration, genau wie vitest es war. **Gegengeprueft an absichtlich kaputtem Code, und der zweite Versuch blieb gruen:** maxAttempts von 3 auf 9999 gesetzt -- alle Tests weiter in Ordnung, nur die Laufzeit stieg von 0,2 auf 27 Sekunden. Sie schleiften ueber die Konstante und setzten die Zahl voraus, statt sie zu pruefen. So verschwindet eine Entscheidung unbemerkt aus einer Anwendung. Jetzt haelt ein eigener Test die Zahl fest und sagt, wo die Begruendung hingehoert. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
2cc02941b9
commit
76176a45bc
4 files changed
+456
-7
No files matched your search
+17
-7
@@ -174,10 +174,21 @@ Bei **`documents` und `tags` gar nichts** — und `documents` ist das Stück, da
|
||||
aus `scan_0042.pdf` ein auffindbares Dokument macht. Genau der Grund, aus dem
|
||||
Aether das Rechnungsarchiv ist.
|
||||
|
||||
**Vorschlag:** Nicht auf Abdeckung zielen, sondern auf die Stellen, an denen
|
||||
ein Fehler still bleibt: Beim OCR die Warteschlange (Versuche, Aufgeben,
|
||||
Wiederaufnahme nach hartem Abbruch), bei den Etiketten die Rechteprüfung —
|
||||
Etiketten sind je Konto, und das prüft heute nichts nach.
|
||||
**Teilweise erledigt am 12.09.2026:** `internal/documents` hat jetzt acht
|
||||
Tests — gezielt auf die drei Zustände, in denen die Warteschlange
|
||||
hängenbleiben kann, ohne dass es auffällt (Details in
|
||||
[TESTING.md](TESTING.md)). Dazu `scripts/db-tests.sh`, damit sie nicht wie
|
||||
`vitest` zur Dekoration werden: Sie überspringen sich ohne `TEST_DSN` und
|
||||
liefen sonst nie.
|
||||
|
||||
Gegengeprüft an absichtlich kaputtem Code — und **der zweite Versuch blieb
|
||||
grün**: `maxAttempts` von 3 auf 9999 gesetzt, alle Tests weiter in Ordnung,
|
||||
nur die Laufzeit stieg von 0,2 auf 27 Sekunden. Die Tests schleiften über die
|
||||
Konstante und setzten die Zahl voraus, statt sie zu prüfen. Dagegen steht jetzt
|
||||
ein eigener Test.
|
||||
|
||||
**Offen bleibt `internal/tags`:** Etiketten sind je Konto, und dass ein fremdes
|
||||
Etikett fremd bleibt, prüft bis heute nichts nach.
|
||||
|
||||
---
|
||||
|
||||
@@ -223,6 +234,5 @@ gibt:
|
||||
1. ~~`recover` in die Hintergrund-Goroutinen~~ ✅ 12.09.2026
|
||||
2. ~~Prüfsummen-Abweichung melden~~ ✅ 12.09.2026 – und dabei fiel auf, dass
|
||||
**alle** kontextgebundenen Logzeilen ins Nichts gingen (2b).
|
||||
3. **Tests für `documents`** (Punkt 3). Das Paket, dessen stilles Versagen am
|
||||
teuersten ist: Die Suche findet dann einfach nichts, und das sieht aus wie
|
||||
„ist nicht drin".
|
||||
3. ~~Tests für `documents`~~ ✅ 12.09.2026. Offen: `internal/tags` — die
|
||||
Rechteprüfung dort ist ungeprüft.
|
||||
Reference in new issue
Block a user