# Upload-Fehlerbehandlung - Dokumentation

## Übersicht der abgefangenen Fehler und deren Behandlung

1. Upload-Fehler
**Fehlermeldung:** `"Der Datei-Upload ist fehlgeschlagen. Mögliche Ursachen: Datei zu groß für PHP-Upload-Limits, Netzwerkproblem oder Server-Problem. Bitte überprüfen Sie die Dateigröße (max. 10MB) und versuchen Sie es erneut. Bei wiederholten Problemen kontaktieren Sie den Administrator."`

**Wann tritt dieser Fehler auf:**
- Datei ist zu groß für PHP-Upload-Limits (vor dem Upload)
- Netzwerk-Problem beim Upload
- Server hat keine temporären Upload-Verzeichnisse
- PHP-Konfiguration verhindert Upload

2. Verzeichnis-Fehler
**Fehlermeldung:** `"Das Upload-Verzeichnis konnte nicht erstellt werden. Mögliche Ursachen: Berechtigungsproblem oder Server-Speicher voll. Bitte kontaktieren Sie den Administrator."`

**Wann tritt dieser Fehler auf:**
- `storage/app/imports/` Verzeichnis existiert nicht und kann nicht erstellt werden
- Server hat keine Berechtigung, Verzeichnisse zu erstellen
- Server-Speicher ist voll (kein Platz für neues Verzeichnis)

3. Berechtigungs-Fehler
**Fehlermeldung:** `"Keine Schreibberechtigung für das Upload-Verzeichnis. Bitte kontaktieren Sie den Administrator."`

**Wann tritt dieser Fehler auf:**
- Webserver-Benutzer hat keine Schreibrechte
- Verzeichnis-Berechtigungen sind falsch gesetzt (z.B. nur 644 statt 755)
- SELinux oder ähnliche Sicherheitssysteme blockieren Schreibzugriff

4. Datei-Speicher-Fehler
**Fehlermeldung:** `"Die Datei konnte nicht auf dem Server gespeichert werden. Mögliche Ursachen: Datei bereits geöffnet, Berechtigungsproblem oder Server-Speicher voll. Bitte versuchen Sie es erneut oder kontaktieren Sie den Administrator. Technischer Fehler: [spezifische Fehlermeldung]"`

**Wann tritt dieser Fehler auf:**
- Datei wurde hochgeladen, aber konnte nicht in das Upload-Verzeichnis verschoben werden
- Datei ist bereits geöffnet/gesperrt
- Berechtigungsfehler beim Verschieben der Datei
- Server-Speicher ist voll (kein Platz für die Datei)

5. Datei-Existenz-Fehler
**Fehlermeldung:** `"Die hochgeladene Datei wurde nicht gefunden. Bitte versuchen Sie den Upload erneut."`

**Wann tritt dieser Fehler auf:**
- Datei wurde zwischen Upload und Verarbeitung gelöscht
- Temp-Verzeichnis wurde geleert
- Dateiname enthält ungültige Zeichen

6. Datei-Lese-Fehler
**Fehlermeldung:** `"Die Datei kann nicht gelesen werden. Mögliche Ursachen: Datei ist gesperrt oder Berechtigungsfehler. Bitte überprüfen Sie die Dateiberechtigungen."`

**Wann tritt dieser Fehler auf:**
- Datei ist durch anderen Prozess gesperrt
- Berechtigungsfehler beim Lesen der Datei
- Datei ist in Verwendung durch andere Anwendung

7. Excel-Format-Fehler
**Fehlermeldung:** `"Die Datei ist keine gültige Excel-Datei oder ist beschädigt. Bitte überprüfen Sie: 1) Ist es wirklich eine Excel-Datei? 2) Können Sie die Datei in Excel öffnen? 3) Versuchen Sie, die Datei als CSV zu speichern und als CSV hochzuladen."`

**Wann tritt dieser Fehler auf:**
- Datei hat .xls Endung, ist aber eigentlich CSV/Text
- Datei wurde nicht korrekt als Excel gespeichert
- Datei wurde aus anderem System exportiert (z.B. Google Sheets)
- Datei ist teilweise korrupt

8. Memory-Fehler
**Fehlermeldung:** `"Die Datei ist zu groß für die Verarbeitung im Arbeitsspeicher. Bitte verwenden Sie eine kleinere Datei oder teilen Sie die Daten in mehrere Dateien auf."`

