# 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` |