mivita/dev/subdomain-optimization-claude-v2/README.md
2025-10-20 17:42:08 +02:00

169 lines
No EOL
5.6 KiB
Markdown

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