**Wann tritt dieser Fehler auf:**
- Datei wurde erfolgreich hochgeladen, aber beim Einlesen ist der Arbeitsspeicher voll
- Excel-Datei enthält sehr viele Zeilen/Spalten
- PHP Memory-Limit ist zu niedrig für die Verarbeitung
- Server hat wenig RAM verfügbar

9. Beschädigte Datei
**Fehlermeldung:** `"Die Datei ist beschädigt und kann nicht gelesen werden. Mögliche Ursachen: Unvollständige Übertragung, Virenscanner-Eingriff oder falsche Bearbeitung. Bitte überprüfen Sie die Datei, versuchen Sie eine andere Datei oder speichern Sie die Datei erneut aus der Originalquelle."`

**Wann tritt dieser Fehler auf:**
- Datei wurde unvollständig übertragen
- Datei wurde durch Virenscanner beschädigt
- Datei wurde in Texteditor geöffnet und falsch gespeichert
- Datei wurde während des Transfers unterbrochen

10. Format-Fehler
**Fehlermeldung:** `"Das Dateiformat wird nicht unterstützt. Bitte verwenden Sie eine gültige [Excel/CSV]-Datei."`

**Wann tritt dieser Fehler auf:**
- Datei hat unbekannte Dateiendung (.txt, .pdf, etc.)
- Datei wurde mit falschem Format gespeichert
- Datei stammt aus sehr altem Excel (vor 2003)

11. Leere Datei
**Fehlermeldung:** `"Die Datei enthält keine gültigen Daten oder ist leer. Bitte überprüfen Sie, ob die Datei Daten enthält."`

**Wann tritt dieser Fehler auf:**
- Benutzer hat leere Datei hochgeladen
- Datei enthält nur Header-Zeile
- Alle Datenzeilen sind leer

12. Spalten-Fehler
**Fehlermeldung:** `"Die Datei hat zu wenige Spalten. Erwartet: 31, gefunden: [Anzahl]. Bitte überprüfen Sie das Dateiformat."`

**Wann tritt dieser Fehler auf:**
- Datei hat weniger als 31 Spalten
- CSV wurde mit falschem Trennzeichen exportiert
- Excel-Tabelle wurde nicht vollständig markiert vor Export

13. Zeilen-Fehler
**Fehlermeldung:** `"Zeile [Nummer] hat zu wenige Spalten. Erwartet: 31, gefunden: [Anzahl]."`

**Wann tritt dieser Fehler auf:**
- Einzelne Zeilen haben weniger Spalten als erwartet
- CSV hat unterschiedliche Spaltenanzahl pro Zeile
- Zeilen wurden unvollständig kopiert

14. CSV-spezifische Fehler
**Fehlermeldung:** `"Die CSV-Datei hat zu viele Zeilen (Maximum: 10000). Bitte teilen Sie die Datei in kleinere Teile auf."`

**Wann tritt dieser Fehler auf:**
- CSV hat mehr als 10.000 Datenzeilen
- Datei wurde aus sehr großer Datenbank exportiert
- Benutzer hat mehrere Dateien in eine zusammengefasst

15. Service-Fehler
Es gibt verschiedene Service-Fehler-Szenarien:

15a. Netzwerk-Fehler
**Fehlermeldung:** `"Netzwerk-Fehler beim Aufruf des Services und lokale Speicherung fehlgeschlagen: [spezifische Fehlermeldung]"`

**Wann tritt dieser Fehler auf:**
- Netzwerk-Problem zwischen Server und Service
- Service ist offline/nicht erreichbar
- DNS-Auflösung fehlgeschlagen

15b. Service nicht konfiguriert
**Fehlermeldung:** `"Service nicht konfiguriert und lokale Speicherung fehlgeschlagen: [spezifische Fehlermeldung]"`

**Wann tritt dieser Fehler auf:**
- REST-Service URL ist nicht konfiguriert
- Service-Endpunkt fehlt in der Konfiguration

15c. Service HTTP-Fehler
**Fehlermeldung:** `"Service-Fehler (HTTP [CODE]) und lokale Speicherung fehlgeschlagen: [spezifische Fehlermeldung]"`

**Wann tritt dieser Fehler auf:**
- Service ist überlastet (HTTP 503)
- Authentifizierung fehlgeschlagen (HTTP 401/403)
- Service-Fehler (HTTP 500)
- Service nicht gefunden (HTTP 404)

