# Subdomain Optimization - Claude v2 (Lightweight Solution) ## 🎯 Ziel Eine **einfache, funktionierende, leichtgewichtige** Lösung für das Domain- und Subdomain-Handling basierend auf dem ursprünglich funktionierenden `Subdomain.php` Middleware-Ansatz. ## ❌ Probleme der bisherigen Implementierungen ### 1. Aktuelle Version (DomainServiceProvider + DomainResolver) - **Problem**: Zu frühe Initialisierung im Service Provider - **Problem**: Mehrere Sessions werden gestartet - **Problem**: Komplexe Architektur mit DomainContext-Klassen - **Problem**: Session-Timing-Issues ### 2. GPT-5-v3 Version - **Problem**: Zu umfangreich und komplex - **Problem**: Zu starkes Session-Handling - **Problem**: Input/Error werden dauerhaft gespeichert - **Problem**: Session-basierter Warenkorb wird ständig neu initialisiert - **Problem**: Checkout funktioniert nicht mehr ### 3. Ursprüngliche Subdomain.php - ✅ **Funktionierte**, aber war rudimentär - ✅ Einfacher Ansatz - ❌ Fehlende Fehlerbehandlung - ❌ Keine Dokumentation ## ✅ Claude v2 Lösung - Vorteile ### Einfachheit - **Nur 1 Middleware-Datei** (ca. 200 LOC) - **Keine zusätzlichen Service-Klassen** erforderlich - **Keine DomainContext-Objekte** - **Kein frühes Service-Provider-Bootstrapping** ### Funktionalität - ✅ Unterstützt User-Subdomains (`user.mivita.care`) - ✅ Unterstützt Main-Shop (`mivita.shop`) - ✅ Unterstützt Main-Care (`mivita.care`) - ✅ Korrekte Session-Domain-Konfiguration - ✅ Proper URL-Generation für alle Fälle - ✅ Shop-Validierung (aktiv, bezahlt) ### Robustheit - ✅ Asset/API-Request-Filtering - ✅ Graceful Redirects für unbekannte Domains - ✅ Fehlerbehandlung mit HTTP 503 für inaktive Shops - ✅ Route-Parameter-Cleanup ## 🏗️ Architektur ### EarlyDomainParser + Middleware Approach ``` EarlyDomainParser (App\Domain\) ├── Bootstrap-safe domain parsing ├── Request-level caching ├── Config/domains.php integration └── Fallback to environment variables SubdomainResolver Middleware ├── Uses EarlyDomainParser for domain info ├── User Shop Handling ├── Main Shop Handling ├── Main Care Handling ├── CRM/Portal/Checkout Handling └── Context Setup (Session + Config) RouteServiceProvider ├── Uses EarlyDomainParser during bootstrap ├── Domain-aware route loading └── Conditional route loading by domain type ``` ### Execution Flow 1. **Request kommt rein** → Middleware wird ausgeführt 2. **Domain wird geparst** → Typ wird bestimmt 3. **Je nach Typ**: - User-Shop: UserShop laden, Session setzen - Main-Shop: Default-Shop laden - Main-Care: Session clearen 4. **Session-Domain konfigurieren** 5. **App-URL setzen** 6. **Request weiterleiten** ## 📁 Dateien ``` dev/subdomain-optimization-claude-v2/ ├── README.md # Diese Dokumentation ├── IMPLEMENTATION.md # Implementierungs-Anleitung ├── TESTING.md # Test-Szenarien ├── src/Services/EarlyDomainParser.php # Bootstrap-safe Domain Parser ├── src/Http/Middleware/ │ └── SubdomainResolver.php # Optimized Middleware └── src/Providers/ └── RouteServiceProvider.php # Updated Route Provider ``` **Note**: EarlyDomainParser wurde nach `app/Domain/EarlyDomainParser.php` verschoben (Namespace: `App\Domain\EarlyDomainParser`). ## 🔧 Domain-Konfiguration ### Unterstützte Domain-Typen (basierend auf config/domains.php): 1. **User-Shop**: `{username}.mivita.care` - Lädt UserShop basierend auf Subdomain - Session-Domain: `.mivita.care` - Post-Route: `user/` 2. **Main-Shop**: `mivita.shop` - Lädt Default-Shop aus config (`default_user_shop`) - Session-Domain: `.mivita.shop` - Post-Route: `user/` 3. **Main-Care**: `mivita.care` - Keine Shop-Daten - Session-Domain: `.mivita.care` - Session-Cleanup 4. **CRM**: `my.mivita.care` - Session-Domain: `.mivita.care` - Session-Cleanup 5. **Portal**: `in.mivita.care` - Session-Domain: `.mivita.care` - Session-Cleanup 6. **Checkout**: `checkout.mivita.care` - Session-Domain: `.mivita.care` - Behält Shop-Session-Daten für Checkout 7. **Unknown**: Alle anderen - Redirect zu Main-URL aus config ## ⚡ Performance - **Request-Level Caching**: EarlyDomainParser cached Parsing-Ergebnisse pro Request - **Bootstrap-Safe**: Funktioniert vor Service-Container-Initialisierung - **Single Database Query**: Nur bei User-Shops - **Minimal Memory Footprint**: Statische Klassen mit Smart Caching - **Config Integration**: Nutzt Laravel Config mit Fallback zu Env-Variablen ## 🚀 Vorteile gegenüber anderen Versionen | Aspekt | Subdomain.php | DomainServiceProvider | GPT-5-v3 | **Claude v2** | |--------|---------------|----------------------|----------|---------------| | **Komplexität** | Niedrig | Hoch | Sehr Hoch | **Niedrig** | | **Session-Issues** | Keine | Viele | Viele | **Keine** | | **Warenkorb** | ✅ | ❌ | ❌ | **✅** | | **Wartbarkeit** | Niedrig | Mittel | Niedrig | **Hoch** | | **Performance** | Gut | Schlecht | Mittel | **Gut** | | **Dokumentation** | Keine | Wenig | Viel | **Vollständig** | ## 🛠️ Implementation Siehe `IMPLEMENTATION.md` für detaillierte Schritt-für-Schritt Anleitung. ## 🧪 Testing Siehe `TESTING.md` für umfassende Test-Szenarien. ## 📋 Key Features - ✅ **Einfach zu verstehen und zu warten** - ✅ **Funktioniert ohne Session-Probleme** - ✅ **Erhält Warenkorb-Funktionalität** - ✅ **Korrekte URL-Generation** - ✅ **Robuste Fehlerbehandlung** - ✅ **Keine Breaking Changes für bestehenden Code**