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