# Business Data Clear Guide ## Übersicht Die neuen Löschfunktionen ermöglichen es, gespeicherte Business Structure Daten sicher und kontrolliert zu entfernen. Dies ist besonders nützlich wenn: - Daten neu berechnet werden müssen - Fehlerhafte Berechnungen korrigiert werden sollen - Speicherplatz freigegeben werden muss - Tests mit sauberen Daten durchgeführt werden sollen ## Verfügbare Commands ### 1. BusinessStoreOptimized mit --clear Option ```bash php artisan business:store-optimized {month} {year} --clear ``` **Funktionalität:** - Löscht bestehende Daten für den angegebenen Monat/Jahr - Berechnet anschließend neue Daten - Alles in einem einzigen Command-Ausführung **Beispiel:** ```bash # Löscht Oktober 2024 Daten und berechnet sie neu php artisan business:store-optimized 10 2024 --clear ``` ### 2. Separates Clear Command ```bash php artisan business:clear-data {month} {year} [--force] ``` **Funktionalität:** - Löscht nur die Daten, berechnet nichts neu - Standardmäßig mit Sicherheitsabfrage - `--force` Option für automatisierte Skripte **Beispiele:** ```bash # Mit Bestätigung php artisan business:clear-data 10 2024 # Ohne Bestätigung (für Skripte) php artisan business:clear-data 10 2024 --force ``` ## Was wird gelöscht? ### 1. UserBusinessStructure - Die Hauptstruktur für den angegebenen Monat/Jahr - Enthält die hierarchische Benutzerstruktur - Metadata wie completed Status ### 2. UserBusiness Einträge - Alle Business-Daten der Benutzer für den Zeitraum - Provisionsberechnungen - Qualifikationsdaten - Verkaufsvolumen und Punkte ## Sicherheitsfeatures ### Validierung - Monat muss zwischen 1-12 liegen - Jahr muss zwischen 2020 und aktuelles Jahr + 1 liegen - Prüfung auf Existenz der Daten vor Löschung ### Bestätigungen - Standardmäßig Sicherheitsabfrage vor Löschung - Anzeige der zu löschenden Datenmengen - `--force` Option zum Überspringen der Abfrage ### Sichere Löschung - Löschung in korrekter Reihenfolge (Child → Parent) - Transaktionale Sicherheit - Garbage Collection nach Löschung ## Logging & Monitoring ### Detaillierte Ausgaben ``` Found structure ID: 123 - UserBusiness records: 1,234 - Users in structure: 567 - Completed: Yes Deleting 1,234 UserBusiness records... ✓ UserBusiness records deleted Deleting UserBusinessStructure... ✓ UserBusinessStructure deleted ✅ Successfully cleared all business data in 45.67ms ``` ### Memory-Monitoring ``` Memory - Current: 128.5 MB | Peak: 145.2 MB ``` ## Anwendungsszenarien ### 1. Fehlerkorrektur ```bash # Bei fehlerhaften Berechnungen php artisan business:clear-data 10 2024 --force php artisan business:store-optimized 10 2024 ``` ### 2. Neuberechnung mit aktuellen Daten ```bash # Alles in einem Schritt php artisan business:store-optimized 10 2024 --clear ``` ### 3. Automation/Scripts ```bash #!/bin/bash # Monatliche Neuberechnung MONTH=$(date +%m) YEAR=$(date +%Y) echo "Clearing data for $MONTH/$YEAR" php artisan business:clear-data $MONTH $YEAR --force echo "Calculating new data" php artisan business:store-optimized $MONTH $YEAR ``` ### 4. Testing ```bash # Saubere Testumgebung php artisan business:clear-data 1 2024 --force php artisan business:clear-data 2 2024 --force # ... Setup für Tests ``` ## Integration mit Scheduler ```php // In app/Console/Kernel.php // Monatliche Neuberechnung am 5. jeden Monats $schedule->command('business:store-optimized', [ date('m', strtotime('-1 month')), date('Y', strtotime('-1 month')), '--clear' ])->monthlyOn(5, '02:00') ->withoutOverlapping() ->runInBackground(); ``` ## Error Handling ### Häufige Fehler **1. Ungültiger Monat/Jahr:** ``` Invalid month. Must be between 1 and 12. Invalid year. Must be between 2020 and 2025. ``` **2. Keine Daten gefunden:** ``` No stored business structure found for the specified month/year ``` **3. Benutzer-Abbruch:** ``` Operation cancelled by user ``` ### Exception Handling - Vollständige Stack-Traces bei Fehlern - Graceful Rollback bei Datenbankfehlern - Detaillierte Error-Logs für Debugging ## Best Practices ### 1. Backup vor Löschung ```bash # Backup der wichtigen Tabellen mysqldump database user_businesses > backup_$(date +%Y%m%d).sql mysqldump database user_business_structures >> backup_$(date +%Y%m%d).sql ``` ### 2. Stufenweise Löschung bei großen Datenmengen ```bash # Bei sehr großen Strukturen php artisan business:clear-data 1 2024 --force sleep 10 php artisan business:clear-data 2 2024 --force sleep 10 # ... ``` ### 3. Monitoring der Performance ```bash # Mit Zeitmessung time php artisan business:clear-data 10 2024 --force ``` ## Troubleshooting ### Memory Issues - Erhöhe PHP Memory Limit vor Löschung großer Strukturen - Nutze Garbage Collection zwischen Commands ### Performance - Lösche Daten außerhalb der Geschäftszeiten - Nutze `--force` für automatisierte Prozesse - Überwache Datenbank-Performance während Löschung ### Rollback - Verwende Datenbank-Backups für kritische Rollbacks - Teste Löschprozess erst in Staging-Umgebung ## Support Bei Problemen: 1. Prüfe die Log-Ausgaben auf spezifische Fehlermeldungen 2. Verwende `--force` nicht in produktiven Umgebungen ohne Tests 3. Stelle sicher, dass keine anderen Prozesse gleichzeitig auf die Daten zugreifen