# DHL Versandmodul - Optimierter Programmierplan (MVP)

## Bewertung der Optimierungsvorschläge

### ✅ Akzeptierte Optimierungen:

1. **Vereinfachtes Datenbank-Schema**: Eine `dhl_shipments` Tabelle mit `type` Spalte für Outbound/Return
2. **Tracking vereinfacht**: Aktueller Status in Haupttabelle, separate Events-Tabelle für Phase 2
3. **Konsolidierte Service-Klasse**: Ein `DhlApiService` statt drei separate Services
4. **Advanced Features verschoben**: Excel Export, Webhooks, Notifications als Phase 2

### 🔄 Kleine Anpassungen am Vorschlag:

- Jobs bleiben getrennt (CreateShipment, Cancel, ReturnLabel) für bessere Queue-Verwaltung
- Tracking-Job für Scheduler-Integration beibehalten
- Admin-Navigation früher implementieren für bessere UX

---

# Finaler Optimierter Plan - DHL Modul (MVP)

## Phase 1: Fundament und Kernlogik (8 Schritte)

### 1. Setup & Dependencies ✅ AKTUALISIERT

- ~~Composer: `dhl-sdk-api-php/dhl-sdk-bcs` installieren~~ (veraltet, Probleme mit DHL-Login)
- **NEUER ANSATZ**: Eigenständiges Laravel-Paket `packages/acme-laravel-dhl`
- Direkte DHL API-Integration über HTTP-Client (Guzzle)
- Queue-System aktivieren (database driver)

### 2. Konfiguration

- `config/dhl.php` erstellen (API-Credentials, Absenderadressen)
- Environment-Variablen in `.env` definieren

### 3. Datenbank & Model ✅ ABGESCHLOSSEN

- Migration für `dhl_shipments` Tabelle: ✅
  - order_id, dhl_shipment_no, type (outbound/return)
  - related_shipment_id (für Retouren), weight_kg, label_path
  - status, tracking_status, last_tracked_at
  - api_response_data (JSON), created_at, updated_at
- `DhlShipment` Model mit vollständigen Relationships ✅
- `DhlTrackingEvent` Model für detaillierte Events ✅

### 4. Zentraler Service ✅ ABGESCHLOSSEN

- ~~`DhlApiService` als Wrapper um DHL SDK~~ (SDK-Ansatz verworfen)
- **NEUE STRUKTUR**:
  - `DhlClient` - HTTP-Client für API-Kommunikation ✅
  - `ShippingService` - Label-Erstellung und -Verwaltung ✅
  - `TrackingService` - Status-Tracking und -Updates ✅  
  - `ReturnsService` - Retourenlabel-Management ✅
- Vollständige Error-Behandlung und Validation ✅

### 5. Queue Jobs

- `CreateShipmentJob` für asynchrone Label-Erstellung
- `CancelShipmentJob` für Stornierungen
- `CreateReturnLabelJob` für Retourenetiketten

### 6. Controller Foundation

- `DhlShipmentController` mit store/show/cancel Methoden
- Basis-Routen in `routes/web.php`

### 7. Error Handling & Logging ✅ ABGESCHLOSSEN

- Exception-Handling für DHL API-Fehler ✅
  - HTTP-Status spezifische Exceptions
  - Retry-Mechanismus (3x mit 300ms Delay)
  - Timeout-Handling (30s)
- Aussagekräftige Fehlermeldungen ✅
- Validation aller Eingabedaten ✅

### 8. Basic Testing

- Unit-Tests für `DhlApiService`
- Feature-Tests für Controller

---

## Phase 2: Admin-Oberfläche (6 Schritte)

### 9. Navigation & Layout

- Admin-Menüpunkt "DHL Cockpit"
- Bootstrap 5 Layout für DHL-Views

### 10. Cockpit (Zentrale Übersicht)

- `index()` Methode im Controller
- `cockpit.blade.php` View mit DataTable
- Filter: Datum, Status, Sendungstyp

### 11. Einzelaktionen

- "Label herunterladen" Button
- "Sendung stornieren" Button mit Confirmation

### 12. Batch-Operationen

- Mehrere Sendungen auswählen
- Stapeldruck von Labels
- Massen-Stornierung

### 13. Integration in Bestellverwaltung

- DHL-Button in Bestelldetails
- Direkter Zugang zu Sendungsinformationen

### 14. Status-Anzeige & Feedback

- Alert-System für Erfolgsmeldungen/Fehler
- Real-time Status-Updates

---

## Phase 3: Tracking und Retouren (5 Schritte)

### 15. Tracking-System

- `UpdateTrackingStatusJob` für automatische Updates
- Artisan Command `dhl:update-tracking`
- Scheduler-Integration

### 16. Tracking-Anzeige

- Tracking-Status im Cockpit
- Tracking-Details in Sendungsansicht
- Timeline-View für Sendungsverlauf

### 17. Retouren-Management

- Button "Retourenlabel erstellen"
- Retouren-Workflow im Admin
- Verknüpfung Original-Sendung ↔ Retoure

### 18. Customer-Interface (Basic)

- Einfache öffentliche Tracking-Seite
- Tracking-Nummer-Eingabe

### 19. Notifications (Basic)

- E-Mail bei Sendungserstellung
- E-Mail bei wichtigen Status-Änderungen

---

## Phase 4: Finalisierung & Polish (4 Schritte)

### 20. Performance-Optimierung

- Eager Loading für Relationships
- Caching für häufige API-Abfragen
- Database-Indexe

### 21. Comprehensive Testing

- Integration-Tests für DHL SDK
- Browser-Tests für Admin-Interface
- Error-Scenario Tests

### 22. Documentation

- Benutzerhandbuch für Shop-Mitarbeiter
- Code-Dokumentation
- API-Dokumentation

### 23. Production-Ready Features

- Environment-spezifische Konfiguration
- Monitoring & Alerting
- Backup & Recovery-Konzept

---

## Optionale Erweiterungen (Phase 2 des Projekts)

### Advanced Features (später):

- Separate `dhl_tracking_events` Tabelle für detaillierte Historie
- Excel/CSV Export von Sendungsdaten
- Webhook-Integration für automatische Updates
- SMS-Notifications
- Erweiterte Reporting-Features
- Multi-Tenant Support
- API für externe Systeme

---

**Total: 23 konkrete Schritte** für ein vollständig funktionsfähiges DHL Versandmodul

Dieser Plan fokussiert sich auf die Kernfunktionalitäten und liefert schnell ein nutzbares Ergebnis.
