M0: arc42-Konzeptdokument, Gherkin-Anforderungen und OpenAPI-Vertrag
- doc/architecture.md: arc42-Detaildokument mit Mermaid-Diagrammen (Bausteinsicht, Klassendiagramm, Statusmodell, 5 Sequenzdiagramme), Speicherkonzept, DEC-01..19-Entscheidungen mit Trade-offs - doc/requirements/: 7 Features als Gherkin-Szenarien (TDD-Grundlage) mit Traceability-Tabellen Szenario <-> Stdlib-Testname - doc/openapi.yaml: API-Vertrag fuer alle 9 Endpunkte (Quelle der Wahrheit) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
# Feature: Automatischer Import aus dem überwachten Ordner
|
||||
|
||||
Als Nutzer möchte ich Dateien einfach im Import-Ordner ablegen,
|
||||
damit sie ohne manuellen Eingriff verarbeitet werden.
|
||||
|
||||
```gherkin
|
||||
Funktionalität: Automatischer Import aus dem überwachten Ordner
|
||||
|
||||
Szenario: Neue Datei wird automatisch erkannt und verarbeitet
|
||||
Angenommen der Watcher überwacht den Import-Ordner
|
||||
Wenn eine PDF-Datei im Import-Ordner gespeichert wird
|
||||
Dann wird die Datei nach Abschluss des Schreibvorgangs in das Staging übernommen
|
||||
Und ein Event "DocumentReceived" mit origin "import_folder" wurde aufgezeichnet
|
||||
Und die Datei liegt nicht mehr im Import-Ordner
|
||||
|
||||
Szenario: Unvollständig geschriebene Datei wird nicht vorzeitig übernommen
|
||||
Angenommen eine Datei wird langsam in den Import-Ordner geschrieben
|
||||
Wenn sich Größe oder Änderungszeit innerhalb der Stabilitätsfrist noch ändern
|
||||
Dann wird die Datei noch nicht übernommen
|
||||
Und erst nach unveränderter Stabilitätsfrist beginnt die Verarbeitung
|
||||
|
||||
Szenario: Beim Start vorhandene Dateien werden übernommen
|
||||
Angenommen im Import-Ordner liegen Dateien, während das System nicht läuft
|
||||
Wenn das System startet
|
||||
Dann werden diese Dateien durch den Start-Scan erkannt und verarbeitet
|
||||
|
||||
Szenario: Periodischer Rescan fängt verpasste Ereignisse
|
||||
Angenommen eine Datei wurde vom Dateisystem-Watcher nicht gemeldet
|
||||
Wenn der periodische Rescan läuft
|
||||
Dann wird die Datei erkannt und verarbeitet
|
||||
|
||||
Szenario: Duplikat aus dem Import-Ordner wird aussortiert
|
||||
Angenommen ein bereits importiertes Dokument mit bekanntem SHA-256-Hash
|
||||
Wenn eine byte-identische Datei im Import-Ordner gespeichert wird
|
||||
Dann wird die Datei nach import/rejected/ verschoben
|
||||
Und eine Warnung mit der existing_document_id wird geloggt
|
||||
Und es wurde kein neues Aggregat angelegt
|
||||
|
||||
Szenario: Nicht unterstützte und versteckte Dateien werden ignoriert
|
||||
Angenommen der Watcher überwacht den Import-Ordner
|
||||
Wenn eine .docx-, .part- oder versteckte Datei dort gespeichert wird
|
||||
Dann wird sie ignoriert und verbleibt unverändert
|
||||
```
|
||||
|
||||
## Traceability
|
||||
|
||||
| Szenario | Go-Test (Paket `internal/importer`) |
|
||||
|---|---|
|
||||
| Neue Datei wird automatisch erkannt und verarbeitet | `TestImporter_NewFileIsIngested` |
|
||||
| Unvollständig geschriebene Datei wird nicht vorzeitig übernommen | `TestImporter_WaitsForStableFile` |
|
||||
| Beim Start vorhandene Dateien werden übernommen | `TestImporter_StartupScanPicksUpExistingFiles` |
|
||||
| Periodischer Rescan fängt verpasste Ereignisse | `TestImporter_RescanPicksUpMissedFile` |
|
||||
| Duplikat aus dem Import-Ordner wird aussortiert | `TestImporter_DuplicateMovedToRejected` |
|
||||
| Nicht unterstützte und versteckte Dateien werden ignoriert | `TestImporter_IgnoresUnsupportedAndHiddenFiles` |
|
||||
Reference in New Issue
Block a user