16. Datenbank-Fehler
**Fehlermeldung:** `"Die Daten konnten nicht in der Datenbank gespeichert werden. Mögliche Ursachen: Zu viele Datenfehler, Datenbank-Problem oder Formatfehler. Bitte überprüfen Sie das Datenformat und versuchen Sie es erneut."`

**Wann tritt dieser Fehler auf:**
- Datenbank-Verbindung ist unterbrochen
- Datenbank ist voll
- Constraint-Verletzungen (z.B. doppelte IDs)
- Datenbank-Schema ist veraltet

17. Leere Zellen-Fehler
**Fehlermeldung:** `"Die Datei enthält leere oder ungültige Zellen. Bitte überprüfen Sie die Datei und füllen Sie alle leeren Zellen aus oder verwenden Sie eine CSV-Datei."`

**Wann tritt dieser Fehler auf:**
- Excel-Datei enthält viele leere Zellen
- Zellen haben ungültige Datentypen
- Excel-Struktur ist unvollständig
- Datei wurde unvollständig exportiert

18. Datenvalidierungs-Fehler
**Fehlermeldung:** `"Fehler in Zeile X: [Feldname] muss eine Ganzzahl sein"` oder ähnliche Validierungsfehler

**Wann tritt dieser Fehler auf:**
- Text in numerischen Feldern (z.B. auction_date, lot_number)
- Falsche Datumsformate
- Ungültige Währungsformate
- Spezielle Zeichen in Pflichtfeldern
- Feld-spezifische Validierungsregeln werden verletzt

**Häufige Felder mit Validierung:**
- `auction_date` - muss Ganzzahl sein (z.B. 20250915)
- `lot_no` - muss numerisch sein
- `price_estimate_low/high` - muss numerisch sein
- `object_height/width/depth` - muss numerisch sein

19. Header-Fehler
**Fehlermeldung:** `"Die erste Zeile ist kein gültiger Header. Bitte stellen Sie sicher, dass die Datei eine Kopfzeile mit Spaltenüberschriften enthält."`

**Wann tritt dieser Fehler auf:**
- Datei hat keine Kopfzeile (erste Zeile enthält Daten statt Spaltenüberschriften)
- Header enthält nicht die erwarteten Spaltennamen
- Erste Zeile ist leer oder unvollständig
- Datei wurde falsch formatiert (Daten beginnen in Zeile 1 statt Zeile 2)

20. System-Fehler
**Fehlermeldung:** `"Ein unerwarteter Fehler ist aufgetreten: [Fehlermeldung]. Bitte kontaktieren Sie den Administrator."`

**Wann tritt dieser Fehler auf:**
- PHP-Fehler im Anwendungscode
- Unerwartete Ausnahme in der Anwendung
- Externe PHP-Bibliotheken haben Fehler
- Interne Server-Konfigurationsprobleme

## Erwartetes Dateiformat

Die Upload-Datei sollte folgende 31 Spalten enthalten:

1. Object ID
2. Lot Number
3. Auction Number/ Identifier
4. Auction Name
5. Auction Location
6. Auction Date
7. Artist Firstname
8. Artist Lastname
9. Artist Born – Location
10. Artist Born – Date
11. Artist Died – Date
12. Artist Died – Location
13. Object Title
14. Object Medium / Technique
15. Object Date
16. Object Height
17. Object Width
18. Object Depth
19. Unit of Measurement
20. Price Estimate Low
21. Price Estimate High
22. Currency
23. Object Price Result
24. Object / Lot URL
25. Object / Lot Image URL
26. Obejct Indicators
27. Lot Details
28. Provenance
29. Exhibition
30. Essay
31. Object Condition

## Unterstützte Dateiformate

- **Excel:** .xlsx, .xls, .xlsm
- **CSV:** .csv (mit Semikolon-Trennzeichen)
- **OpenDocument:** .ods

## Maximale Dateigröße

- **Limit:** 10 MB
- **Empfehlung:** Unter 5 MB für bessere Performance

## Häufigste Ursachen

1. **Excel-Format-Fehler** (Datei ist eigentlich CSV)
2. **Spalten-Fehler** (falsche Anzahl Spalten)
3. **Berechtigungs-Fehler** (Server-Konfiguration)
4. **Memory-Fehler** (große Dateien)
5. **Service-Fehler** (REST-Service nicht verfügbar)

*Dokumentation erstellt am: [Aktuelles Datum]*
*Version: 1.0*
