+
Expense Import Setup
+
+ {/* Microsoft Connection */}
+
+
+ {msftConnection ? (
+
+
+
+ Connected as {msftConnection.accountName}
+
+
+ ) : (
+
+ )}
+
+
+ {/* SharePoint Folder Selection */}
+ {msftConnection && (
+
+
+
+
+ )}
+
+ {/* Activate Button */}
+ {selectedFolder && (
+
+ )}
+
+ );
+}
+```
+
+---
+
+## 4. Backend: API Endpoints
+
+### 4.1 SharePoint Folder List Endpoint
+
+Neuer Endpoint in `routeSharepoint.py`:
+
+```python
+@router.get("/api/sharepoint/folders")
+async def listSharepointFolders(
+ connectionId: str = Query(..., description="Connection ID"),
+ request: Request = None
+):
+ """List available SharePoint folders for the user's connection."""
+ # Implementation: Use Graph API to list sites and root folders
+ ...
+```
+
+### 4.2 Automation Definition Endpoint
+
+Erweiterung von `routeFeatureAutomation.py` für Template-basierte Erstellung.
+
+---
+
+## 5. Datenbank-Änderungen
+
+Keine Schema-Änderungen erforderlich. `TrusteePosition` Tabelle wird verwendet wie definiert.
+
+---
+
+## 6. Design-Entscheidungen
+
+### 6.1 Geklärte Punkte
+
+| Thema | Entscheidung |
+|-------|--------------|
+| **PDF-Parsing** | AI-Service verarbeitet PDFs direkt (inkl. Bilder, Scans etc.) - keine Vorverarbeitung nötig |
+| **Folder-Erstellung** | "processed" und "error" Subfolders werden automatisch erstellt wenn nicht vorhanden |
+| **Fehlerbehandlung** | Fehlerhafte PDFs werden in "error" Subfolder verschoben, Dateiname bleibt unverändert |
+| **Duplikat-Erkennung** | Keine - ein wiederholtes Dokument ist bewusst (Kunde lädt erneut hoch) |
+
+### 6.2 Risiko-Management
+
+| Risiko | Handling |
+|--------|----------|
+| **AI-Kosten** | Kunde bezahlt pro Aufruf - keine weitere Einschränkung nötig |
+| **SharePoint Rate-Limiting** | Bei Rate-Limit-Error: warten, dann weiterfahren |
+| **Timeout** | Bereits im System implementiert - funktioniert |
+
+### 6.3 Implementierungs-Vorgaben
+
+| Vorgabe | Wert |
+|---------|------|
+| **Max PDFs pro Ausführung** | 50 Dateien (Limit) |
+| **Retry-Logik** | NEIN - AI-Service handhabt Retries intern |
+| **Preview-Modus** | NEIN - nicht benötigt |
+
+---
+
+## 7. Implementierungs-Reihenfolge
+
+1. **Phase 1: Backend Action**
+ - `getExpensesFromPdf.py` erstellen
+ - In `methodSharepoint.py` registrieren
+ - Unit-Tests schreiben
+
+2. **Phase 2: Automation Template**
+ - Template in `subAutomationTemplates.py` hinzufügen
+ - Prompt optimieren und testen
+
+3. **Phase 3: API Endpoints**
+ - SharePoint Folder-List Endpoint
+ - Automation Definition Erweiterung
+
+4. **Phase 4: Frontend**
+ - `TrusteeExpenseImport.tsx` Seite
+ - Navigation/Routing hinzufügen
+ - Integration testen
+
+---
+
+## 8. Test-Plan
+
+1. **Unit-Tests**
+ - VAT-Berechnung
+ - Valuta/DateTime-Ergänzung
+ - CSV-Parsing
+ - Tag-Validierung
+
+2. **Integration-Tests**
+ - SharePoint-Verbindung
+ - PDF-Download
+ - AI-Extraktion
+ - TrusteePosition-Speicherung
+ - Datei-Verschiebung
+
+3. **E2E-Tests**
+ - Kompletter Workflow von PDF bis gespeicherter Position
+ - Automation-Schedule-Ausführung