mivita/dev/subdomain-optimization-claude-v2
2025-10-20 17:42:08 +02:00
..
src update 20.10.2025 2025-10-20 17:42:08 +02:00
BOOTSTRAP_SOLUTION.md update 20.10.2025 2025-10-20 17:42:08 +02:00
COMPARISON.md update 20.10.2025 2025-10-20 17:42:08 +02:00
DOMAINS_CONFIG.md update 20.10.2025 2025-10-20 17:42:08 +02:00
HOTFIX.md update 20.10.2025 2025-10-20 17:42:08 +02:00
HOTFIX_APPLIED.md update 20.10.2025 2025-10-20 17:42:08 +02:00
IMPLEMENTATION.md update 20.10.2025 2025-10-20 17:42:08 +02:00
IMPLEMENTATION_v2_DOMAINS.md update 20.10.2025 2025-10-20 17:42:08 +02:00
PERFORMANCE_OPTIMIZATION.md update 20.10.2025 2025-10-20 17:42:08 +02:00
README.md update 20.10.2025 2025-10-20 17:42:08 +02:00
SHARED_ROUTES_FIX.md update 20.10.2025 2025-10-20 17:42:08 +02:00
SHARED_ROUTES_FIXED.md update 20.10.2025 2025-10-20 17:42:08 +02:00
TESTING.md update 20.10.2025 2025-10-20 17:42:08 +02:00

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